java骑士飞行棋小游戏.docx
- 文档编号:6295297
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:6
- 大小:16.09KB
java骑士飞行棋小游戏.docx
《java骑士飞行棋小游戏.docx》由会员分享,可在线阅读,更多相关《java骑士飞行棋小游戏.docx(6页珍藏版)》请在冰豆网上搜索。
java骑士飞行棋小游戏
突然想起自己刚学java时,老师让写一个java骑士飞行棋,那时候还不知道写,到处问人,勉强写好了,结果全是放在主函数里,今天闲来没事,花了一会,再次写了个骑士飞行棋小游戏,希望对初学者有帮助吧。
代码中,可能用到了初学者还没接触到的东西,不过都不难,注释都有写明,花点时间就能明白的。
一共三个类。
分别:
Game.java
Map.java
Player.java
packagechou.game.flying;
importjava.util.Random;
importjava.util.Scanner;
publicclassGame{
privateScannersc=newScanner(System.in);
privatestaticMapmap=newMap();
/**
*静态块,初始化地图
*加载时就会被执行的内容
*不理解的,可以在static{}块里打印一句话,看看控制台反映
*/
static{
map.initMap();
}
/**
*游戏开始
*/
publicvoidGameStart(){
//游戏开始界面
welcome();
//选择角色,生成对象数组
Player[]players=getPlayer();
//游戏开始循环,直到有玩家胜出,结束
booleanisAnyoneWin=false;
while(!
isAnyoneWin){
//遍历玩家数组,让每个玩家依次进行掷点
for(inti=0;i //对玩家的状态进行判断,是否处于暂停状态 if(players[i].getStatus()==1){ //如果玩家处于暂停状态,恢复暂停状态并跳过此回合 players[i].setStatus(0); statusSay(players[i]); continue; } //判断玩家,手动掷点 if(i! =0){ letPlayerRoll(players[i]); } //进行掷点 intcount=roll(); System.out.println(players[i].getName()+"掷出了"+count+"点"); //记录玩家roll点前位置和roll点后位置,判断玩家位置是否到达终点 players[i].setLastPosition(players[i].getPosition()); players[i].setPosition(players[i].getPosition()+count); //判断是否踩中对方 intsecondNum=Math.abs(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=Math.abs(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); //改变地图上玩家的位置,先复原,再改变 //初始位置是为0,所以要判断 if(players[i].getLastPosition()! =0){ changMap(players[i].getLastPosition(), players[i].getLastPositionFlag()); } //三目运算符,i==0是一个布尔式,? 疑问,如果是真,返回: 前面的值,如果假,: 后面的值 mapBuff=i==0? "C": "P"; changMap(players[i].getPosition(),mapBuff); } map.showMap(); } } } /** *判断是否踩中对方 *@paramfirst前面玩家 *@paramsecond后面玩家 */ publicbooleanisHit(Playerfirst,Playersecond){ booleantemp=false; if(first.getPosition()==second.getPosition()){ temp=true; } returntemp; } /** *玩家掷点阻塞 *@paramplayer玩家信息 */ publicvoidletPlayerRoll(Playerplayer){ System.out.println("请玩家"+player.getName()+"掷点~"); sc.next(); } /** *检查玩家到达的地图位置是否有特殊效果 *@paramplayer玩家 *@parammapBuff地图标识 *@return执行过buff后的玩家对象 */ publicPlayercheckBuff(Playerplayer,StringmapBuff){if("-".equals(mapBuff)){ System.out.println(player.getName()+"进入黑洞,迷失了方向,后退6步"); System.out.println(player.getName()+": shit! "); player.setPosition(player.getPosition()-6); }elseif("+".equals(mapBuff)){ System.out.println(player.getName()+"进入时空隧道,前进6步"); System.out.println(player.getName()+": luckily! "); player.setPosition(player.getPosition()+6); }elseif("*".equals(mapBuff)){ System.out.println(player.getName()+"进行了空间跳跃~再来一次"); System.out.println(player.getName()+": seemefly! "); player.setStatus(0); }elseif("^".equals(mapBuff)){ System.out.println(player.getName()+"抛锚了,暂停一次"); System.out.println(player.getName()+": whatisthefuck! "); player.setStatus (1); } returnplayer; } /** *改变地图上玩家的位置 *@paramposition位置 *@paramflag地图形状 */ publicvoidchangMap(intposition,Stringflag){ if(position<31){ map.map[0][position-1]=flag; }elseif(position>30&&position<36){ map.map[position-30][29]=flag; }elseif(position>35&&position<66){ map.map[6][position-35]=flag; }elseif(position>65&&position<71){ map.map[position-59][0]=flag; }elseif(position>70&&position<101){ map.map[12][position-71]=flag; } } /** *暂停言语 *@paramplayer被暂停的玩家 */ publicvoidstatusSay(Playerplayer){ System.out.println(player.getName()+"暂停中..........."); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 骑士 飞行 小游戏
![提示](https://static.bdocx.com/images/bang_tan.gif)