python簡單版貪吃蛇

2021-09-23 18:17:18 字數 4100 閱讀 2597

#編寫內容:簡單版貪吃蛇

遊戲介紹:

遊戲開始執行,按上下左右鍵蛇則會移動,每當蛇吃吃介面中隨機產生的食物時,

設都會隨之增長一節。同時在遊戲介面的左下方會有分數顯示。當蛇碰到自己身體

或撞牆壁遊戲結束。如果想要再來一次,只需要點空格鍵,遊戲將重新開始。

遊戲原始碼:

import pygame

import sys

import random

# 全域性定義

screen_x = 600

screen_y = 600

# 蛇類

# 點以25為單位

class snake(object):

# 初始化各種需要的屬性 [開始時預設向右/身體塊x5]

def __init__(self):

self.dirction = pygame.k_right

self.body =

for x in range(5):

self.addnode()

# 無論何時 都在前端增加蛇塊

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,25,25)

if self.dirction == pygame.k_left:

node.left -= 25

elif self.dirction == pygame.k_right:

node.left += 25

elif self.dirction == pygame.k_up:

node.top -= 25

elif self.dirction == pygame.k_down:

node.top += 25

self.body.insert(0,node)

# 刪除最後乙個塊

def delnode(self):

self.body.pop()

# 死亡判斷

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 move(self):

self.addnode()

self.delnode()

# 改變方向 但是左右、上下不能被逆向改變

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

# 食物類

# 方法: 放置/移除

# 點以25為單位

class food:

def __init__(self):

self.rect = pygame.rect(-25,0,25,25)

def remove(self):

self.rect.x=-25

def set(self):

if self.rect.x == -25:

allpos =

# 不靠牆太近 25 ~ screen_x-25 之間

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

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

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

print(self.rect)

def show_text(screen, pos, text, color, font_bold = false, font_size = 60, 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)

def main():

pygame.init()

screen_size = (screen_x,screen_y)

screen = pygame.display.set_mode(screen_size)

pygame.display.set_caption('snake')

clock = pygame.time.clock()

scores = 0

isdead = false

# 蛇/食物

snake = snake()

food = food()

while true:

for event in pygame.event.get():

if event.type == pygame.quit:

sys.exit()

if event.type == pygame.keydown:

snake.changedirection(event.key)

# 死後按space重新

if event.key == pygame.k_space and isdead:

return main()

screen.fill((255,255,255))

# 畫蛇身 / 每一步+1分

if not isdead:

scores+=1

snake.move()

for rect in snake.body:

pygame.draw.rect(screen,(20,220,39),rect,0)

# 顯示死亡文字

isdead = snake.isdead()

if isdead:

show_text(screen,(100,200),'you dead!',(227,29,18),false,100)

show_text(screen,(150,260),'press space to try again...',(0,0,22),false,30)

# 食物處理 / 吃到+50分

# 當食物rect與蛇頭重合,吃掉 -> snake增加乙個node

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

scores+=50

food.remove()

snake.addnode()

# 食物投遞

food.set()

pygame.draw.rect(screen,(136,0,21),food.rect,0)

# 顯示分數文字

show_text(screen,(50,500),'scores: '+str(scores),(223,223,223))

pygame.display.update()

clock.tick(10)

if __name__ == '__main__':

main()

瘋狂貪吃蛇(python版)

這是一款只要有pygame就可以執行的小遊戲。含 你可以直接 複製黏貼 至你的python編譯器。然後就可以玩啦!工具 原料 pygame python3 pycharm 選用 複製 import pygame from sys import exit import random class poi...

VC版貪吃蛇

此處,我感受到復用性的好處,將與顯示或平台無關的東西分裝在一起,如果能進一步抽象的盡量抽象,就可以充分發揮其復用性。具體的關於snake的設計,請參見我的部落格 c 版貪吃蛇遊戲 下面是vc下的遊戲介面截圖 在這裡說一下vc下與c 不同的及新家的東西。cpp view plain copy 引入庫 ...

pygame Python 版貪吃蛇

貪吃蛇是個非常簡單的遊戲,適合練手。先來看一下我的遊戲截圖 玩法介紹 回車鍵 開始遊戲 空格鍵 暫停 繼續 方向鍵 或 wsad 鍵 控制移動方向。食物分紅 綠 藍三種,分別對應 10 分 20 分 30 分,每吃乙個食物增加對應分值,每增加 100 分速度加快一級,沒有設定關卡,我玩到 1100 ...