python寫(xiě)一個(gè)貪吃蛇(自帶源碼)
大家都玩過(guò)游戲吧?看到像原神、王者榮耀等大型游戲,大家雖然會(huì)玩,可是不會(huì)做(做游戲可以賺錢(qián)),今天,我就給大家分享一下用python pygame模塊寫(xiě)的簡(jiǎn)易貪吃蛇吧。
首先,如果你還沒(méi)有安裝pygame的話(huà),在cmd里面輸入以下代碼:
pip install pygame
然后回車(chē),直到出現(xiàn)安裝成功為止。
創(chuàng)建一個(gè)空項(xiàng)目,命名為Snake
輸入以下代碼(要是不懂,抄就完了)
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
import random
pygame.init()
W = 1900
H = 990
FPS = 30
ROW = 80
COL = 140
size=(W,H)
window=pygame.display.set_mode(size)
pygame.display.set_caption('Snake')
bg_clor=(0,0,0)
snake_color=(250,250,250)
head=Point(row=int(ROW/2),col=int(COL/2))
head_color=(250,250,250)
snakes=[
? ? Point(row=head.row,col=head.col+1),
? ? Point(row=head.row,col=head.col+2),
? ? Point(row=head.row,col=head.col+3)
? ?
]
def gen_food():
? ? while 1:
? ? ? ? pos=Point(row=random.randint(0,ROW-1),col=random.randint(0,COL-1))
? ? ? ? is_coll=False
? ? ? ? if head.row==pos.row and head.col==pos.col:
? ? ? ? ? ? is_coll=True
? ? ? ? for snake in snakes:
? ? ? ? ? ? if snake.row==pos.row and snake.col==pos.col:
? ? ? ? ? ? ? ? is_coll=True
? ? ? ? ? ? ? ? break
? ? ? ? if not is_coll:
? ? ? ? ? ? break
? ? return pos
food=gen_food()
food_color=(250,250,250)
direct='left'
def rect(point,color):
? ? cell_width=W/COL
? ? cell_height=H/ROW
? ? left=point.col*cell_width
? ? top=point.row*cell_height
? ? pygame.draw.rect(
? ? ? ? window,color,
? ? ? ? (left,top,cell_width,cell_height)
? ? )
QUIT = True
clock=pygame.time.Clock()
while quit:
? ? for event in pygame.event.get():
? ? ? ? if event.type == pygame.QUIT: ? ? ?
? ? ? ? ? ? pygame.quit()
? ? ? ? ? ? QUIT = False
? ? ? ? elif event.type==pygame.KEYDOWN:
? ? ? ? ? ? if event.key==1073741906:
? ? ? ? ? ? ? ? if direct=='left' or direct=='right':
? ? ? ? ? ? ? ? ? ? direct='up'
? ? ? ? ? ? elif event.key == 1073741905:
? ? ? ? ? ? ? ? if direct == 'left' or direct == 'right':
? ? ? ? ? ? ? ? ? ? direct = 'down'
? ? ? ? ? ? elif event.key==1073741904:
? ? ? ? ? ? ? ? if direct == 'up' or direct == 'down':
? ? ? ? ? ? ? ? ? ? direct='left'
? ? ? ? ? ? elif event.key==1073741903:
? ? ? ? ? ? ? ? if direct == 'up' or direct == 'down':
? ? ? ? ? ? ? ? ? ? direct='right'
? ? eat=(head.row==food.row and head.col==food.col)
? ? if eat:
? ? ? ? food = gen_food()
? ? snakes.insert(0,head.copy())
? ? if not eat:
? ? ? ? snakes.pop()
? ? if direct=='left':
? ? ? ? head.col-=1
? ? elif direct=='right':
? ? ? ? head.col+=1
? ? elif direct=='up':
? ? ? ? head.row-=1
? ? elif direct=='down':
? ? ? ? head.row+=1
? ? dead=False
? ? if head.col<=0 or head.row<0 or head.col>=COL or head.row>=ROW:
? ? ? ? dead=True
? ? for snake in snakes:
? ? ? ? if head.col==snake.col and head.row==snake.row:
? ? ? ? ? ? dead
? ? ? ? ? ? break
? ? if dead:
? ? ? ? print('Game Over!')
? ? ? ? quit=False
? ? pygame.draw.rect(window,bg_clor,(0,0,W,H))
? ? for snake in snakes:
? ? ? ? rect(snake,snake_color)
? ? rect(head,head_color)
? ? rect(food,food_color)
? ? pygame.display.flip()
? ? clock.tick(FPS)
