NIIT第十一天

上午

多维数组

1.数组是引用数据类型

排序

1.冒泡排序法

2.类冒泡排序法

下午

飞行棋游戏

1.项目策划

2.项目规则确认

3.项目模块确认

晚上

1.飞行棋游戏,项目框架的编写

笔记

1.数组也是引用数据类型

2.冒泡排序法:嵌套for循环,外层循环控制冒泡的轮数,内层循环负责将本轮循环的最小值调换到末尾

3.在equals()方法使用上,应该将不会发生空值写在前面,因为在a.equals(b)时,如果a是空值,将不可能调用equals()方法,导致空指针报错,而b为空则不会

NIIT第十一天、第十二天、第十三天

飞行棋游戏

《游戏设置》

(1)游戏素材

普通格子:【∷】幸运轮盘:【◎】地雷:【※】暂停:【▉】时空隧道:【〓】

玩家角色:【野、辅、力、魔、控】说明:用于在地图上显示玩家的位置图标

(2)游戏规则

1.玩家初始位置在第一个位置处,如:玩家第一次投掷骰子点数为1,则玩家进入到第二个格子(在地图中的索引是1)

2.如果玩家投掷骰子,在最终行进到某位置后,与其他玩家重叠,则其他玩家被踩回到初始位置,即第一位置处(最终位置:是指玩家在经历:点数、幸运轮盘、地雷等后,最后所在的位置)

3.玩家赢的标准:玩家移动后最终落在终点,则玩家赢,游戏结束;如果玩家落在了地图外,则倒退超出终点的格数

4.地图图标说明,以下均为玩家最后停留的位置为判定依据:

【◎】:幸运轮盘,玩法:会额外得到一次投掷骰子的机会,如果点数是1、2、3,则该玩家与此刻最前面的玩家互换位置,如果点数是4、5、6,则玩家再投掷一次骰子,根据点数前进一定位置

【※】:地雷,玩法:玩家会被炸晕,倒退6格,但是玩家不能被炸出地图外

【▉】:坐牢,玩法:玩家会被暂停投掷筛子一轮

【〓】:时空隧道,玩法:玩家会被传送到下一个时空隧道的位置,如果玩家所在时空隧道是最后一个,则玩家什么都不做,停留在该时空隧道

5.其他待定的规则

(3)游戏模块设置

1.游戏会分为两个循环模块:游戏菜单循环模块+轮回投掷点数模块

2.在游戏菜单循环模块中,主要会包含:菜单的显示方法、有些基本的菜单项显示(游戏说明、关于游戏)、游戏退出方法、开始游戏的入口,在本模块中还会确定玩家的数量,即是几人局,因为在存储玩家时,使用的是数组,而数组的长度是不可变的,因此,这个只需要确认一次,玩家之后再来一局的话,就不需要再重新选择了(强制不可再选择)

3.在开始游戏模块中个,主要负责游戏的所有逻辑处理,这里分为主方法、地图打印方法、游戏逻辑判断方法、其他辅助的方法;主方法负责每一轮的控制,地图打印负责实时的显示玩家在地图上的位置,游戏逻辑判断是本游戏的关键,负责玩家所行进格数的判断,及玩家在落点处会经历幸运轮盘、坐牢等玩法,其他辅助方法是为了避免可能在多处存在相同的代码,如:玩家在地图的位置,可以独立写成方法,用于实时的计算

(4)游戏目前的BUG

到目前游戏代码的编写结束和简单的测试,发现以下的缺陷或程序设计的错误:

1.地图的打印或玩家的位置的实时确定:在本程序中,在玩家掷完点数后,不是立即加到玩家的位置信息上,而是尽力虚拟的位置信息,待其他(坐牢、时空隧道等)信息都确认后,再将最后的真是位置加到玩家的位置信息上;经检测,这样会导致玩家“自己踩自己”的情况发生,如:玩家行进6格,结果踩到地雷被炸回6格,因为是采用虚拟的位置,这时系统会判断6格前有玩家的存在,因此发生自己踩自己的情况

解决办法:不采用虚拟的位置,每次掷点结束后即加到玩家的位置信息上,然后进行该位置的判断,继续进行玩家位置信息的加减

2.在玩家获得幸运转盘,并且和最前面的玩家交换时,发生了传递参数的出错,即最前面的玩家被拉到当前玩家的位置,但是由于参数传递错误,当前的玩家行进的格数并不是两者之间的差距,因此导致当前的玩家并没有行进到最前玩家的位置,待修复

3.游戏开始,玩家在选择角色的时候,应该动态的减去被选择的角色,即游戏不允许存在相同的角色

4.特定索引被玩家占用后的恢复问题,这个问题需要修复打印地图的一个缺陷,即不应该在地图信息中存入玩家的信息,而应该在打印地图时,动态的替代

5.比赛结束后,对于比赛的评价功能暂未编写

6.其他暂未发现的BUG

(5)游戏源码

http://www.kuaipan.cn/file/id_68788844752798025.htm

(6)评价

做项目,学的不是写代码,而是这个项目该如何实现,和在项目中能或学到了什么!

最新文章

  1. DB2数据库参数建议(AIX)
  2. Oracle数据库查看当前数据库版本的方法
  3. JSONP理解和使用
  4. JVM垃圾回收参数说明整理
  5. log4qt的使用
  6. linux进程调度之 FIFO 和 RR 调度策略
  7. 如何为Linux生成和打上patch
  8. iOS多线程之GCD学习笔记
  9. easyui 表单和自定义验证扩展和js自定义返回值
  10. 新浪云sae 邮件服务 quicksend()
  11. Educational Codeforces Round 6 C. Pearls in a Row
  12. Django URL传递参数的方法总结
  13. uva 10032 Problem F: Tug of War
  14. c++ 友元类
  15. 201521123074 《Java程序设计》第11周学习总结
  16. js操作DOM元素
  17. Mockito框架入门教程(一)
  18. Centos使用虚拟环境创建python django工程
  19. [转]教你十分钟下载并破解IntelliJ IDEA(2017)
  20. [python][spark]wholeTextFiles 读入多个文件的例子

热门文章

  1. Android Animation学习(二) ApiDemos解析:基本Animatiors使用
  2. 线段树讲解(数据结构、C++)
  3. C++ const 限定符
  4. ZOJ 3430 Detect the Virus(AC自动机)
  5. BZOJ 1997: [Hnoi2010]Planar( 2sat )
  6. Java学习之equals和==的区别
  7. Linux 下的 fork()【转载】
  8. JavaWEB开发中的/到底代表什么
  9. .net web初级工程师教程
  10. MCE遥控---用遥控器玩电脑