您好,登錄后才能下訂單哦!
本篇內容介紹了“python如何實現簡單貪吃蛇小游戲”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
1. 導入游戲庫
import pgzrun import random
2.游戲初始化
# 窗口大小 WIDTH = 600 HEIGHT = 480 # 貪吃蛇 bodys = [ [100,100],[80,100], [60,100], [40,100], [20,100]] head = [100,100] d = 'right' # 食物 food = [290,290] # 得分 score=0
3.游戲窗口繪制
def draw(): #清空屏幕 screen.clear() # 繪制網格 for i in range(1,24): screen.draw.line((0,i*20),(600,i*20),'gray') for i in range(1,30): screen.draw.line((i*20,0),(i*20,480),'gray') #繪制蛇 for body in bodys: rect = Rect(body,(20,20)) screen.draw.filled_rect(rect,(0,0,255)) inner = [body[0]+2,body[1]+2] rect = Rect(inner, (15, 15),center='center') screen.draw.filled_rect(rect, (0, 0, 180)) # 繪制頭 rect = Rect(head, (20, 20)) screen.draw.filled_rect(rect, (0, 200,0)) inner = [head[0] + 2, head[1] + 2] rect = Rect(inner, (15, 15)) screen.draw.filled_rect(rect, (0, 255, 12)) # 繪制食物 screen.draw.filled_circle(food,10, '#ffddee') # 繪制得分 screen.draw.text('score:'+str(score),(20, 20), color="orange",fontsize=30)
4.蛇的移動功能
def run(): global food,d,head,bodys,score # 新增一個格子的身體 if d=='right': head[0] += 20 elif d=='left': head[0] -= 20 elif d=='up': head[1] -= 20 else: head[1] += 20 bodys.insert(0,list(head)) if head[0] == food[0]-10 and head[1] == food[1] - 10: food = [random.randint(1,30)*20-10,random.randint(1,20)*20-10] score+=1 if score>3: clock.unschedule(run) clock.schedule_interval(run, 0.1) else: bodys.pop() # 撞墻后重新開始 if head[0]<0 or head[0]>580 or head[1]<0 or head[1]>480 or head in bodys[1:]: # 蛇回到初始位置 bodys = [[100, 100], [80, 100], [60, 100], [40, 100], [20, 100]] head = [100, 100] # 方向向右 d = 'right' # 得分清零 score=0 clock.unschedule(run) clock.schedule_interval(run, 0.3)
5.按鍵控制蛇的行走方向
# 按鍵控制蛇的行走方向 def on_key_down(key): global d # 改變方向 if key == keys.DOWN and d != 'up': d = 'down' if key == keys.UP and d != 'down': d = 'up' if key == keys.LEFT and d != 'right': d = 'left' if key == keys.RIGHT and d != 'left': d = 'right'
6.啟動游戲
# 定時設置 clock.schedule_interval(run, 0.3) # 播放音樂 music.play('music.mp3') # 啟動游戲 pgzrun.go()
完整代碼
# 1.導入庫 import pgzrun import random # 2.初始化 # 窗口大小 WIDTH = 600 HEIGHT = 480 # 貪吃蛇 bodys = [[100, 100], [80, 100], [60, 100], [40, 100], [20, 100]] head = [100, 100] d = 'right' # 食物 food = [290, 290] # 得分 score = 0 # 3.游戲窗口繪制 def draw(): # 清空屏幕 screen.clear() # 繪制網格 for i in range(1, 24): screen.draw.line((0, i * 20), (600, i * 20), 'gray') for i in range(1, 30): screen.draw.line((i * 20, 0), (i * 20, 480), 'gray') # 繪制蛇 for body in bodys: rect = Rect(body, (20, 20)) screen.draw.filled_rect(rect, (0, 0, 255)) inner = [body[0] + 2, body[1] + 2] rect = Rect(inner, (15, 15), center='center') screen.draw.filled_rect(rect, (128, 0, 128)) # 紫色 # 繪制頭 rect = Rect(head, (20, 20)) screen.draw.filled_rect(rect, (0, 200, 0)) inner = [head[0] + 2, head[1] + 2] rect = Rect(inner, (15, 15)) screen.draw.filled_rect(rect, (0, 255, 12)) # 繪制食物 顏色為紅色 screen.draw.filled_circle(food, 10, '#ff0000') # 繪制得分 screen.draw.text('score:' + str(score), (20, 20), color="red", fontsize=30) # 4.蛇的移動功能 def run(): global food, d, head, bodys, score # 新增一個格子的身體 if d == 'right': head[0] += 20 elif d == 'left': head[0] -= 20 elif d == 'up': head[1] -= 20 else: head[1] += 20 bodys.insert(0, list(head)) if head[0] == food[0] - 10 and head[1] == food[1] - 10: food = [random.randint(1, 30) * 20 - 10, random.randint(1, 20) * 20 - 10] score += 1 if score > 10: clock.unschedule(run) clock.schedule_interval(run, 0.1) else: bodys.pop() # 撞墻后重新開始 if head[0] < 0 or head[0] > 580 or head[1] < 0 or head[1] > 480 or head in bodys[1:]: # 蛇回到初始位置 bodys = [[100, 100], [80, 100], [60, 100], [40, 100], [20, 100]] head = [100, 100] # 方向向右 d = 'right' # 得分清零 score = 0 clock.unschedule(run) clock.schedule_interval(run, 0.3) # 按鍵控制蛇的行走方向 def on_key_down(key): global d # 改變方向 if key == keys.DOWN and d != 'up': d = 'down' if key == keys.UP and d != 'down': d = 'up' if key == keys.LEFT and d != 'right': d = 'left' if key == keys.RIGHT and d != 'left': d = 'right' # 6.啟動游戲 # 定時設置 clock.schedule_interval(run, 0.3) # 播放音樂 music.play('music.mp3') # 啟動游戲 pgzrun.go()
“python如何實現簡單貪吃蛇小游戲”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。