java骑士飞行棋小游戏.doc

上传人:苏美尔 文档编号:6178209 上传时间:2020-09-18 格式:DOC 页数:12 大小:54KB
返回 下载 相关 举报
java骑士飞行棋小游戏.doc_第1页
第1页 / 共12页
java骑士飞行棋小游戏.doc_第2页
第2页 / 共12页
java骑士飞行棋小游戏.doc_第3页
第3页 / 共12页
java骑士飞行棋小游戏.doc_第4页
第4页 / 共12页
java骑士飞行棋小游戏.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《java骑士飞行棋小游戏.doc》由会员分享,可在线阅读,更多相关《java骑士飞行棋小游戏.doc(12页珍藏版)》请在三一文库上搜索。

1、突然想起自己刚学java时,老师让写一个java骑士飞行棋,那时候还不知道写,到处问人,勉强写好了,结果全是放在主函数里,今天闲来没事,花了一会,再次写了个骑士飞行棋小游戏,希望对初学者有帮助吧。代码中,可能用到了初学者还没接触到的东西,不过都不难,注释都有写明,花点时间就能明白的。一共三个类。分别:Game.java Map.java Player.javapackage chou.game.flying;import java.util.Random;import java.util.Scanner;public class Game private Scanner sc = new Sc

2、anner(System.in);private static Map map = new Map();/* * 静态块,初始化地图 * 加载时就会被执行的内容 * 不理解的,可以在static块里打印一句话,看看控制台反映 */static map.initMap();/* * 游戏开始 */public void GameStart() /游戏开始界面welcome();/选择角色,生成对象数组Player players = getPlayer();/游戏开始循环,直到有玩家胜出,结束boolean isAnyoneWin = false;while (!isAnyoneWin) /遍历

3、玩家数组,让每个玩家依次进行掷点for (int i = 0; i players.length; i+) /对玩家的状态进行判断,是否处于暂停状态if (playersi.getStatus() = 1) /如果玩家处于暂停状态,恢复暂停状态并跳过此回合playersi.setStatus(0);statusSay(playersi);continue;/判断玩家,手动掷点if (i != 0) letPlayerRoll(playersi);/进行掷点int count = roll();System.out.println(playersi.getName() + 掷出了 + count

4、 + 点);/记录玩家roll点前位置和roll点后位置,判断玩家位置是否到达终点playersi.setLastPosition(playersi.getPosition();playersi.setPosition(playersi.getPosition() + count);/判断是否踩中对方int secondNum = Math.abs(1 - i);if (isHit(playersi, playerssecondNum) playerssecondNum.setPosition(0);if (playersi.getLastPosition() != 0) changMap(p

5、layersi.getLastPosition(), playersi.getLastPositionFlag();if (checkAnyoneWin(playersi.getPosition() isAnyoneWin = true;/打印游戏结束标语gameOver(playersi);continue;else /判断将去位置是否有特殊效果,判断效果之后,理论上来说,应该再次进行判断是否有特殊效果/但我们这里不设这种情出现,因为再来循环的话,代码会更复杂,不利于初学者学习/在这里,我们只判断再进行一次roll点的判定String mapBuff = null;mapBuff = get

6、MapFlag(playersi.getPosition();if (!(=.equals(mapBuff) playersi = checkBuff(playersi, mapBuff);else if (*.equals(mapBuff) count = roll();playersi.setPosition(playersi.getPosition() + count);/判断是否踩中对方secondNum = Math.abs(1 - i);if (isHit(playersi, playerssecondNum) playerssecondNum.setPosition(0);if

7、(playersi.getLastPosition() != 0) changMap(playersi.getLastPosition(), playersi.getLastPositionFlag();/记录玩家去的位置的形状,地图复原使用mapBuff = getMapFlag(playersi.getPosition();playersi.setLastPositionFlag(mapBuff);/改变地图上玩家的位置,先复原,再改变/初始位置是为0,所以要判断if (playersi.getLastPosition() != 0) changMap(playersi.getLastPo

8、sition(), playersi.getLastPositionFlag();/三目运算符,i = 0 是一个布尔式,? 疑问,如果是真,返回:前面的值,如果假,:后面的值mapBuff = i = 0 ? C : P;changMap(playersi.getPosition(), mapBuff);map.showMap();/* * 判断是否踩中对方 * param first 前面玩家 * param second 后面玩家 */public boolean isHit(Player first,Player second) boolean temp = false;if (fir

9、st.getPosition() = second.getPosition() temp = true;return temp;/* * 玩家掷点阻塞 * param player 玩家信息 */public void letPlayerRoll(Player player) System.out.println(请玩家 + player.getName() + 掷点);sc.next();/* * 检查玩家到达的地图位置是否有特殊效果 * param player 玩家 * param mapBuff 地图标识 * return 执行过buff后的玩家对象 */public Player c

10、heckBuff(Player player,String mapBuff) if (-.equals(mapBuff) System.out.println(player.getName()+ 进入黑洞,迷失了方向,后退6步);System.out.println(player.getName() + :shit!);player.setPosition(player.getPosition() - 6);else if (+.equals(mapBuff) System.out.println(player.getName() + 进入时空隧道,前进6步);System.out.print

11、ln(player.getName() + :luckily!);player.setPosition(player.getPosition() + 6);else if (*.equals(mapBuff) System.out.println(player.getName() + 进行了空间跳跃再来一次);System.out.println(player.getName() + :see me fly!);player.setStatus(0);else if (.equals(mapBuff) System.out.println(player.getName() + 抛锚了,暂停一次

12、);System.out.println(player.getName() + :what is the fuck!);player.setStatus(1);return player;/* * 改变地图上玩家的位置 * param position 位置 * param flag 地图形状 */public void changMap(int position, String flag) if (position 30 & position 35 & position 65 & position 70 & position 101) map.map12position - 71 = fla

13、g;/* * 暂停言语 * param player 被暂停的玩家 */public void statusSay(Player player) System.out.println(player.getName() + 暂停中.);/* * 获得地图指定位置的形状 * param position 位置 * return */public String getMapFlag(int position) String flag = =;if (position 30 & position 35 & position 65 & position 70 & position = 100 ? tru

14、e : false;return temp;/* * 掷点 * return int,count 点数 */public int roll () int count = 0;/产生一个6以内的随机数Random random = new Random();count = random.nextInt(6) + 1;return count;/* * 选择角色 * return Player ,players 玩家对象数组 */public Player getPlayer()boolean flag = true;/创建对象数组,长度为2,用来接收玩家对象和电脑Player players =

15、 new Player2;Player player = new Player();player.setNum(1);Player computer = new Player();while (flag) String userChoose = sc.next();/获取输入内容,判断是否 1,2,3,根据选择给玩家对象赋名if (!userChoose.matches(1-3) System.out.println( 选择角色失败,请重新选择); else switch (Integer.parseInt(userChoose) case 1:player.setName(YaGaMi);b

16、reak;case 2:player.setName(Killer);break;case 3:player.setName(Chou);break;default:break; System.out.println( 你选择了 + player.getName() + 作为你的游戏角色);System.out.println( 电脑选择了 Fujiwara no Mokou 作为游戏角色 );computer.setName(Fujiwara no Mokou);/数组第1位是玩家,第二位是电脑players1 = player;players0 = computer;flag = fals

17、e;return players;public void welcome() System.out.println(*);System.out.println(*欢迎来到飞行棋小游戏*);System.out.println(*);System.out.println();System.out.println(游戏说明:);System.out.println(地图上随机出现 * - + 四种效果);System.out.println(分别代码:再掷1次,后退6步,暂停1次,前进6步);System.out.println();System.out.println( 请选择你的喜欢的游戏角色

18、编号:);System.out.println(1.YaGaMi);System.out.println(2.Killer);System.out.println(3.Chou);public static void main(String args) new Game().GameStart();package chou.game.flying;public class Map public String map = new String1330;public void initMap() for (int i = 0; i map.length; i+) for (int j = 0; j

19、 mapi.length; j+) if(i = 0 | i = 6 | i = 12 | (i 6 & j = 0)mapij = =;else mapij = ;map06 = +;map08 = -;map015 = *;map020 = -;map029 = ;map329 = *;map67 = ;map616 = +;map620 = -;map628 = ;map100 = *;map127 = -;map128 = ;map1215 = -;map1220 = ;map1223 = -;map1228 = -;public void showMap()for (int i =

20、0; i map.length; i+) for (int j = 0; j mapi.length; j+) if(i = 6)System.out.print(mapi29-j + );else System.out.print(mapij + );System.out.println();public static void main(String args) package chou.game.flying;public class Player private String name;/玩家状态private int status;/玩家当前位置private int positio

21、n;/玩家上把位置private int lastPosition;/玩家上把位置的地图形状private String lastPositionFlag;/玩家编号private int num;public int getNum() return num;public void setNum(int num) this.num = num;public String getName() return name;public void setName(String name) this.name = name;public int getStatus() return status;publ

22、ic void setStatus(int status) this.status = status;public int getPosition() return position;public void setPosition(int position) this.position = position;public int getLastPosition() return lastPosition;public void setLastPosition(int lastPosition) this.lastPosition = lastPosition;public String getLastPositionFlag() return lastPositionFlag;public void setLastPositionFlag(String lastPositionFlag) this.lastPositionFlag = lastPositionFlag;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1