您的位置:首页 > 其它

神仙道战斗游戏逻辑设计

2012-03-17 14:21 295 查看
一队:
321
654
987
二队:
321
654
987
1、两支队伍,每支队伍最多可以上阵五个武将,每支队伍按九宫格排放,可以随意安排上阵人员的位置。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;       	}   	}   }	}

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: