一、需求分析:
反应速度的快慢、注意力的集中成度都是一个人综合素质的一部分。
而这些都是可能通过后天的训练得到加强的,于是有一款能训练人思维、反应速度的小游戏便十分必要了。
游戏需要包括界面、背景、障碍物、游戏提示、及用户可以操控的飞机等。
二、概要设计:
各个功能通过各自的类来完成。
三、详细设计:
1、游戏中用户形状为三角形,并可根据左右移动的情况改变形状,同时,在用户与障碍物碰撞之后,会产生毁灭效果,程序的可视化效果突出。
2、游戏的背景采用全黑,同时使用多个线程模拟出的灰色不同速率向下移动象素点构造出一种动态的太空效果。
3、游戏对于用户与障碍物的判断采用了点是否在多边形内的面积判断算法。
4、对于游戏的障碍物,采用了图片的方式进行绘制。
5、程序提供了多个可扩展的函数、变量等,方便游戏的升级。
四、程序结构
1、程序结构说明:
本程序采用模块化设计方法,各个功能的实现都有具体的方法,在主函数调用相应的方法即可实现程序的要求。程序的整体性很强。
2、重要数据说明:
本程序中定义long类型的时间变量,用来获取系统时间。
3、函数清单:
/*
* 显示界面并添加对应器件的方法
*/
public void showUI()
/*
* 显示开始的方法
*/
public void showStart()
/*
* 定义一个显示背景的方法
*/
public void showBackground()
/*
* 定义一个显示子弹的方法
*/
public void showBullets()
User类中:
/*
* 定义一个死亡后的效果显示方法
*/
public void deadshow()
//写run方法
public void run()
BackgroundNode类中:
//写run方法
public void run()
BulletThread类中:
//写run方法
public void run()
ShowTime类中:
ShowTime类中:
//写run方法
public void run()
五、调试分析:
1、程序截图:
开始界面。
游戏界面
死亡界面1
死亡界面2
2、程序调试
在调试中发现程序在键盘同时按下两个键的情况下不会产生相应的效果。对KEYACTIONLISTENER中相应的代码进行增添后得到结果。
六、总结:
1、程序设计难点:
本程序的难点在于判断碰撞算法的设计及在保证屏幕不闪下重绘方法的使用。
2、程序设计中的不足:
本程序在动态效果及界面设置等诸多方面还有很大不足,还需要进一步完善。
3、训练体会:
这次训练是我第一次使用到添加键盘方法。并通过自己的学习掌握了键盘方法的使用及多个键同时按下的使用方法;同时,程序还是大量运用到了Jframe里的相关操作,使我对于Jframe的运用更加熟悉,同时,对于其repaint方法的掌握也更加到位;再同时,我运用到了面积判断点是否包含在面内的算法,增加自己的知识面及将数学理论用于实际。
感悟:
1.
纸上得来终觉浅,绝知此事要躬行!
任何看起来很简单的事情,做起来未必简单!
2.
数学真的很重要!
3.
细心是一个程序员必备的素质!
4.
学会解决问题!