日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

pygame實現貪吃蛇游戲_python

作者:DOLPHINちゃん ? 更新時間: 2022-03-27 編程語言

本文實例為大家分享了pygame實現貪吃蛇游戲的具體代碼,供大家參考,具體內容如下

為了簡化起見,游戲素材暫定為兩張簡單的圖片(文中用的是30*30)。
大家很方便就能制作。

背景也是純黑填充。
各種音樂字體特效玩法場景等大家可以自由發揮

import pygame
import sys
import random
fps=6 ? ?#設置幀率
move={'up':[-30,0],'down':[30,0],'left':[0,-30],'right':[0,30]} ?#上下左右映射為值
? ?
class MOCCASIN(object): ?#蛇類
? ? def __init__(self):
? ? ? ? self.scheme=pygame.image.load('moccasin.png')
? ? ? ? self.x=int(20*random.random())*30
? ? ? ? self.y=int(20*random.random())*30
? ? ? ? self.body=[[self.x,self.y],[self.x,self.y+30],[self.x,self.y+60]]
? ? ? ? self.direct='up'
? ? ? ?
? ? def update(self):
? ? ? ? self.x+=move[self.direct][1]
? ? ? ? self.y+=move[self.direct][0]
? ? ? ? self.body.insert(0,[self.x,self.y])

class FOOD(object): ?#食物類
? ? def __init__(self):
? ? ? ? self.scheme=pygame.image.load('food.png')
? ? ? ? self.coordinate=(int(20*random.random())*30,int(20*random.random())*30)

def updateMap(): ?#場景更新
? ? screen.fill((0,0,0))
? ? moccasin.update()
? ? screen.blit(food.scheme,food.coordinate)
? ? for x in moccasin.body:
? ? ? ? screen.blit(moccasin.scheme,tuple(x)+(30,30))

def bitself(): ?#是否咬到自己
? ? dct={}
? ? for ll in moccasin.body:
? ? ? ? if tuple(ll) in dct :return True
? ? ? ? dct[tuple(ll)]=1
? ? return False ? ? ??
? ? ? ??
if __name__=='__main__':
? ? pygame.init()
? ? pygame.display.set_caption('「moccasin」')
? ? screen=pygame.display.set_mode((600,600))

? ? food=FOOD()
? ? moccasin=MOCCASIN()
? ? clk=pygame.time.Clock()

? ? while True:
? ? ? ? clk.tick(fps)
? ? ? ? for event in pygame.event.get():
? ? ? ? ? ? if event.type==pygame.QUIT:
? ? ? ? ? ? ? ? sys.exit()
? ? ? ? ? ? elif event.type==pygame.KEYDOWN:
? ? ? ? ? ? ? ? if event.key==pygame.K_UP and moccasin.direct!='down':
? ? ? ? ? ? ? ? ? ? moccasin.direct='up'
? ? ? ? ? ? ? ? if event.key==pygame.K_DOWN and moccasin.direct!='up':
? ? ? ? ? ? ? ? ? ? moccasin.direct='down'
? ? ? ? ? ? ? ? if event.key==pygame.K_LEFT and moccasin.direct!='right':
? ? ? ? ? ? ? ? ? ? moccasin.direct='left'
? ? ? ? ? ? ? ? if event.key==pygame.K_RIGHT and moccasin.direct!='left':
? ? ? ? ? ? ? ? ? ? moccasin.direct='right'
? ? ? ? ? ? ? ? ? ??
? ? ? ? if not (0<=moccasin.x<600 and 0<=moccasin.y<600) or bitself():?
? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#檢測蛇是否死亡
? ? ? ??
? ? ? ? if food.coordinate==tuple(moccasin.body[0]): #是否吃到食物
? ? ? ? ? ? food=FOOD()
? ? ? ? else: moccasin.body.pop()
? ? ? ? ? ??
? ? ? ? updateMap() #更新地圖
? ? ? ? pygame.display.update()
? ? ? ??
? ? #蛇死亡,游戲結束
? ? screen.fill((0,0,0))
? ? tips="失 敗"
? ? tipsFont=pygame.font.Font('C:\Windows\Fonts\msyh.ttc',100)
? ? tipsSurf=tipsFont.render(tips,1,(255,255,255))
? ? screen.blit(tipsSurf,(screen.get_width()/2-tipsSurf.get_width()/2,256))
? ? pygame.display.flip()

原文鏈接:https://blog.csdn.net/qq_51449531/article/details/122441860

欄目分類
最近更新