#編寫內容:簡單版貪吃蛇
遊戲介紹:
遊戲開始執行,按上下左右鍵蛇則會移動,每當蛇吃吃介面中隨機產生的食物時,
設都會隨之增長一節。同時在遊戲介面的左下方會有分數顯示。當蛇碰到自己身體
或撞牆壁遊戲結束。如果想要再來一次,只需要點空格鍵,遊戲將重新開始。
遊戲原始碼:
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 ...