⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 comai.java

📁 java开发的手机游戏 泡泡堂 可以在手机上运行
💻 JAVA
字号:
package game;import java.util.Random;/** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2005</p> * <p>Company: </p> * @author not attributable * @version 1.0 */public class ComAI{	Role role;	Random m_Random;	int nWay;	int nSetp;	int nTargetRow =-1, nTargetCol =-1 ;		final static int GOEST_RANDOM = 0;	final static int GOEST_ATTACK = 1;	public static int GOEST_STATE = GOEST_RANDOM;		ComAI(){										//if(role.RoleType==Role.COMPUTTER_2){					m_Random = new Random(222);						nSetp = 0;					nWay = -1;			//}				}		public void getData(Role r,Map m,GameHandle h){//获得数据并作处反应					if(role.RoleType==Role.COMPUTTER){//电脑1,即求救者智能									if(!GameManage.bIsRescue){return;}					followAction(r,m);//跟随动作										return;			}else if(role.RoleType==Role.COMPUTTER_2){//电脑II,即幽灵的智能													if(role.nCurrentMsg >= Role.MSG_DEAD){return;}										checkTarget(r,m,h);//检测目标人物										switch(GOEST_STATE){							case GOEST_RANDOM:{//随机动作									randomAction();							}break;							case GOEST_ATTACK:{//进攻动作									attackAction(r,m,h);							}break;										}																									return;			}						}		public void followAction(Role r,Map m){									if(role.touchPoint[1].x+role.velocity < r.touchPoint[0].x){//右边跟踪					role.nCurrentMsg = Role.MSG_RIGHT_MOVE;						}else if (role.touchPoint[0].x-role.velocity > r.touchPoint[1].x){//左边跟踪					role.nCurrentMsg = Role.MSG_LEFT_MOVE;			}else if (role.touchPoint[2].y+role.velocity < r.touchPoint[0].y){//下边跟踪					role.nCurrentMsg = Role.MSG_DOWN_MOVE;			}else if (role.touchPoint[0].y-role.velocity > r.touchPoint[2].y){//上边跟踪					role.nCurrentMsg = Role.MSG_UP_MOVE;			}else{					role.nCurrentMsg = -1;//无动作			}		}		public void checkTarget(Role r, Map m,GameHandle h){									int gRow = h.getPutPaopRow(role,m);			int gCol = h.getPutPaopCol(role,m);			int rRow = h.getPutPaopRow(r,m);			int rCol = h.getPutPaopCol(r,m);			boolean  bCanAttack = true;			//发现出击			if(gRow == rRow){//同行									if(gCol>=rCol){//目标在左边							for(int i=gCol;i>=rCol;i--){																		if(m.byBuild[gRow][i]>0)											{bCanAttack = false; break;}							}					}else{//目标在右边							for(int i=gCol;i<=rCol;i++){									System.out.println("b="+m.byBuild[gRow][i]);									if(m.byBuild[gRow][i]>0)											{bCanAttack = false; break;}							}											}					if(bCanAttack){//无阻拦							GOEST_STATE	= GOEST_ATTACK;							nTargetCol = h.getPutPaopCol(r,m);							nTargetRow = -1;							role.velocity = 5;					}			}else	if(gCol == rCol){//同列					if(gRow>=rRow){//目标在左边							for(int i=gRow;i>=rRow;i--){									if(m.byBuild[i][gCol]>0)											{bCanAttack = false; break;}							}					}else{//目标在右边							for(int i=gRow;i<=rRow;i++){									if(m.byBuild[i][gCol]>0)											{bCanAttack = false; break;}							}											}					if(bCanAttack){//无阻拦							GOEST_STATE	= GOEST_ATTACK;							nTargetRow = h.getPutPaopRow(r,m);														nTargetCol = -1;							role.velocity = 5;					}				}				}		public void attackAction(Role r,Map m,GameHandle h){						if(nTargetCol>0){					if(h.getPutPaopCol(role,m)>h.getPutPaopCol(r,m)){							role.nCurrentMsg = Role.MSG_LEFT_MOVE;					}else if(h.getPutPaopCol(role,m)<h.getPutPaopCol(r,m)){							role.nCurrentMsg = Role.MSG_RIGHT_MOVE;					}else	if(h.getPutPaopCol(role,m)==h.getPutPaopCol(r,m)){						GOEST_STATE  =GOEST_RANDOM;						role.velocity = 1;					}			}else if(nTargetRow>0){					if(h.getPutPaopRow(role,m)>h.getPutPaopRow(r,m)){							role.nCurrentMsg = Role.MSG_UP_MOVE;					}else if(h.getPutPaopRow(role,m)<h.getPutPaopRow(r,m)){							role.nCurrentMsg = Role.MSG_DOWN_MOVE;					}else if(h.getPutPaopRow(role,m)==h.getPutPaopRow(r,m)){							GOEST_STATE  =GOEST_RANDOM;							role.velocity = 1;					}			}				}		public void randomAction(){						//随机移动							if(nSetp<=0){					nWay = (int)Math.abs(m_Random.nextInt()%4);//随机方向0~3							nSetp =(int)Math.abs(m_Random.nextInt()%8)+1;//随机步数1~9			}												switch(nWay){					case 0:{							role.nCurrentMsg = Role.MSG_UP_MOVE;														nSetp--;							}break;												case 1:{							role.nCurrentMsg = Role.MSG_LEFT_MOVE;								nSetp--;					}break;												case 2:{							role.nCurrentMsg = Role.MSG_DOWN_MOVE;							nSetp--;					}break;												case 3:{							role.nCurrentMsg = Role.MSG_RIGHT_MOVE;										nSetp--;				}break;			}				}//end fun	public void scout(){			}	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -