一队:
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;
}
}
}
}