用Python實現童年小遊戲貪吃蛇

2021-10-12 02:12:41 字數 3128 閱讀 3269

貪吃蛇作為一款經典小遊戲,早在 1976 年就面世了,我最早接觸它還是在家長的諾基亞手機中。

儘管貪吃蛇的歷史相對比較久遠,但它卻有著十分頑強的生命力,保持經久不衰,其中很重要的原因便是遊戲廠家不斷的對其進行更新迭代。現在,這款遊戲無論是遊戲場景、規則等都變得十分豐富。

接下來,我們看一下如何通過 python 簡單的實現這款小遊戲。

首先,安裝第三方庫 pygame,使用pip install pygame即可。

➢ 遊戲主介面

screen_x = 500

screen_y = 500

screen_size = (screen_x, screen_y)

screen = pygame.display.set_mode(screen_size)

pygame.display.set_caption('貪吃蛇')

➢ 貪吃蛇

初始化

def __init__(self):

self.dirction = pygame.k_right

self.body =

移動

def addnode(self):

left, top = (0, 0)

if self.body:

left, top = (self.body[0].left, self.body[0].top)

node = pygame.rect(left, top, 20, 20)

if self.dirction == pygame.k_left:

node.left -= 20

elif self.dirction == pygame.k_right:

node.left += 20

elif self.dirction == pygame.k_up:

node.top -= 20

elif self.dirction == pygame.k_down:

node.top += 20

self.body.insert(0, node)

def delnode(self):

self.body.pop()

改變方向

def changedirection(self, curkey):

lr = [pygame.k_left, pygame.k_right]

ud = [pygame.k_up, pygame.k_down]

if curkey in lr + ud:

if (curkey in lr) and (self.dirction in lr):

return

if (curkey in ud) and (self.dirction in ud):

return

self.dirction = curkey

死亡判斷

def isdead(self):

# 撞牆

if self.body[0].x not in range(screen_x):

return true

if self.body[0].y not in range(screen_y):

return true

# 撞自己

if self.body[0] in self.body[1:]:

return true

return false

➢ 食物

投放食物

def set(self):

if self.rect.x == -20:

allpos =

for pos in range(20, screen_x - 20, 20):

self.rect.left = random.choice(allpos)

self.rect.top = random.choice(allpos)

print(self.rect)

吃掉食物

def remove(self):

self.rect.x = -20

➢ 文字顯示

顯示方法

def show_text(screen, pos, text, color, font_bold=false, font_size=30, font_italic=false):

# 設定文字大小

cur_font = pygame.font.sysfont("宋體", font_size)

# 加粗

cur_font.set_bold(font_bold)

# 斜體

cur_font.set_italic(font_italic)

# 設定內容

text_fmt = cur_font.render(text, 1, color)

# 繪製文字

screen.blit(text_fmt, pos)

顯示分數

show_text(screen, (50, 400), 'scores: ' + str(scores), (103, 213, 213))
顯示死亡提示

show_text(screen, (150, 50), 'game over', (227, 29, 18), false, 50)

show_text(screen, (140, 100), "press space to try again", (0, 0, 22), false, 30)

➢ 吃到食物

當貪吃蛇吃掉食物,增加蛇身長度、分數,食物消失,重新投放食物。

if food.rect == snake.body[0]:

scores += 1

food.remove()

snake.addnode()

# 投放食物

food.set()

➢ 最終效果

打包使用 pyinstaller,具體實現參考 用python實現童年小遊戲俄羅斯方塊

中的打包。

用python實現猜數小遊戲(介面)

簡潔易上手 話不多說,直接上 import tkinter as tk import tkinter.messagebox import random import re game tk.tk game.geometry 400x200 game.title 猜數字小遊戲 a random.rand...

用js實現2048小遊戲

筆記倉庫 2048是一款休閒益智類的數字疊加小遊戲。文末給出源 和演示位址 在 4 4 的16宮格中,您可以選擇上 下 左 右四個方向進行操作,數字會按方向移動,相鄰的兩個數字相同就會合併,組成更大的數字,每次移動或合併後會自動增加乙個數字。當16宮格中沒有空格子,且四個方向都無法操作時,遊戲結束。...

用html css js實現2048小遊戲

最近在學習h5的相關知識,為了檢驗下學習效果,嘗試著對小遊戲2048進行了實現,本來還覺得學的已經不錯了,但是真是做的時候真是應了那句話 書到用時方恨少,絕知此事要躬行!為了測試下對基礎知識的掌握程度,沒有使用現成的框架,如jquery等,這個小遊戲只用了基礎的html css和js。實現該遊戲的思...