也可以把这四个类直接复制下去放在一个包下面

父类

package Cs1_6;

public abstract class Persion {
public abstract void Attack(Persion p); public abstract boolean Shan();
public abstract boolean Baoji(); public Persion() {
} public Persion(int hp, int atk) {
this.hp = hp;
this.atk = atk;
} private int hp; public int getHp() {
return hp;
} public void setHp(int hp) {
this.hp = hp;
} public int getAtk() {
return atk;
} public void setAtk(int atk) {
this.atk = atk;
} private int atk; }

匪徒类继承人类

package Cs1_6;

public class Fei extends Persion {
public static int shantemp=0;
public Fei() {
} public Fei(int hp, int atk) {
super(hp, atk);
} @Override
public String toString() {
return String.format("匪徒的生命为%d,攻击为%d",this.getHp(),this.getAtk());
} @Override
public void Attack(Persion p) {
if (p instanceof Police){
Police pp = (Police)p;
if (Baoji()){
System.out.println("匪徒达成暴击");
pp.setHp(0);
return;
}
if(Shan()){
if(++shantemp==3){
System.out.println("获得闪避之神称号");
System.out.println("每次收到伤害可抵挡5点");
}
System.out.println("警察已闪避");
System.out.println("闪避成功获得10点回复效果");
pp.setHp(pp.getHp()+5);
return;
}
if(shantemp>=3){
pp.setHp(pp.getHp()-pp.getAtk()+5);
System.out.println("闪避之神抵挡5点伤害");
return;
}
pp.setHp(pp.getHp()-pp.getAtk());
} } @Override
public boolean Shan() {
if (Math.random()>0.7) return true;
return false;
} @Override
public boolean Baoji() {
if (Math.random()>=0.9) return true;
return false;
}
}

警察类继承人类

package Cs1_6;

public class Police extends Persion {
public static int shantemp=0; public Police() {
} public Police(int hp, int atk) {
super(hp, atk);
}
public String toString() {
return String.format("警察的生命为%d,攻击为%d",this.getHp(),this.getAtk());
}
@Override
public void Attack(Persion p) {
if (p instanceof Fei){
Fei ff = (Fei)p;
if (Baoji()){
System.out.println("警察达成暴击");
ff.setHp(0);
return;
}
if(Shan()) {
if(++shantemp==3){
System.out.println("获得闪避之神称号");
System.out.println("每次收到伤害可抵挡5点");
}
System.out.println("匪徒已闪避");
System.out.println("闪避成功获得10点回复效果");
ff.setHp(ff.getHp()+10);
return;
}
if(shantemp>=3){
ff.setHp(ff.getHp()-ff.getAtk()+5);
System.out.println("闪避之神抵挡5点伤害");
return;
}
ff.setHp(ff.getHp()-ff.getAtk());
}
}
public boolean Shan() {
if (Math.random()>0.7) return true;
return false;
}
public boolean Baoji() {
if (Math.random()>=0.9) return true;
return false;
} }

开始游戏的类

package Cs1_6;

public class Game {
public static void Da(Persion p1,Persion f1){
Police p;
Fei f;
if (p1 instanceof Police){
p=(Police) p1;
f=(Fei) f1;
}
else{
p=(Police) f1;
f=(Fei) p1;
}
System.out.println("警察开了枪");
p.Attack(f);
System.out.println(f.toString());
while (p.getHp()>0 && f.getHp()>0){ System.out.println("匪徒开了枪");
f.Attack(p);
System.out.println(p.toString());
System.out.println();
if(p.getHp()<=0){
break;
}
System.out.println("警察开了枪");
p.Attack(f);
System.out.println(f.toString());
}}
public static void IsLive(Persion p1,Persion f1){
Police p;
Fei f;
if (p1 instanceof Police){
p=(Police) p1;
f=(Fei) f1;
}
else{
p=(Police) f1;
f=(Fei) p1;
}
if (p.getHp()<=0){
System.out.println("警察阵亡");
}
else if(f.getHp()<=0){
System.out.println("匪徒阵亡");
}
}
public static void main(String[] args) {
//创建
Police p = new Police(100,(int)(Math.random()*20+1));
Fei f = new Fei(100,(int)(Math.random()*20+1));
//谁先打
// boolean b = Math.random()>=0.5;
//警察先打
if(Math.random()>=0.5){
Da(p,f);
// System.out.println("警察开了枪");
// p.Attack(f);
// System.out.println(f.toString());
// while (p.getHp()>0 && f.getHp()>0){
//
//
//
// System.out.println("匪徒开了枪");
// f.Attack(p);
// System.out.println(p.toString());
// System.out.println();
// if(p.getHp()<=0){
// break;
// }
// System.out.println("警察开了枪");
// p.Attack(f);
// System.out.println(f.toString());
// }
}
//匪徒先打
else{
Da(f,p);
// System.out.println("匪徒开了枪");
// f.Attack(p);
// System.out.println(p.toString());
// while (p.getHp()>0 && f.getHp()>0){
//
// System.out.println("警察开了枪");
// p.Attack(f);
// System.out.println(f.toString());
// System.out.println();
// if(f.getHp()<=0){
// break;
// }
// System.out.println("匪徒开了枪");
// f.Attack(p);
// System.out.println(p.toString());
// }
}
// while (p.getHp()>0 && f.getHp()>0){
//
// System.out.println("警察开了枪");
// p.Attack(f);
// System.out.println(f.toString());
// if(f.getHp()<=0){
// break;
// }
// System.out.println("匪徒开了枪");
// f.Attack(p);
// System.out.println(p.toString());
// }
//是否活着
IsLive(p,f);
// if (p.getHp()<=0){
// System.out.println("警察阵亡");
// }
// else if(f.getHp()<=0){
// System.out.println("匪徒阵亡");
// }
} }

Java实现控制台版CS的更多相关文章

  1. 基于TCP协议的聊天室控制台版

    我之前写过一篇博客,主要是基于TCP协议实现的聊天室swing版,在此再写一个基于TCP协议实现的聊天室控制台版,便于学习和比较. package 聊天室console版.utils; import ...

  2. c++实现通讯录管理系统(控制台版)

    c++实现通讯录管理系统(控制台版) 此项目适合c++初学者,针对c++基础知识,涉及到变量.结构体定义使用.数组定义使用.指针定义使用等. 运行之后的结果如下: 代码: #include <i ...

  3. Atitit.excel导出 功能解决方案 php java C#.net版总集合.doc

    Atitit.excel导出 功能解决方案 php java C#.net版总集合.docx 1.1. Excel的保存格式office2003 office2007/2010格式1 1.2. 类库选 ...

  4. 《Thinking In Java第四版》拾遗

    <Thinking In Java第四版>拾遗 转自我的github(http://katsurakkkk.github.io/2016/05/Thinking-In-Java%E7%AC ...

  5. Java实现简单版SVM

    Java实现简单版SVM 近期的图像分类工作要用到latent svm,为了更加深入了解svm,自己动手实现一个简单版的.         之所以说是简单版,由于没实用到拉格朗日,对偶,核函数等等.而 ...

  6. 工厂方法模式(Java与Kotlin版)

    前文推送 设计模式 简单工厂模式(Java与Kotlin版) Kotlin基础知识 Kotlin入门第一课:从对比Java开始 Kotlin入门第二课:集合操作 Kotlin入门第三课:数据类型 初次 ...

  7. 抽象工厂模式(Java与Kotlin版)

    前文推送 设计模式 简单工厂模式(Java与Kotlin版) 工厂方法模式(Java与Kotlin版) Kotlin基础知识 Kotlin入门第一课:从对比Java开始 Kotlin入门第二课:集合操 ...

  8. 建造者模式(Java与Kotlin版)

    前文推送 设计模式 简单工厂模式(Java与Kotlin版) 工厂方法模式(Java与Kotlin版) 抽象工厂模式(Java与Kotlin版) Kotlin基础知识 Kotlin入门第一课:从对比J ...

  9. 《Effective Java(中文第二版)》【PDF】下载

    <Effective Java(中文第二版)>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382186 Java(中文第二版)& ...

随机推荐

  1. 自动扫雷 python

    自动扫雷一般分为两种,一种是读取内存数据,而另一种是通过分析图片获得数据,并通过模拟鼠标操作,这里我用的是第二种方式. // 2018.8.10更新 代码已上传至GitHub https://gith ...

  2. navicat 远程链接Mysql问题

    mysql服务器需要配置 给远程访问配置权限:注意自己的用户名和密码 使用select host, user, password from mysql.user;查看是否配置好相应的用户和密码 nav ...

  3. tomcat 8.5 及其 9.0 response写cookie 设置damain为 [.test.com] 出错 An invalid domain [.test.com] was specified for this cookie

    抛出异常: java.lang.IllegalArgumentException: An invalid domain [.test.com] was specified for this cooki ...

  4. 【比较】遗传算法GA和遗传编程GP有什么不同?

    遗传算法GA 本质上有一个固定的长度,这意味着所产生的功能有限的复杂性 通常会产生无效状态,因此需要以非破坏性方式处理这些状态 通常依赖于运算符优先级(例如,在我们的例子中,乘法发生在减法之前),这可 ...

  5. 一文搞懂volatile的可见性原理

    说volatile之前,了解JMM(Java内存模型)有助于我们理解和描述volatile关键字.JMM是Java虚拟机所定义的一种抽象规范,用来屏蔽不同硬件和操作系统的内存访问差异,让Java程序在 ...

  6. nginx配置之代理功能

    nginx代理功能 至少需要两台主机: 代理机配置----如下: yum安装的/etc/nginx/nginx.conf location / { #服务机的ip端口 proxy_pass http: ...

  7. 2017-ACM南宁网络赛

    In this problem, we will define a graph called star graph, and the question is to find the minimum d ...

  8. 最小比率树 poj2728

    以下内容均为转载 http://www.cnblogs.com/ftae/p/6947497.html poj2728(最小比率生成树)   poj2728 题意 给出 n 个点的坐标和它的高度,求一 ...

  9. uniapp打包发版到linux服务器步骤----H5端

    最近在写uni-app项目,项目打包部署到服务器后,搞了好一会一直打开是空白页,原来自己有几个地方疏忽了,现把步骤整理一下: 第1步:编辑配置 mainifest.json 文件 tip:运行的基础路 ...

  10. queue.Queue()

    一.构造方法 Queue是构造方法,函数签名是Queue(maxsize=0) ,其中maxsize设置队列的大小. 二.实例方法 Queue.qsize(): 返回queue的近似值.注意:qsiz ...