软件实习项目2——贪吃喵(猫吃鱼版贪吃蛇)(实验准备与设计)
軟件實習項目2——貪吃喵(貓吃魚版貪吃蛇)(實驗準備與設計)
- 實驗內容
- 編程語言以及開發環境的選擇
- 實驗思路(游戲設計)
- 一、游戲的邏輯設計
- 1、貓頭的生成
- 2、魚的生成
- 3、貓頭和魚骨的移動
- 4、按下鍵盤,改變方向
- 二、主窗口的繪制
- 1、使用drawImage顯示背景圖片
- 2、使用drawLine繪制行線和列線
- 3、使用drawText顯示分數
- 4、使用drawImage繪制貓頭、魚、魚骨
- 三、游戲開始與結束界面,以及主窗口的按鈕
- 1、開始游戲
- 2、游戲速度設置
- 3、貓咪選項設置
- 4、結束游戲
- 5、窗口中的按鈕:暫停/開始、重來/退出
- 四、游戲背景音樂
(由于搜尋圖片素材、以及在對素材選擇的糾結等細節上花費的時間過多,始終對成品不太滿意,所以這個實驗項目完成得較慢,完全做完才開始進行博客的編寫。)
實驗內容
1、實現貪吃蛇游戲基本功能,屏幕上隨機出現一個“食物”,稱為豆子,上下左右
控制“蛇”的移動,吃到“豆子”以后“蛇”的身體加長一點,得分增加,“蛇”碰到邊界或,
蛇頭與蛇身相撞,蛇死亡,游戲結束。為游戲設計初始歡迎界面,游戲界面,游戲
結束界面。
2、進行交互界面的設計,要有開始鍵、暫停鍵和停止退出的選項。對蛇吃到豆子進
行分值計算,可以設置游戲速度,游戲音樂等拓展元素。
編程語言以及開發環境的選擇
和上一個項目一樣,開發環境依然選用PyCharm,編程語言選用Python。
實驗思路(游戲設計)
為了更有創意,在這個游戲中,我將貪吃蛇改為貪吃喵,制作了一只吃魚的小貓,每吃到一條魚,身后就多跟一個魚骨。
一、游戲的邏輯設計
準備工作:
1)定義一個string用來存放貓頭位置;
2)定義一個string用來存放魚的位置;
3)定義一個列表用來存放貓頭和魚骨的位置;
4)定義一個direction來存放貓前進的方向;
5)定義一個score用來計分;
6)定義一個speed用來設置計時器的時間間隔,初始默認值是500ms;
7)定義兩個String分別存放貓頭和死亡貓頭圖片的路徑。
1、貓頭的生成
1)調出背景音樂;
2)隨機選取貓頭的行與列,生成貓頭位置;
3)把貓頭位置寫入坐標列表中;
4)隨機選擇貓頭前進的方向;
5)調用生成魚的方法。
2、魚的生成
1)隨機選取魚的行與列,生成魚的位置;
2)若隨機生成的魚的位置不在貓頭和魚骨的坐標列表中,則返回魚的位置,否則重新生成。
3、貓頭和魚骨的移動
此函數由QTimer的timeout函數觸發
1)根據direction的值,貓頭的行或列相應地+1或-1,并得到貓頭坐標;
2)判斷是否吃到魚:
· 魚骨位置不變,在列表最前面插入貓頭位置;
· 分數score加10;
· 調用生成魚的方法,生成下一條魚。
①若貓頭和魚骨沒有相撞且貓頭沒有出界:
· 移動所有魚骨,即所有坐標等于它的前一個坐標;
· 更新貓頭位置,即將新的貓頭坐標放在坐標列表索引為0的位置上。
②若貓頭和魚骨相撞或貓頭出界,則調用GameOver,游戲結束。
4、按下鍵盤,改變方向
對QWidget中keyPressEvent方法的重寫
1)按下 W 表示向上,direction = 0;
2)按下 S 表示向下,direction = 1;
3)按下 A 表示向左,direction = 2;
4)按下 D 表示向右,direction = 3;
(由于使用上下左右按鍵時,容易被之后設置在界面上的按鈕干擾到,上下左右鍵去控制按鈕,而不再控制貓頭移動了。不想深究這個問題,所以直接用WSAD表示上下左右。)
二、主窗口的繪制
使用QPainter進行繪制
1、使用drawImage顯示背景圖片
2、使用drawLine繪制行線和列線
3、使用drawText顯示分數
4、使用drawImage繪制貓頭、魚、魚骨
定義一個索引:index = 0,表示坐標列表的索引,為0時畫貓頭,大于0時畫魚骨。遍歷坐標列表:
1)若貓頭沒出界且沒有與魚骨相撞,則畫貓頭和魚骨,畫正常貓頭和魚骨;
2)若貓頭出界了或與魚骨相撞,則畫死亡貓頭和魚骨;
3)畫魚。
三、游戲開始與結束界面,以及主窗口的按鈕
1、開始游戲
1)開始游戲消息框的大小和樣式設置;
2)click to start按鈕的設置;
3)速度選項下拉框,設置Low、Middle、High三個速度選項,更改時觸發speedChanging方法;
4)貓咪選項下拉框,有五種貓咪可選,更改時觸發catChoosing方法;
5)退出游戲開始消息框,進入游戲主界面,調出背景音樂,生成貓頭,游戲開始。
2、游戲速度設置
此方法由開始游戲中的速度下拉框的currentIndexChanged方法觸發,由currentIndex()傳遞下拉框選中的項目的索引。
1)索引為1時,表示下拉框選中Low,speed設置為500ms;
2)索引為2時,表示下拉框選中Middle,speed設置為300ms;
3)索引為3時,表示下拉框選中High,speed設置為200ms;
若此方法未被觸發,說明speed為默認值,500ms。
3、貓咪選項設置
此方法由開始游戲中的貓咪下拉框的currentIndexChanged方法觸發,由currentIndex()傳遞下拉框選中的項目的索引。與游戲速度設置方法類似,判斷傳遞過來的索引值,并設置相應的貓頭圖片和死亡貓頭圖片。
若此方法未被觸發,說明head_pic和dead_pic為默認值,都是英短貓的對應圖片。
4、結束游戲
1)背景音樂停止;
2)結束游戲消息框的大小和樣式設置,并顯示游戲得分;
3)設置 Retry 和 Exit 兩個按鈕;
4)若點擊 Retry,則退出消息框,回到游戲主界面,調用生成貓頭的方法,游戲開始;若點擊 Exit,則退出程序。
5、窗口中的按鈕:暫停/開始、重來/退出
1)點擊暫停按鈕則觸發windowPause方法:計時器停止,暫停播放音樂;
2)點擊繼續按鈕則觸發windowContinue方法:計時器重新開始計時,繼續播放音樂;
3)點擊退出按鈕則退出程序;
4)點擊重新開始則重新生成貓頭,游戲重新開始。
四、游戲背景音樂
使用pygame.mixer.music對音樂進行控制。
——2020/12/16(殷越)
總結
以上是生活随笔為你收集整理的软件实习项目2——贪吃喵(猫吃鱼版贪吃蛇)(实验准备与设计)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于BS架构考试系统的设计与分析
- 下一篇: SAP PP模块—事务代码