I am xiaowutonxue. First and foremost, I would like to express my sincere gratitude to my supervisor, professor Hu Anjiang, for his intellectual guidance, invaluable instructions and comments on my thesis. It is with his valuable assistance that I have finally accomplished this thesis.我來(lái)了。
1.設(shè)計(jì)游戲,首先就要設(shè)計(jì)界面。首先看一下我設(shè)計(jì)的一個(gè)界面。界面分為左邊的游戲區(qū)與右邊的控制區(qū)。游戲區(qū)包含“得分信息”和貪吃蛇的游戲區(qū),右邊控制區(qū)有“開(kāi)始”“暫停”“停止”按鈕,等級(jí)選擇單選框以及游戲排行榜。
2. 所以我們需要定義swing組件,并在類初始化時(shí)初始化這些組件,添加組件。因?yàn)楹竺嬖O(shè)計(jì)游戲的時(shí)候,我們要確切知道游戲區(qū)的大小,所以這里設(shè)置游戲區(qū)固定大小值。本來(lái)想用布局來(lái)更好的管理,但作者對(duì)布局也掌握不夠,所以就先設(shè)置固定大小吧。
3. 定義我們的游戲。貪吃蛇游戲其實(shí)就是包含很多細(xì)小網(wǎng)格,然后蛇在網(wǎng)格中移動(dòng)。蛇由一連串的網(wǎng)格組成,為了視覺(jué)效果,蛇身用藍(lán)色標(biāo)記,食物用紅色標(biāo)記,背景白色。如第一張圖片所示。所以,我們需要定義二維數(shù)組,保存網(wǎng)格信息,保存蛇身和食物的位置信息等。初始化時(shí),還需要添加鍵盤事件控制上下左右移動(dòng)。
4. 豆豆的位置信息是二維的,所以我簡(jiǎn)單定義了一個(gè)類用來(lái)保存二維信息。
5. 接著就是實(shí)現(xiàn)游戲的功能了。開(kāi)始,暫停,停止按鈕添加事件控制游戲開(kāi)始。等級(jí)按鈕定義游戲難度等。
6. 開(kāi)始游戲后,我們定義一個(gè)定時(shí)器。蛇身按照指定的方向移動(dòng),方向是通過(guò)初始化時(shí)添加的鍵盤事件,鍵盤的上下左右按鈕來(lái)控制。蛇身是連續(xù)的位置信息,保存到隊(duì)列中,所以蛇身的移動(dòng)就是隊(duì)首增加一個(gè)位置,隊(duì)尾減少位置,然后重新繪畫(huà)游戲區(qū)就可以了。在蛇身移動(dòng)時(shí)進(jìn)一步做吃掉食物、撞墻、撞到自己的處理。這是游戲的主要邏輯。
7. 最后,游戲結(jié)束我們彈出一個(gè)對(duì)話框提示是否保存游戲得分。我們制作了排行榜信息,只保留前10名的游戲得分。首先定義了一個(gè)實(shí)現(xiàn)Comparable接口的游戲得分類,按得分高,時(shí)間最早來(lái)排序。
8. 游戲結(jié)束時(shí)保存得分信息,看是否進(jìn)入到排行榜中。而之前在初始化排行榜組件時(shí)就會(huì)加載游戲排行榜信息。通過(guò)保存和讀取排行榜信息,我們也熟悉一下文件讀取操作,還有集合、排序算法的功能。
9. 我是傳播愛(ài)與正義的小蕪?fù)瑢W(xué),我的回答結(jié)束。