日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

软件实习项目2——贪吃喵(猫吃鱼版贪吃蛇)(实验准备与设计)

發布時間:2023/12/8 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 软件实习项目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——贪吃喵(猫吃鱼版贪吃蛇)(实验准备与设计)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。