Python turtle module 4| caterpillar in python.

阿嬤
5 min readJun 13, 2020

--

前言

嗨,大家好我是阿嬤,今天的主題是「貪吃蛇(骨頭僵硬版)」,最近我不知道為什麼會歡打書裡面最長的一本,最長的就是這個啦,所以今天就來和大家講講這個遊戲吧!

很多人玩過經典的遊戲貪吃蛇 這裡跟大家分享貪吃蛇的由來(取自維基百科

貪食蛇(Snake)是一個起源於1976年的街機遊戲 Blockade。此類遊戲在1990年代由於一些具有小型螢幕的行動電話的引入而再度流行起來,在現在的手機上基本都可安裝此小遊戲。版本亦有所不同。

貪吃蛇(取自維基百科)

在遊戲中,玩家操控一條細長的直線(俗稱),它會不停前進,玩家只能操控蛇的頭部朝向(上下左右),一路拾起觸碰到之物(或稱作「豆」),並要避免觸碰到自身或者其他障礙物。每次貪食蛇吃掉一件食物,它的身體便增長一些。吃掉一些食物後會使蛇的移動速度逐漸加快,讓遊戲的難度漸漸變大。遊戲設計大致分為四面都有牆(都不可穿越)以及某部分的牆可以穿越,以及四面牆都可以穿越的模式。

根據這個遊戲規則,我們開始列出PYTHON需要的功能,那我們就…..開始!

flow chart

功能地圖

講解程式

邊界確認

第一行的貨我前幾篇有解釋過我就先跳過喔,那我們先從第四行開始,一樣一定要有前面的設定,系統的設定、形狀、顏色、速度…..等,這前置作業設定好之後就可以開始惹~。

因為outside_window()函式return的變數outside只會有true和false兩個答案

這一篇是設定關於他的邊界,但是我們有一個重點就是如果蛇碰到邊界怎麼

首先我們要先確認蛇是否有超過邊界

阿如果沒有,就繼續進行下去

如果超過,就必須告知遊戲,超過了。

沒錯就是這一行!

outside_window()函式

變數outside

return的只會有true和false兩個答案

總整理一下,如果outside_window()函式確認如果蛇沒超過邊界,他會將變數outside設為false 那沒什麼話好說,就遊戲繼續,話說如果有超過邊界的話,那他會告訴遊戲有超過(他會將變數outside設為true),那遊戲會做後續game_over的處理(上文字之類的)。

GAME OVER

接下來如果遊戲有做到game_over後續的處理,那首先一定要先給他另一個顏色(看你要不要),讓玩家能清楚知道「啊,角色死了」的那種感覺,那除了角色以外,葉子也一樣,改個顏色,那penup是什麼,如果我要一隻蛇那一定要有一個機器話那個蛇,阿遊戲都結束了,那就不用讓蛇繼續長下去,影藏本尊(因為畫筆一下,就是類似很多分身),然後在螢幕前面寫,遊戲結束,然後要設定大小、顏色……等。

大概長這樣子

分數顯示

因為我們要顯示數字,但是又不是直接給他一個數字的外觀,所以唯一的辦法就是有點矛盾。

首先我們先創一個角色

然後我們把它的外觀變一下(霹靂卡拉貝貝乳多~~)

最後就給它上面加個數字

然後再改他的大小、顏色、字體。

然後就完成了,棒。

遊戲開始(ㄍㄢˋ這會讓我很想死)

好所以遊戲開始,要告訴所有的程式說「遊戲開始!」(golbal:告訴整個程式)然後return的意思就是回報,但其實應該是沒有什麼意思,整個遊戲就開始。

但我們要先把分數歸零,然後文字說明清空確保程式初始執行時不會有文字在畫面上

初始設定貪食蛇速度 長度 大小 並將其顯示在畫面上

呼叫display_score函式執行(這個時候分數會顯示出來)

呼叫place_leaf函式執行(這個時候葉子會顯示出來)

當遊戲開始,我們要先設定毛毛蟲的方向、速度、長度、與葉子的距離,途中也是要有一些設定啦,例如:葉子要擺哪、如果碰到葉子分數➕10,好全部的設定稿完之後,剛剛有講過了,就是game over的設定,這我就不說了。

--

--

阿嬤

歡迎來到湯阿嬤的帝國,如果對體制外的學生的學習精華就來這裡吧,想了解一個體制外學生的日常嗎?想了解繪畫相關的知識嗎?而且,如果有對繪畫有任何的挫折或者阻礙這裡最適合你們!或許你會覺得這裡只是一個憨批在這裡發一些沒有意義的文,但其實,我才是國中生喔!!所以有對這裡有興趣的話,就來這裡吧!