使用Python模組的貪吃蛇遊戲
如果您是貪吃蛇遊戲的粉絲,我相信這篇文章會對您有所幫助. 我將在這篇文章中引導您完成創建一個簡單遊戲的步驟,即使是 Python 新手也會發現它很容易創建. Python 中的 PyGame 函式庫, 這是我們用來開發遊戲的Python包, 是設計遊戲的多種方法之一.
利用圖書館海龜是額外的策略. 借助此模組,使用者可以在線上畫布上生成圖形並繪製表格, 已經安裝了Python. 所以, 在本教程中, 我們將使用海龜庫來建立我們的基本蛇
- 時間模組. 這項技術使我們能夠追蹤自上次以來已經過去的秒數.
- 貪吃蛇遊戲隨機模組 – 它在Python中創建隨機數.
您需要的其他工具包括您喜歡的文字編輯器. 我將在這篇文章中使用 VSCode. 當然, 設定 Python 時需要 3 如果您尚未安裝,請在您的裝置上安裝. 您也可以下載安裝Geekflare編譯器. 這可能是一次非常愉快的經歷!
內容
貪吃蛇遊戲是如何運作的
玩家必須操縱蛇來獲取螢幕上顯示的食物,才能在遊戲中獲得最高分. 玩家透過按下指向蛇移動方向的四個方向鍵之一來引導蛇.
如果蛇擊中玩家或物體,它將從遊戲中移除. 我們將用來玩這個遊戲的程序.
- 將預先安裝的模組導入我們的應用程式 (海龜時間, 烏龜以及隨機).
- 遊戲的螢幕顯示是用Turtle模組創建的.
- 設定按鍵來控制蛇在螢幕上的移動方向.
- 遊戲的實現.
創建 Snakegame.py 文件,我們將在其中添加一個實現程序.
導入模組
這部分程式載入Python安裝時間, 龜, 和隨機模組. 另外, 玩家初始分數的預設數字, 他們能達到的最高分數, 以及玩家每次移動之間延遲的時間量將被定義. 為了確定延遲了多少時間, 需要時間模組.
import turtle
import random
import time
player_score = 0
highest_score = 0
delay_time = 0.1
製作遊戲畫面
我們安裝的海龜模組允許我們創建一個虛擬螢幕,作為遊戲的視窗螢幕. 然後我們可以建造蛇的身體, 以及蛇會吃的食物. 螢幕也會顯示玩家追蹤器的分數.
# window screen created
wind = turtle.Screen()
wind.title("Snake Maze")
wind.bgcolor("red")
# The screen size
wind.setup(width=600, height=600)
# creating the snake
snake = turtle.Turtle()
snake.shape("square")
snake.color("black")
snake.penup()
snake.goto(0, 0)
snake.direction = "Stop"
# creating the food
snake_food = turtle.Turtle()
shapes = random.choice('triangle','circle')
snake_food.shape(shapes)
snake_food.color("blue")
snake_food.speed(0)
snake_food.penup()
snake_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("Your_score: 0 Highest_Score : 0", align="center",
font=("Arial", 24, "normal"))
turtle.mainloop()
上述摘錄中的程式碼首先建立海龜螢幕,然後添加初始標題和背景顏色. 我們首先選擇尺寸,然後將蛇的形狀繪製到數位畫布上. 防止海龜移動時劃線, penup 方法拿起烏龜的筆.
使用其 goto 技術, 可以使用座標將海龜定向到精確位置. 蛇吃的食物是我們做的.
每當蛇收集食物時, 我們想要顯示每個玩家的得分. 我們還想顯示一個人在遊戲中獲得的最高分. 為此原因, 我們用筆. 作為筆, 寫. 描述一個方法來完成.
蛇方向鍵的設定
在這種情況下, 我們對某些鍵進行編程來控制蛇在螢幕上的運動. 我們將使用這封信 “L” 作為左鍵, “右” 向左, “ü” 向上, 和 “D” 對於向下. 這些指令將透過使用海龜的方向函數來呼叫蛇來付諸實踐.
將以下程式碼範例包含在您的.
# Assigning directions def moveleft(): if snake.direction != "right": snake.direction = "left" def moveright(): if snake.direction != "left": snake.direction = "right" def moveup(): if snake.direction != "down": snake.direction = "up" def movedown(): if snake.direction != "up": snake.direction = "down" def move(): if snake.direction == "up": coord_y = snake.ycor() snake.sety(coord_y+20) if snake.direction == "down": coord_y = snake.ycor() snake.sety(coord_y-20) if snake.direction == "right": coord_x = snake.xcor() snake.setx(coord_x+20) if snake.direction == "left": coord_x = snake.xcor() snake.setx(coord_x-20) wind.listen() wind.onkeypress(moveleft, 'L') wind.onkeypress(moveright, 'R') wind.onkeypress(moveup, 'U') wind.onkeypress(movedown, 'D')
移動() 上述函數允許蛇在指定座標內指定的位置移動. 聽() 充當事件偵聽器,一旦使用者按下按鈕,它就會呼叫將蛇引導到某個方向的方法.
以蛇的形式實現遊戲的玩法
基本結構確定後,遊戲需要轉換成真人版. 這就是它將包括的內容:
- 每次吃完食物時,蛇的長度都會延長不同的顏色.
- 每當蛇吃食物時, 玩家的分數增加, 然後跟蹤最高分.
- 可以握住蛇以防止其撞到牆壁甚至自己的身體.
- 擊中蛇後, 比賽繼續.
- 然而在螢幕上, 是玩家的最高分數,即使遊戲重新開始時玩家的分數重置為零.
segments = []
#Implementing the gameplay
while True:
wind.update()
if snake.xcor() > 290 or snake.xcor() < -290 or snake.ycor() > 290 or snake.ycor() < -290:
time.sleep(1)
snake.goto(0, 0)
snake.direction = "Stop"
snake.shape("square")
snake.color("green")
for segment in segments:
segment.goto(1000, 1000)
segments.clear()
player_score = 0
delay_time = 0.1
pen.clear()
pen.write("Player's_score: {} Highest_score: {}".format(player_score, highest_score), align="center", font=("Arial", 24, "normal"))
if snake.distance(snake_food) < 20:
coord_x = random.randint(-270, 270)
coord_y = random.randint(-270, 270)
snake_food.goto(coord_x, coord_y)
# Adding segment
added_segment = turtle.Turtle()
added_segment.speed(0)
added_segment.shape("square")
added_segment.color("white")
added_segment.penup()
segments.append(added_segment)
delay_time -= 0.001
player_score += 5
if player_score > highest_score:
highest_score = player_score
pen.clear()
pen.write("Player's_score: {} Highest_score: {}".format(player_score, highest_score), align="center", font=("Arial", 24, "normal"))
# checking for collisions
for i in range(len(segments)-1, 0, -1):
coord_x = segments[i-1].xcor()
coord_y = segments[i-1].ycor()
segments[i].goto(coord_x, coord_y)
if len(segments) > 0:
coord_x = snake.xcor()
coord_y = snake.ycor()
segments[0].goto(coord_x, coord_y)
move()
for segment in segments:
if segment.distance(snake) < 20:
time.sleep(1)
snake.goto(0, 0)
snake.direction = "stop"
snake.color('white')
snake.shape('square')
for segment in segments:
segment.goto(1000, 1000)
segment.clear()
player_score = 0
delay_time = 0.1
pen.clear()
pen.write("Player's_score: {} Highest_score: {}".format(player_score, highest_score), align="center", font=("Arial", 24, "normal"))
time.sleep(delay_time)
turtle.mainloop()
在上面的程式碼片段中我們使用了, 我們在螢幕上為蛇的食物分配了一個隨機位置. 蛇每次吃掉的營養, 身體長出不同的顏色, 在這種情況下為白色, 明確其增長是明顯的.
當蛇收集食物並且不發生碰撞時, 食物顯示在螢幕尺寸270度座標區域內的隨機位置. 每次蛇吃東西的時候, 玩家的分數增加 5. 如果蛇與玩家發生碰撞, 他們的分數重置為 0 並且螢幕保持最高分.
結論
海龜庫是製作我們在本教程中看到的蛇遊戲的一種有趣且簡單的方法. 您也可以使用Python中的PyGame庫來實現相同的遊戲. 閱讀這些內容,了解如何以不同的方式利用遊戲 PyGame 指示.