貪吃蛇游戲是一款於 1976 年由格雷姆林工業(Gremlin Industries)開發,並由世嘉游戲(SEGA)發行的街機迷宮游戲。這款游戲曾經登上多款諾基亞黑白機,對上世紀的玩家來說頗有懷舊感。
玩家在貪吃蛇游戲中使用方向鍵操作貪吃蛇前進,盡可能收集食物取得高分。貪吃蛇在獲取食物後,身體長度會進一步加長,而當玩家不小心撞向牆壁或自己時,游戲便結束。
對 Python 初學者而言,玩法邏輯較為簡單的貪吃蛇游戲正適合用來練習 Turtle 框架,而這款以 Python 為核心的游戲將會使用以下三個庫:
Turtle - 用於在虛擬畫布中繪制圖形
Time - 計算游戲中的用時
Random - 在 Python 中生成隨機數字,對應隨機出現的食物
這篇教程將使用 Lightly 在線編寫 Python 代碼,無需下載任何應用或安裝環境依賴即可在浏覽器中編程。
在開始其他編寫其他代碼前,我們需要使用 import
代碼分別導入 turtle、time 及 random 等模塊。由於這些模塊都已預安裝在 Python 中,我們只需在代碼中導入即可。若模塊缺失,你也可以在 Lightly 中使用 Quick Fix 進行快速安裝。
完成模塊導入後,我們需要繪制游戲窗口、蛇頭及食物等游戲內容,同時也需要在頂部顯示游戲得分。
# 繪制窗口
wn = turtle.Screen()
wn.title("Snake Game")
wn.bgcolor("blue")
# 用戶可以自行調整窗口的長度與寬度
wn.setup(width=600, height=600)
wn.tracer(0)
# 蛇頭
head = turtle.Turtle()
head.shape("square")
head.color("white")
head.penup()
head.goto(0, 0)
head.direction = "Stop"
# 游戲中的食物
food = turtle.Turtle()
colors = random.choice(['red', 'green', 'black'])
shapes = random.choice(['square', 'triangle', 'circle'])
food.speed(0)
food.shape(shapes)
food.color(colors)
food.penup()
food.goto(0, 100)
pen = turtle.Turtle()
pen.speed(0)
pen.shape("square")
pen.color("white")
pen.penup()
pen.hideturtle()
pen.goto(0, 250)
pen.write("得分 : 0 最高得分 : 0", align="center",
font=("candara", 24, "bold"))
代碼效果:
添加物體後還需要監聽按鍵,才能通過按鍵控制蛇的動作。在這個游戲中,我們使用 WASD 四鍵分別控制上下左右移動。
# 設定按鍵方向
def group():
if head.direction != "down":
head.direction = "up"
def godown():
if head.direction != "up":
head.direction = "down"
def goleft():
if head.direction != "right":
head.direction = "left"
def goright():
if head.direction != "left":
head.direction = "right"
def move():
if head.direction == "up":
y = head.ycor()
head.sety(y+20)
if head.direction == "down":
y = head.ycor()
head.sety(y-20)
if head.direction == "left":
x = head.xcor()
head.setx(x-20)
if head.direction == "right":
x = head.xcor()
head.setx(x+20)
wn.listen()
wn.onkeypress(group, "w")
wn.onkeypress(godown, "s")
wn.onkeypress(goleft, "a")
wn.onkeypress(goright, "d")
我們現在已經可以通過鍵盤按鍵控制貪吃蛇移動,但我們還需要進一步添加游戲機制,讓游戲變得更完善。例如:改變蛇身的長度和顏色、貪吃蛇吃下食物後計分、檢查蛇頭碰撞情況、計分並保存最高分等。
游戲最終的效果:
【查看完整代碼】https://074658e7fa-share.lightly.teamcode.com
以上代碼可在浏覽器中直接打開,相關教程可查看:
如何打開並編輯他人用 Lightly 分享的項目?
今天的 Python 貪吃蛇教程就到這裡,歡迎你在評論區留言提出疑問和建議,也歡迎你查看 TeamCode 的一些往期文章。
怎麼看待 Python(PyScript) 可以做浏覽器前端開發語言?
Python 教程:從 Python 爬蟲到數據分析
學習 Python 爬蟲,手把手通過 Python 入門爬取網頁信息
Catalog Django coordination py
Python Closure List of articl