一、需求分析:
反應速度的快慢、注意力的集中成度都是一個人綜合素質的一部分。
而這些都是可能通過後天的訓練得到加強的,於是有一款能訓練人思維、反應速度的小游戲便十分必要了。
游戲需要包括界面、背景、障礙物、游戲提示、及用戶可以操控的飛機等。
二、概要設計:
各個功能通過各自的類來完成。
三、詳細設計:
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.
學會解決問題!