java骑士飞行棋.doc_第1页
java骑士飞行棋.doc_第2页
java骑士飞行棋.doc_第3页
java骑士飞行棋.doc_第4页
java骑士飞行棋.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

骑士飞行棋骑士飞行棋简介:骑士飞行棋又名别生气,是一款跟传统的飞行棋一模一样的小游戏。游戏中每家有4个棋兵,谁4个兵最先到达目的地谁就赢(每一家的目的地各不相同,用颜色区别,大本营是什么颜色目的就是什么颜色)。当没有活动的兵时,每家可以连续扔3次,直到扔出6点释放出一个兵。之后每轮只能扔一次,棋兵前进的格数由扔出的点数决定,扔几点就走几步。无论是前进或者后退,当棋兵最后落脚的地方踩到对方棋兵时,就把对方棋兵轰回老家,当踩到地雷就后退6格,当踩到“”时,就进入幸运轮盘,里面有8种运气:前进、后退、交换位置、转移、暂停一轮、奖励一次、设置地雷、轰炸(将对方棋兵炸退6步)。一、需求分析:1、定义一个类MAP,生成游戏中的地图,地图中包括幸运轮盘“”的位置,地雷位置,暂停位置,时候隧道位置。同时构造成员方法creatMap生成对战图,设置相关的成员变量;构造成员方法getGraph返回地图当前位置的对应图片。定义构造方法showLine1输出地图的奇数行(第1、3行),定义showLine2输出地图的偶数行(第2行);定义showRLine输出地图的右竖列;定义showLLine输出地图的左数列;最后定义showMap方法显示对战图。2、定义游戏类Game,定义相关的成员变量,包括对战图map,对战中玩家1的当前位置playerPos1,对战中玩家2的当前位置playerPos2,走或停标识设置goAndStop,对战角色playerName。构造成员方法init()调用生成地图方法creatMap;开始游戏方法start(),同时构造成员方法setRole设置对战角色。构造对战玩法的方法play。其中方法play中调用掷骰子成员方法throwShifter,并返回掷出的骰子数目;构造成员方法getCurPos计算玩家此次移动后的当前位置,返回移动后的位置,构造方法judge 显示对战结果。3、定义类StartGame启动游戏。4、本程序是两人对战玩法。5、程序执行的命令:1)启动游戏 2)创建游戏类Game 3)开始游戏 4)定义测试类。二、概要设计: 1、定义启动游戏类StartGame:/启动游戏class StartGame public static void main(String args) Game game = new Game(); /创建游戏类 game.start(); /开始游戏 2、创建游戏类Game:public class Game Map map; /地图 int playerPos1; /对战中玩家1的当前位置 int playerPos2; /对战中玩家2的当前位置 String goAndStop = new String2; /走或停标识设置String playerName = new String2; /对战角色public void init()/调用createMap()生成地图public void start()/两人对战开始游戏public void setRole(int no, int role)/设置对战角色public void play()/两人对战玩法public int throwShifter(int no)/掷骰子并返回掷出的骰子数目public int getCurPos(int no, int position, int step)/计算玩家此次移动后的当前位置并返回移动后的位置 public void judge()/显示对战结果3、定义Map类:class Map int map = new int100; /对战地图 int luckyTurn = 6, 23, 40, 55, 69, 83; /幸运轮盘 int landMine = 5, 13, 17, 33, 38, 50, 64, 80, 94; /地雷位置 int pause = 9, 27, 60, 93; /暂停 int timeTunnel = 20, 25, 45, 63, 72, 88, 90; /时空隧道public void createMap()/生成地图public String getGraph(int i, int index, int playerPos1, int playerPos2)/显示地图关卡对应的图形并返回地图当前位置的对应图片public void showLine1(int start, int end, int playerPos1, int playerPos2)/输出地图的奇数行(第1、3行)public void showLine2(int start, int end, int playerPos1, int playerPos2)/输出地图的偶数行(第2行)public void showRLine(int start, int end, int playerPos1, int playerPos2)/输出地图的右竖列public void showLLine(int start, int end, int playerPos1, int playerPos2) /输出地图的左竖列public void showMap(int playerPos1, int playerPos2)/显示对战地图4、定义测试类Test:class Test public static void main(String args) Map map = new Map(); map.createMap(); map.showMap(0, 0); 三、程序代码: import java.util.*;/Map类public class Game Map map; /地图 int playerPos1; /对战中玩家1的当前位置 int playerPos2; /对战中玩家2的当前位置 String goAndStop = new String2; /走或停标识设置 String playerName = new String2; /对战角色 / 初始化游戏的一局 public void init() map = new Map(); map.createMap(); /生成地图 playerPos1 = 0; /设置玩家1起始位置 playerPos2 = 0; /设置玩家2起始位置 goAndStop0 = on; /记录玩家1下一次走或停 goAndStop1 = on; /设置玩家2下一次走或停 /开始游戏 public void start() /初始化 init(); System.out.println(); System.out.println(/ /); System.out.println(/ /); System.out.println(/ 骑 士 飞 行 棋 /); System.out.println(/ /); System.out.println(/ /); System.out.println(nnn); System.out.println(n两 人 对 战); System.out.println(n请选择角色: 1. 戴高乐 2. 艾森豪威尔 3. 麦克阿瑟 4. 巴顿); Scanner input = new Scanner(System.in); System.out.print(请玩家1选择角色: ); int role1 = input.nextInt(); int role2; do System.out.print(请玩家2选择角色: ); role2 = input.nextInt(); /双方选择角色代号 while (role2 = role1); /不允许角色重复 setRole(1, role1); /设置玩家1代表的角色 setRole(2, role2); /设置玩家2代表的角色 play(); /开始两人对战 /*设置对战角色 *no 玩家次序 1:玩家1 2:玩家2 *role 角色代号 */ public void setRole(int no, int role) switch (role) case 1: playerNameno - 1 = 戴高乐; break; case 2: playerNameno - 1 = 艾森豪威尔; break; case 3: playerNameno - 1 = 麦克阿瑟; break; case 4: playerNameno - 1 = 巴顿; break; default: break; / 两人对战玩法 public void play() System.out.println(nnnn);System.out.print(nn*n); System.out.print( Game Start n);System.out.print(*nn); /显示对战双方士兵样式 System.out.println(_ + playerName0 + 的士兵:); System.out.println(_ + playerName1 + 的士兵: n); /显示对战地图 System.out.println(n图例: + 暂停 幸运轮盘 地雷 时空隧道 普通n); map.showMap(playerPos1, playerPos2); /游戏开始 int step; /存储骰子数目 while (playerPos1 99 & playerPos2 = 99) return 99; Scanner input = new Scanner(System.in); switch (map.mapposition) /根据地图中的关卡代号进行判断 case 0: /走到普通格 if (no = 1 & playerPos2 = position) /玩家1与对方骑兵相遇 playerPos2 = 0; /踩到对方,对方回到起点 System.out.println(:-D 哈哈哈哈.踩到了!); if (no = 2 & playerPos1 = position) /玩家2与对方骑兵相遇 playerPos1 = 0; /踩到对方,对方回到起点 System.out.println(:-D 哈哈哈哈.踩到了!); break; case 1: /幸运轮盘 System.out.println(n欢迎进入幸运轮盘); System.out.println( 请选择一种运气:); System.out.println( 1. 交换位置 2. 轰炸); System.out.println(=n); int choice = input.nextInt(); int temp; switch (choice) case 1: if (no = 1) temp = position; position = playerPos2; playerPos2 = temp; else if (no = 2) temp = position; position = playerPos1; playerPos1 = temp; break; case 2: if (no = 1 & playerPos2 6) playerPos2 = 0; else playerPos2 = playerPos2 - 6; if (no = 2 & playerPos2 _ 要停战一局了。); break; case 4: /时空隧道 position = position + 10; /进入时空隧道,加走10步 System.out.println(|-P + 进入时空隧道, 真爽!); break; /返回此次掷骰子后玩家的位置坐标 if (position 99) return 99; else return position; /显示对战结果 public void judge() if (playerPos1 playerPos2) System.out.println(n恭喜 + playerName0 + 将军! 您获胜了!); else System.out.println(n恭喜 + playerName1 + 将军! 您获胜了!); /package s1java.xmal1;class Map int map = new int100; /对战地图 int luckyTurn = 6, 23, 40, 55, 69, 83; /幸运轮盘 int landMine = 5, 13, 17, 33, 38, 50, 64, 80, 94; /地雷位置 int pause = 9, 27, 60, 93; /暂停 int timeTunnel = 20, 25, 45, 63, 72, 88, 90; /时空隧道 /*生成地图: * 关卡代号为:1:幸运轮盘 2:地雷 3: 暂停 4:时空隧道 0:普通 */ public void createMap() int i = 0; /在对战地图上设置幸运轮盘 for (i = 0; i luckyTurn.length; i+) mapluckyTurni = 1; /在对战地图上设置地雷 for (i = 0; i landMine.length; i+) maplandMinei = 2; /在对战地图上设置暂停 for (i = 0; i pause.length; i+) mappausei = 3; /在对战地图上设置时空隧道 for (i = 0; i timeTunnel.length; i+) maptimeTunneli = 4; /* 显示地图关卡对应的图形 * i 地图当前位置的关卡代号 * index 当前地图位置编号 * playerPos1 玩家1的当前位置 * playerPos2 玩家2的当前位置 * return 地图当前位置的对应图片 */ public String getGraph(int i, int index, int playerPos1, int playerPos2) String graph = ; if (index = playerPos1 & index = playerPos2) graph = ; else if (index = playerPos1) /graph = ; graph = ; else if (index = playerPos2) /graph = ; graph = ; else switch (i) case 1: /幸运轮盘 graph = ; break; case 2: /地雷 graph = ; break; case 3: /暂停 graph = ; break; case 4: /时光隧道 graph = ; break; default: graph = ; break; return graph; /* * 输出地图的奇数行(第1、3行) * start 输出的起始点在地图上的位置 * end 输出的结束点在地图上的位置 * playerPos1 玩家1的当前位置 * playerPos2 玩家2的当前位置 */ public void showLine1(int start, int end, int playerPos1, int playerPos2) for (int i = start; i = start; i-) System.out.print(getGraph(mapi, i, playerPos1, playerPos2); /* * 输出地图的右竖列 * start 输出的起始点在地图上的位置 * end 输出的结束点在地图上的位置 * playerPos1 玩家1的当前位置 * playerPos2 玩家2的当前位置 */ public void showRLine(int start, int end, int playerPos1, int playerPos2) for (int i = start; i 0; j-) /输出29个空格 System.out.print( ); System.out.print(getGraph(mapi, i, playerPos1, playerPos2); System.out.println(); /* * 输出地图的左竖列 * start 输出的起始点在地图上的位置 * end 输出的结束点在地图上的位置 * playerPos1 玩家1的当前位置 * playerPos2 玩家2的当前位置 */ public void showLLine(int start, int end, int playerPos1, int playerPos2) for (int i = start; i end; i+) System.out.println(getGraph(mapi, i, playerPos1, playerPos2); /* * 显示对战地图 * playerPos1 玩家1的当前位置 * playerPos2 玩家2的当前位置 */ public void showMap(int playerPos1, int playerPos2) showLine1(0, 31, playerPos1, playerPos2); /显示地图第一行 System.out.println(); /换行 showRLine(31, 35, playerPos1, playerPos2); /显示地图右竖行 showLine2(35, 66, playerPos1, playerPos2); /显示地图第二行 System.out.println(); /换行 showLLine(66, 69, playerPos1, play

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论