java骑士飞棋 小游戏.docVIP

  • 5
  • 0
  • 约1.46万字
  • 约 12页
  • 2016-10-18 发布于贵州
  • 举报
java骑士飞棋 小游戏

突然想起自己刚学java时,老师让写一个java骑士飞行棋,那时候还不知道写,到处问人,勉强写好了,结果全是放在主函数里,今天闲来没事,花了一会,再次写了个骑士飞行棋小游戏,希望对初学者有帮助吧。 代码中,可能用到了初学者还没接触到的东西,不过都不难,注释都有写明,花点时间就能明白的。 一共三个类。 分别: Game.java Map.java Player.java package chou.game.flying; import java.util.Random; import java.util.Scanner; public class Game { private Scanner sc = new Scanner(System.in); private static Map map = new Map(); /** * 静态块,初始化地图 * 加载时就会被执行的内容 * 不理解的,可以在static{}块里打印一句话,看看控制台反映 */ static { map.initMap(); } /** * 游戏开始 */ public void GameStart() { //游戏开始界面 welcome(); //选择角色,生成对象数组 Player [] players = getPlayer(); //游戏开始循环,直到有玩家胜出,结束 boolean isAnyoneWin = false; while (!isAnyoneWin) { //遍历玩家数组,让每个玩家依次进行掷点 for (int i = 0; i players.length; i++) { //对玩家的状态进行判断,是否处于暂停状态 if (players[i].getStatus() == 1) { //如果玩家处于暂停状态,恢复暂停状态并跳过此回合 players[i].setStatus(0); statusSay(players[i]); continue; } //判断玩家,手动掷点 if (i != 0) { letPlayerRoll(players[i]); } //进行掷点 int count = roll(); System.out.println(players[i].getName() + 掷出了 + count + 点); //记录玩家roll点前位置和roll点后位置,判断玩家位置是否到达终点 players[i].setLastPosition(players[i].getPosition()); players[i].setPosition(players[i].getPosition() + count); //判断是否踩中对方 int 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()); } } if (checkAnyoneWin(players[i].getPosition())) { isAnyoneWin = true; //打印游戏结束标语 gameOver(players[i]); continue; }else { //判断将去位置是否有特殊效果,判断效果之后,理论上来说,应该再次进行判断是否有特殊效果 //但我们这里不设这种情出现,因为再来循环的话,代码会更复杂,不利于初学者学习 //在这里,我们只判断再进行一次roll点的判定 String mapBuff = null; mapBuff = getMapFlag(players[i].getPosition()); if (!(=.equals(mapBuff))) {

文档评论(0)

1亿VIP精品文档

相关文档