最近想用動(dòng)手51單片機(jī)做個(gè)貪吃??的游戲機(jī),發(fā)現(xiàn)沒有思路索用python實(shí)現(xiàn)了一把(日常摸魚)践美,關(guān)于51貪吃蛇游戲機(jī)的事日后在更新
代碼
import pygame,random
from pygame.locals import *
class Point:
row =0
col = 0
def __init__(self,row,col):
self.row=row
self.col=col
def copy(self):
return Point(row=self.row,col=self.col)
import pygame,random
#初始化
pygame.init()
W=800
H=600
ROW=30
COL=40
size=(W,H)
window = pygame.display.set_mode(size)
pygame.display.set_caption('貪吃蛇')
head = Point(row=int(ROW/2),col=int(COL/2))
snacks=[
Point(row=head.row,col=head.col+1),
Point(row=head.row,col=head.col+2),
Point(row=head.row,col=head.col+3)
]
#生成food
def gen_food():
while 1:
pos =Point(row=random.randint(0,ROW-1),col=random.randint(0,COL-1))
is_coll=False
#是否碰上??
if head.col==pos.col and head.row==pos.row:
is_coll=True
for snack in snacks:
if snack.col==pos.col and snack.row == pos.row:
is_coll=True
break
if not is_coll:
break
return pos
#定義坐標(biāo)
food = gen_food()
head_color=(228,0,0)
food_color= (255,225,0)
snack_color=(128,128,128)
direct='left'
#畫
def rect(point,color):
cell_width=W/COL
cell_hight=H/ROW
left=point.col*cell_width
top =point.row*cell_hight
pygame.draw.rect(window,color,(left,top,cell_width,cell_hight),0)
#游戲循環(huán)
quit = True
clock = pygame.time.Clock()
while quit:
for event in pygame.event.get():
if event.type == pygame.QUIT:
quit=False
if event.type ==pygame.KEYDOWN :
if event.key == pygame.K_LEFT:
if direct=='up' or direct=='down':
direct='left'
if event.key == pygame.K_RIGHT:
if direct == 'up' or direct == 'down':
direct = 'right'
if event.key == pygame.K_DOWN:
if direct == 'left' or direct == 'right':
direct = 'down'
if event.key == pygame.K_UP:
if direct == 'left' or direct == 'right':
direct = 'up'
#吃東西
eat=(head.row==food.row and head.col==food.col)
#處理身子
# 1.把原來的頭插到snack頭上
snacks.insert(0,head.copy())
#2.刪掉snacks最后一個(gè)
if not eat:
snacks.pop()
if eat:
food = gen_food()
#移動(dòng)??
if direct=='left':
head.col-=1
elif direct=='right':
head.col+=1
elif direct=='up':
head.row-=1
elif direct=="down":
head.row+=1
#檢測(cè)是否死了
dead=False
if head.row<0 or head.row>=ROW or head.col<0 or head.col>=COL:
dead=True
#撞自己
for snack in snacks:
if head.row==snack.row and snack.col==head.col:
dead=True
print('defefefd')
break
if dead==True:
print("死了")
quit=False
#渲染——畫出來
pygame.draw.rect(window,(255,255,255),(0,0,W,H))#背景
#畫蛇頭
rect(head,head_color)
rect(food,food_color)
#畫出蛇的身體
for snack in snacks:
rect(snack,snack_color)
# 讓出控制權(quán)
pygame.display.flip()
#設(shè)置幀頻
clock.tick(10)
運(yùn)行結(jié)果: