一队:
3 | 2 | 1 |
6 | 5 | 4 |
9 | 8 | 7 |
3 | 2 | 1 |
6 | 5 | 4 |
9 | 8 | 7 |
1、两支队伍,每支队伍最多可以上阵五个武将,每支队伍按九宫格排放,可以随意安排上阵人员的位置。
2、打斗过程:例:A、B两支队伍,出手顺序:A1、B1、A2、B2、A3、B3……。直至其中一支队伍没有武将。
3、类介绍:武将类(名你,属性:HP,攻击力,防御力)。战斗过程类。辅助类等。
4、在控制台打印出输出结果,如(A1的**攻击B1的**,B1损失*点体力[B1死亡]……。A队胜利)。
5、公式:攻击力-防御力+(1到20).(如果攻击力-防御力为负值时公式变为:0+(1到20)).(打印)
2、打斗过程:例:A、B两支队伍,出手顺序:A1、B1、A2、B2、A3、B3……。直至其中一支队伍没有武将。
3、类介绍:武将类(名你,属性:HP,攻击力,防御力)。战斗过程类。辅助类等。
4、在控制台打印出输出结果,如(A1的**攻击B1的**,B1损失*点体力[B1死亡]……。A队胜利)。
5、公式:攻击力-防御力+(1到20).(如果攻击力-防御力为负值时公式变为:0+(1到20)).(打印)
分析:直到一方死亡,需要用到while循环,攻方和防守方一次一替的交换,直到一方没有人了胜利!
代码如下:
package moni;
import manager.LookForManager;
public class ZhanDou {
public static void main(String[] args) {
Sx[][] a = new Sx[3][3];
Sx[][] b = new Sx[3][3];
LookForManager lookForManager=new LookForManager();
//位置摆放
//设置武将在阵中的位置
a[0][0]=lookForManager.rwshuxing(1);//设置武将属性
a[0][1]=lookForManager.rwshuxing(2);
a[1][1]=lookForManager.rwshuxing(3);
a[1][0]=lookForManager.rwshuxing(4);
a[2][1]=lookForManager.rwshuxing(5);
//设置小怪
b[0][1]=lookForManager.gwshuxing(1);
b[0][2]=lookForManager.gwshuxing(2);
b[1][0]=lookForManager.gwshuxing(3);
b[1][2]=lookForManager.gwshuxing(4);
b[2][2]=lookForManager.gwshuxing(5);
lookForManager.zhao(a, b);//打架方法
}
}
package moni;
public class Sx { private int gongji; private int fangyu; private int hp; private String name; private boolean ishander=true; public int getGongji() { return gongji; } public void setGongji(int gongji) { this.gongji = gongji; } public int getFangyu() { return fangyu; } public void setFangyu(int fangyu) { this.fangyu = fangyu; } public int getHp() { return hp; } public void setHp(int hp) { this.hp = hp; } public String getName() { return name; } public void setName(String name) { this.name = name; } public boolean isIshander() { return ishander; } public void setIshander(boolean ishander) { this.ishander = ishander; } }
package manager; import java.util.Random; import moni.Sx; public class LookForManager { //武将属性设置 public Sx rwshuxing(int ms){ Random r=new Random(); //武将选中位置,此时带有属性值 Sx sx=new Sx();//需要优化 sx.setFangyu(r.nextInt(10)); sx.setGongji(r.nextInt(10)); sx.setHp(r.nextInt(100)); sx.setName("A"+ms); return sx; } //怪物属性设置 public Sx gwshuxing(int gs){ Random r=new Random(); //武将选中位置,此时带有属性值 Sx sx=new Sx();//需要优化 sx.setFangyu(r.nextInt(10)); sx.setGongji(r.nextInt(10)); sx.setHp(r.nextInt(100)); sx.setName("B"+gs); return sx; } //输出互相打斗的信息 public void daji(Sx cs,Sx bd){ int xie=0; Random r=new Random(); if(cs!=null&&bd!=null&&cs.getGongji()-bd.getFangyu()>0){ xie=cs.getGongji()-bd.getFangyu()+r.nextInt(20); bd.setHp(bd.getHp()-xie); System.out.println(cs.getName()+"的"+cs.getGongji()+"攻击"+bd.getName()+"的"+bd.getFangyu()+"防御,"+bd.getName()+"损失"+xie+"点体力"); cs.setIshander(false); }else{//(如果攻击力-防御力为负值时公式变为:0+(1到20)). xie=0+r.nextInt(20); if(bd!=null&&cs!=null){ bd.setHp(bd.getHp()-xie); System.out.println(cs.getName()+"的"+cs.getGongji()+"攻击"+bd.getName()+"的"+bd.getFangyu()+"防御,"+bd.getName()+"损失"+xie+"点体力"); cs.setIshander(false); } } } //主体部分 public void zhao(Sx a[][],Sx b[][]){ boolean t=true;//回合初始化武将的属性(所有武将未出手) boolean team=true;//true为A出手,false为B出手 while(t){//循环找到A谁先出手 //全部出手过了,全部设置成未出手 boolean ishandl=true; for (int j2 = 0; j2 < 3; j2++) { for (int k = 0; k < 3; k++) { if(a[j2][k]!=null&&a[j2][k].isIshander()!=true){ ishandl=false; } if(b[j2][k]!=null&&b[j2][k].isIshander()!=true){ ishandl=false; } } } if(ishandl){//所有人初始化未出手 for (int j2 = 0; j2 < 3; j2++) { for (int k = 0; k < 3; k++) { if(a[j2][k]!=null){ a[j2][k].setIshander(true); } if(b[j2][k]!=null){ b[j2][k].setIshander(true); } } } } int ii=0;//存储行变量 Sx bd=null;//被打人 Sx cs=null;//打手 if(team){//true为A出手,false为B出手 for (int tempi = 2; tempi >= 0; tempi--) { for (int tempj = 2; tempj >= 0; tempj--) { if(a[tempi][tempj]!=null&&a[tempi][tempj].isIshander()&&a[tempi][tempj].getHp()>0){ cs=a[tempi][tempj]; ii=tempi; } } } if(cs==null){ //找出已出手但是还有血的人 System.out.println("A队输"); break; } for (int tempi = ii; tempi < 3&&tempi > -1;) { for (int tempj = 2; tempj < 3&&tempj > -1; tempj--) { if(b[tempi][tempj]!=null&&b[tempi][tempj].getHp()>0){ bd=b[tempi][tempj]; } } if(null!=bd){ break; } if(ii!=0){ tempi--; } else{ tempi++; } if(tempi==-1){ tempi=2; } } if(bd==null){ System.out.println("B队输"); break; } }else{ //b队找a队 for (int tempi = 2; tempi >= 0; tempi--) { for (int tempj = 2; tempj >= 0; tempj--) { if(b[tempi][tempj]!=null&&b[tempi][tempj].isIshander()&&b[tempi][tempj].getHp()>0){ cs=b[tempi][tempj]; ii=tempi; } } } if(cs==null){ System.out.println("B队输"); break; } for (int tempi = ii; tempi < 3&&tempi > -1;) { for (int tempj = 2; tempj < 3&&tempj > -1; tempj--) { if(a[tempi][tempj]!=null&&a[tempi][tempj].getHp()>0){ bd=a[tempi][tempj]; } } if(null!=bd){ break; } if(ii!=0){ tempi--; } else{ tempi++; } if(tempi==-1){ tempi=2; } } if(bd==null){ System.out.println("A队输"); break; } } /* * 攻击 */ this.daji(cs, bd); if(team){ team=false; }else{ team=true; } } } }