代码结构:

相关源码:

武器类:

属性:武器,攻击力,子弹数量。

方法:给属性赋值(set属性()方法)

获取属性值(get属性()方法)

package 红警大战简单版;

public class Gun {//武器类
private String name;//武器的名字
private int attack;//攻击力
private int num;//子弹数量
public Gun(String name,int attack,int num) {
super();
this.name = name;
this.attack = attack;
this.num = num;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setAttack(int attack) {
this.attack = attack;
}
public int getAttack() {
return attack;
}
public void setNum(int num) {
this.num = num;
}
public int getNum() {
return num;
} }

士兵类:

属性:(姓名,兵种,血量)

方法:

给属性赋值(set属性()方法)

获取属性值(get属性()方法)

package 红警大战简单版;

public class Soldiers {//士兵类
private String name;//姓名
private String arms;//兵种
private int blood;//血量 public Soldiers(String name,String arms,int blood) {
super();
this.name = name;
this.arms = arms;
this.blood = blood;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setArms(String arms) {
this.arms = arms;
}
public String getArms() {
return arms;
}
public void setBlood(int blood) {
this.blood = blood;
}
public int getBlood() {
return blood;
}
}

 计算类:

方法:创建士兵:getsSo(int select,int i)

创建士兵武器:getGun(int select,int i)

攻击处理:attack(士兵1,武器1,士兵2,武器2):攻击方子弹减少,被攻击方血量减少

双方战况统计:show(士兵1,武器1,士兵2,武器2):显示双方战况

战况报警:decide(士兵1,武器1,士兵2,武器2):当血量小于等于0时,游戏结束。

游戏结束:gameover()

游戏开始:play()

package 红警大战简单版;
import java.util.Scanner;
public class Calc {//计算类
//创建士兵
public static Soldiers getsSo(int select,int i) {
switch(select) {
case 1:
return new Soldiers("小兵"+(i+1)+"号","手枪手",30); case 2:
return new Soldiers("小兵"+(i+1)+"号","机枪兵",40);
case 3:
return new Soldiers("小兵"+(i+1)+"号","钢炮兵",50);
}
return null;
}
//创建士兵武器
public static Gun getGun(int select,int i) {
switch(select) {
case 1:
return new Gun("手枪"+(i+1)+"号",10,30);
case 2:
return new Gun("机枪"+(i+1)+"号",20,20);
case 3:
return new Gun("钢炮"+(i+1)+"号",30,10);
}
return null;
}
//攻击处理
public static void attack(Soldiers s1,Gun g1,Soldiers s2,Gun g2) {
//攻击方,攻击方火力,被攻击方,被攻击方火力
s2.setBlood(s2.getBlood()-g1.getAttack());
g1.setNum(g1.getNum()-g1.getAttack());
}
//双方状态显示处理
public static void show(Soldiers s1,Gun g1,Soldiers s2,Gun g2) {
System.out.println("我方士兵:"+s1.getName()+" 兵种:"+s1.getArms()+
" 武器:"+g1.getName()+" 生命值:"+s1.getBlood()+
" 弹药:"+g1.getNum());
System.out.println(" 敌方士兵:"+s2.getName()+" 兵种:"+s2.getArms()+
" 武器:"+g2.getName()+" 生命值:"+s2.getBlood()+
" 弹药:"+g2.getNum());
}
//游戏结束
public static void GameOver() {
System.out.println("游戏结束!");
Scanner sc = new Scanner(System.in);
int s = sc.nextInt();
}
//补充弹药
public static void AddGun(Soldiers s,Gun g) {
g.setNum(g.getNum()+10);
s.setBlood(s.getBlood()-8);
System.out.println("加弹成功(弹药+10|血量-8)");
}
//报警:血量不足,弹药不足
public static boolean decide(Soldiers s1,Gun g1,Soldiers s2,Gun g2) {
if(s1.getBlood()<=0) {
System.out.println("我方血量不足!");
GameOver();
}
if(s2.getBlood()<=0) {
System.out.println("敌方血量不足");
GameOver();
} if(g1.getNum()<=0) {
System.out.println("我方弹药不足!");
return true;
}
if(g2.getNum()<=0) {
System.out.println("敌方弹药不足!");
return true;
}
return true;
} //游戏开始
public static void play(Soldiers s1,Gun g1,Soldiers s2,Gun g2) {
Scanner sc = new Scanner(System.in);
System.out.println("派出的双方士兵初始化状态");
Calc.show(s1,g1,s2,g2);
System.out.println("游戏开始,对战中。。。。。。"); for(int i=0;i<16;i++) {//最多进行16回合
while(decide(s1,g1,s2,g2)) {//判断双方的弹药及血量的情况
/*for(int i=0;i<16;i++){//最多进行16回合*/
System.out.println("*****************");
System.out.println("****1.我方进攻*****");
System.out.println("****2.敌方进攻*****");
System.out.println("****3.休战调整*****");
System.out.println("*****************"); int a = sc.nextInt();
if(a == 1) {//我方进攻
System.out.println("第"+(i+1)+"回合状态");
Calc.attack(s1, g1, s2, g2);
Calc.show(s1, g1, s2, g2);
break; }else if(a == 2) {//敌方进攻
System.out.println("第"+(i+1)+"回合状态");
Calc.attack(s2, g2, s1, g1);
Calc.show(s1, g1, s2, g2);
break; }else {
System.out.println("第"+(i+1)+"回合状态");
Calc.show(s1, g1, s2, g2);
break;
}
/*}*/ }
}
System.out.println("本轮对战结束!"); GameOver(); }
}

【注意:在for()语句和while()结合使用的过程中,for()语句是为了控制对战次数不超过16次,而while()语句是为了保证对战双方还有血量。

没有血量时游戏结束。while()语句嵌套在for()语句里面。为了保证for()语句起到控制作用,要在每一个作战回合结束后break,跳出while()循环。使i+1。】

【扩展:虽然break是放在if语句里面的,但是break用于跳出循环或者switch语句,不用于跳出if】

 测试类:

属性(部队数量,我方军队士兵编号,敌方军队士兵编号)

说明:首先初始化部队数量;然后建立双方军队的存储数组;然后对军队的士兵和武器进行初始化;

选择作战时的我方士兵和敌方士兵;游戏开始();

package 红警大战简单版;
import java.util.Scanner; public class Test { public static void main(String[] args) {
// TODO 自动生成的方法存根
Scanner sc = new Scanner(System.in);
int armNums; //部队数量
int nums; //我方军队序号
int numsd; //敌方军队序号 //设置部队数量
System.out.println("Game Start!");
System.out.println("请输入你需要的部队数量!");
armNums = sc.nextInt(); //建立我方军队存储数组
Gun[] gun1 = new Gun[armNums];
Soldiers[] soldiers1 = new Soldiers[armNums]; //建立敌方军队存储数组
Gun[] gun2 = new Gun[armNums];
Soldiers[] soldiers2 = new Soldiers[armNums]; //配置我方军队
for(int i=0;i<armNums;i++) {
System.out.println("部队序号"+(i+1));
System.out.println("请输入我方兵种:");
System.out.println("1.手枪兵");
System.out.println("2.机枪兵");
System.out.println("3.钢炮兵");
int selectSoMe = sc.nextInt();
soldiers1[i] = Calc.getsSo(selectSoMe, i); System.out.println("请输入我方武器: ");
System.out.println("1.手枪");
System.out.println("2.机枪");
System.out.println("3.钢炮");
int selectGunMe = sc.nextInt();
gun1[i] = Calc.getGun(selectGunMe, i); }
//配置敌方军队
for(int i=0;i<armNums;i++) {
System.out.println("部队序号"+(i+1));
System.out.println("请输入敌方兵种:");
System.out.println("1.手枪兵");
System.out.println("2.机枪兵");
System.out.println("3.钢炮兵");
int selectSoOther = sc.nextInt();
soldiers2[i] = Calc.getsSo(selectSoOther, i); System.out.println("请输入敌方武器: ");
System.out.println("1.手枪");
System.out.println("2.机枪");
System.out.println("3.钢炮");
int selectGunOther = sc.nextInt();
gun2[i] = Calc.getGun(selectGunOther, i); } //派出某一士兵对敌方士兵进行作战
System.out.println("请输入我方军队派出的士兵序号");
nums = sc.nextInt()-1;
System.out.println("请输入要攻击敌军的士兵序列号");
numsd = sc.nextInt()-1;
Calc.play(soldiers1[nums], gun1[nums], soldiers2[numsd], gun2[numsd]);
} }

  

 

 

 

 

红警大战JAVA简单版的更多相关文章

  1. Java实现简单版SVM

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

  2. PAT(B) 1089 狼人杀-简单版(Java)逻辑推理

    题目链接:1089 狼人杀-简单版 (20 point(s)) 题目描述 以下文字摘自<灵机一动·好玩的数学>:"狼人杀"游戏分为狼人.好人两大阵营.在一局" ...

  3. JavaMail简单版实验测试

    前言: 最近由于实现web商城的自动发送邮件功能的需求,故涉猎的邮箱协议的内部原理.现将简单版的Java Mail实例做个代码展示,并附上其中可能出现的bug贴出,方便感兴趣的读者进行测试! 1.载入 ...

  4. Spring Security4实例(Java config 版) —— Remember-Me

    本文源码请看这里 相关文章: Spring Security4实例(Java config版)--ajax登录,自定义验证 Spring Security提供了两种remember-me的实现,一种是 ...

  5. TOJ 3973 Maze Again && TOJ 3128 简单版贪吃蛇

    TOJ3973传送门:http://acm.tzc.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=3973 时间限制(普通 ...

  6. JAVA简单选择排序算法原理及实现

    简单选择排序:(选出最小值,放在第一位,然后第一位向后推移,如此循环)第一位与后面每一个逐个比较,每次都使最小的置顶,第一位向后推进(即刚选定的第一位是最小值,不再参与比较,比较次数减1) 复杂度: ...

  7. java简单学生成绩管理系统

    题目要求: 一. 数据结构要求:(5 分) 1.定义 ScoreInformation 类,其中包括七个私有变量(stunumber, name, mathematicsscore, englishi ...

  8. 小米抢购(简单版v0.1)-登录并验证抢购权限,以及获取真实抢购地址

    小米(简单版)-登录并验证抢购权限,以及获取真实抢购地址! 并不是复制到浏览器就行了的   还得传递所需要的参数 这里只是前部分  后面的自己发挥了 { "stime": 1389 ...

  9. 【转载】关于在vs2013中配置opengl红宝书第八版环境

     本文为转载 原文地址 http://blog.csdn.net/qq821869798/article/details/45247241 本人刚开始学习opengl,买了一本opengl红宝书第八版 ...

随机推荐

  1. pyhton从开始到光棍的day11

    纪念我这个开始学python的光棍天,光棍天依旧是函数,这次的函数有个小高级,比昨天的low函数稍微高级点,就是在使用函数中是可以赋值的,比如索引一个值什么的.函数还可以当做参数进行传递,把这个函数名 ...

  2. Linux:Day18(下) Bind9

    子域授权:每个域的名称服务器,都是通过其上级名称服务器在解析库中进行授权. 类似根域授权tld: .com IN NS ns1.com. .com IN NS ns1.com. ns1.com IN ...

  3. iOS 关于监听手机截图,UIView生成UIImage, UIImage裁剪与压缩的总结

    一.  关于监听手机截图 1. 背景: 发现商品的售价页总是被人转发截图,为了方便用户添加截图分享的小功能 首先要注册用户截屏操作的通知 - (void)viewDidLoad { [super vi ...

  4. 使用栈实现队列(2)(Java)

    class MyQueue { private Stack s1; private Stack s2; public MyQueue(int size) { this.s1 = new Stack(s ...

  5. flutter 自定义主题切换

    1. 定义local_srorage.dart文件 使用Flutter第三方插件shared_preferences实现存储键值对信息 相关shared_preferences插件可参考: flutt ...

  6. BaseEntity

    @MappedSuperclasspublic class BaseEntity { @Id @GenericGenerator(name="idGenerator", strat ...

  7. ansible命令

    ansible 默认提供了很多模块来供我们使用.在 Linux 中,我们可以通过 ansible-doc -l 命令查看到当前 ansible 都支持哪些模块,通过 ansible-doc  -s   ...

  8. centos7服务器配置nuxt部署环境

    一.安装node(默认安装在根目录下) 1.首先安装wget yum install -y wget 2.下载最新nodejs安装包 wget https://nodejs.org/dist/v10. ...

  9. CF997C Sky Full of Stars

    CF997C Sky Full of Stars 计数好题 在Ta的博客查看 容斥式子:发现只要每个钦定方案的贡献都考虑到再配上容斥系数就是对的 O(n^2)->O(n) 把麻烦的i=0,j=0 ...

  10. Java基础 -- 嵌套类(非静态嵌套类、静态嵌套类)

    可以将一个类的定义放在另一个类的内部定义,这样的类就被称为嵌套类,包含嵌套类的类被称为外部类(outer class),也可以叫做封闭类. 嵌套类可以分为两种: 静态嵌套类(Static Nested ...