代码中,可能用到了初学者还没接触到的东西,不过都不难,注释都有写明,花点时间就能明白的。一共三个类。分别:;;;lassGame{ privateScannersc=newScanner(); privatestaticMapmap=newMap(); /** *静态块,初始化地图 *加载时就会被执行的内容 *不理解的,可以在static{}块里打印一句话,看看控制台反映 */ static{ (); } /** *游戏开始 */ publicvoidGameStart(){ //游戏开始界面 e(); //选择角色,生成对象数组 Player[]players=getPlayer(); //游戏开始循环,直到有玩家胜出,结束 booleanisAnyoneWin=false; while(!isAnyoneWin){ //遍历玩家数组,让每个玩家依次进行掷点 for(inti=0;i<;i++){ //对玩家的状态进行判断,是否处于暂停状态 if(players[i].getStatus()==1){ //如果玩家处于暂停状态,恢复暂停状态并跳过此回合 players[i].setStatus(0); statusSay(players[i]); continue; } //判断玩家,手动掷点 if(i!=0){ letPlayerRoll(players[i]); } //进行掷点 intcount=roll(); (players[i].getName()+"掷出了"+count+"点"); //记录玩家roll点前位置和roll点后位置,判断玩家位置是否到达终点 players[i].setLastPosition(players[i].getPosition()); players[i].setPosition(players[i].getPosition()+count); //判断是否踩中对方 intsecondNum=(1-i); if(isHit(players[i],players[secondNum])){ players[secondNum].setPosition(0); if(players[i].getLastPosition()!=0){ changMap(players[i].getLastPosition(),players[i].getLastPositionFlag()); } } if(checkAnyoneWin(players[i].getPosition())){ isAnyoneWin=true; //打印游戏结束标语 gameOver(players[i]); continue; }else{ //判断将去位置是否有特殊效果,判断效果之后,理论上来说,应该再次进行判断是否有特殊效果//但我们这里不设这种情出现,因为再来循环的话,代码会更复杂,不利于初学者学习//在这里,我们只判断再进行一次roll点的判定 StringmapBuff=null; mapBuff=getMapFlag(players[i].getPosition()); if(!("=".equals(mapBuff))){ players[i]=checkBuff(players[i],mapBuff); }elseif("*".equals(mapBuff)){ count=roll(); players[i].setPosition(players[i].getPosition()+count); } //判断是否踩中对方 secondNum=(1-i); if(isHit(players[i],players[secondNum])){ players[secondNum].setPosition(0); if(players[i].getLastPosition()!=0){ changMap(players[i].getLastPosition(),players[i].getLastPositionFlag()); } } //记录玩家去的位置的形状,地图复原使用 mapBuff=getMapFlag(players[i].getPosition()); players[i].setLastPositionFlag(mapBuff); //改变地图上玩家的位置,先复原,再改变
java骑士飞行棋 小游戏 来自淘豆网m.daumloan.com转载请标明出处.