一道口试题--设计炸船互动游戏

闲聊 闲聊 1166 人阅读 | 0 人回复

<
游戏划定规矩

游戏分为甲乙单方两人。游戏划定规矩以下

  • 游戏单方各具有一个 10*10 的地图中布置战舰举办初初化散布。规划完成后,玩家只能
    看到本人战舰,看没有到对圆战舰。
  • 战舰有三种外形, 每一个玩家别离具有每一个模型的一条战舰。三个模型别离为:
145723bmbnwjjjgrz7ksjj.jpg

三种战舰能够自在扭转。
例:甲为红色,已为蓝色,初初规划能够以下:
乙圆地图(战舰只对乙圆可睹)
145723hpy37ry3zsrkiq47.jpg

甲圆地图(战舰只对甲圆可睹)
145723xi22vpvsxs4ghszj.jpg


  • 游戏开端,甲乙两人轮番选择对圆坐标举办炸弹盲投,假如炸弹击中对圆战舰,则标识表记标帜
    击中,假如出有击中,标识表记标帜 miss。假如一个战舰的一切地位皆被击中,该战舰标识表记标帜位沉
    出。
  • 战舰局部淹没者为失利圆,游戏完毕。
请求


  • 设想游戏数据构造,流程和相关工具 Class. 无需设想 UI 界里。
  • 形貌怎样启动游戏,初初化游戏,举办游戏,和游戏完毕。
  • 形貌怎样对该游戏测试
附减请求


  • 假如船只要多种没有划定规矩外形,怎样改良现有体系?
    例如引进新型战舰模型:
    145724gyyl3z8tln0x727h.png

  • 假如单方正在游戏中各有一次挪动一只战舰坐标的机会,怎样增加该功用?
以下是我本人的一些解题思绪,仅供参考:

1.相关工具(包含代码正文)

经由过程阐发游戏设想需供,界说游戏界里为横背 X 轴坐标,纵背 Y 轴,
差别战舰外形均是以多个 xy 轴坐标上的面假定为 node 工具组成,
操纵享元形式,界说 node 工具,而差别的战舰均是以 node 工具基
于组开形式组成,通一个 ship 中的一切 node 基于单背链表数据构造
构成,ship 中只需求存储该战舰 ship 的 firstNode 便可(链表的查询
速率最劣,便于查询 node 并做炮弹击中等逻辑断定时对 node 的遍
历查询),此中 firstNode 为战舰的左上足第一个 node;ship 的初初
化是基于工场形式完成,01,02,03 别离对应 a\b\c 三类战舰;
战舰相关工具及寄义

  1. public class Node {
  2. /**
  3. * 每一个节面的颜⾊, --假如被轰炸以后,那节面颜⾊便是灰⾊
  4. */
  5. private NodeColor nodeColor;
  6. private int x;
  7. private int y;
  8. private Node preNode;
  9. private Node nextNode;
  10. public NodeColor getNodeColor() {
  11. return nodeColor;
  12. }
  13. public void setNodeColor(NodeColor nodeColor) {
  14. this.nodeColor = nodeColor;
  15. }public int getX() {
  16. return x;
  17. }
  18. public void setX(int x) {
  19. this.x = x;
  20. }
  21. public int getY() {
  22. return y;
  23. }
  24. public void setY(int y) {
  25. this.y = y;
  26. }
  27. public Node getPreNode() {
  28. return preNode;
  29. }
  30. public void setPreNode(Node preNode) {
  31. this.preNode = preNode;
  32. }
  33. public Node getNextNode() {
  34. return nextNode;
  35. }
  36. public void setNextNode(Node nextNode) {this.nextNode = nextNode;
  37. }
  38. public boolean changeColor(NodeColor color){
  39. this.nodeColor = color;
  40. return true;
  41. } }
复造代码
[code]NodeColor 列举范例用于标识 node 的差别色彩,当 node 被击中,则修正当前 node 的色彩--如置灰nodeColor 以下:public boolean changeColor(NodeColor color){this.nodeColor = color;return true;}经由过程工场类创立战舰,工场类的代码以下:public class ShipFactory {public static Map allMap = new ConcurrentHashMap(3);static {/*** 假造地图-编号 0-9 ,⽽实践 UI 中是 1-10*/int[][] shipNodeMap4Red = new int[10][10];//白⽅地图int[][] shipNodeMap4Blue = new int[10][10];//蓝⽅地图allMap.put(NodeColor.RED,shipNodeMap4Red);allMap.put(NodeColor.BLUE,shipNodeMap4Blue);}public static Ship getInstance(String shipType,NodeColor color,int x,int y){if (0 <span class="token operator">
1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,按照目前互联网开放的原则,我们将在不通知作者的情况下,转载文章;如果原文明确注明“禁止转载”,我们一定不会转载。如果我们转载的文章不符合作者的版权声明或者作者不想让我们转载您的文章的话,请发帖留言提供原创证明,我们将积极配合您!
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何损失或损害承担责任。
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并自负版权等法律责任。
回复

使用道具 举报

 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则