generate_food, detect_food_collision
可以嘗試的方向Controller.py
的 generate_poison
的註解有誤。在隨機位置生成一個 `Poison` 的物件並回傳,不能與現有其他物件或玩家重疊
無回傳值
應更正成
在隨機位置生成一個 `Poison` 的物件並回傳,不能與現有其他物件或玩家重疊
pygame
注意:指令都只要複製 $
後面的字就好,$
是表示指令之前的提示符號
按下 Win+R,輸入 cmd
開啟命令提示字元
輸入以下指令安裝 pygame
的遊戲套件
$ python -m pip install pygame --user
或是
$ python3 -m pip install pygame --user
打開 terminal,輸入以下指令
$ python3 -m pip install pygame --user
到 Links 下載作業連結。解壓縮後應該會有這些檔案
main.py
Models.py
Controllers.py
Config.py
打開 cmd 或 terminal 輸入以下指令,python
還是 python3
是根據 安裝
$ cd 程式資料夾
$ python main.py
(或是)
$ python3 main.py
如果一切都沒有問題的話應該會跳出一個視窗,然後在 terminal 出現以下文字
一共有 4 個 .py
檔案
main.py
裡面Config.py
裡面定義一些會用到的常數及設定Model.py
裡面定義遊戲物件,如食物、牆壁、蛇等Controller.py
裡面是一些關於偵測和操控物件的函式交作業的時候請只把所有必要的檔案,外加README.txt/README.md
加到壓縮檔 姓名_X區.zip
內
解壓縮 王小明_北區.zip
後,資料夾的內容應該要長這樣
底下依照類別或功能做了分類,沒有說一定要按照這個順序 (但有些還是要,例如要先做生成再做碰撞)
括號中的是跟該功能相關的 function 名稱
另外,每個你要完成的 function 中都有註解告訴你細節,你只需要把中文理解之後轉換成 Python 程式碼即可
Player.move
) - 10ptController.py generate_wall
) - 10pt
Controller.py generate_food
) - 5ptController.py generate_poison
) - 5ptPlayer.new_block
) - 5ptPlayer.check_border
) - 5ptPlayer.detect_player_collision
) - 15ptPlayer.detect_wall_collision
) - 5ptPlayer.detect_food_collision
) - 10ptPlayer.detect_poison_collision
) - 10ptController.py
的 calculate_time_interval
) - 10ptPlayer.draw_snake
) - 5pt王小明_北區.zip
這邊只是給不知道怎麼寫的人一個大概的方向,如果你的做法跟這邊不一樣也沒關係
def detect_food_collision(self, foods):
"""
判斷蛇的頭是否碰到食物
有碰到就回傳 True
沒有碰到回傳 False
"""
# 定義第一塊的位置
# 把 foods 裡面每一項抓出來比對
# 如果 x 或 y 的座標差比蛇的寬高小就算碰撞
def generate_food(foods, walls, player):
"""
在隨機位置生成一個Food的物件並加到foods裡面,不能與現有牆壁或玩家重疊
無回傳值
"""
# 隨機選一個座標
# 跟每個物件一一比對有沒有重疊
# 如果重疊就重新選座標
or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Do you want to remove this version name and description?
Syncing