用户:
ZzhAllen查看:0 回复:0 评论:0 创建时间:2022-03-17T16:27:51
import pygame
WIDTH = 800
HEIGHT = 600
FPS = 10
pygame.init()
screen = pygame.display.set_mode((WIDTH, HEIGHT))
screen.fill((0, 0, 0))
x=[0,0,0,0]
bodyx=0
bodyy=0
bodysx=0
bodysy=0
bodylist=[]
k=3
class Snack(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image=pygame.Surface((20,20))
self.image.fill((255,0,0))
self.rect=self.image.get_rect()
self.rect.centerx = WIDTH//2
self.rect.bottom = HEIGHT//2
self.speedx = 0
self.speedy = 0
def update(self):
global x,bodyx,bodyy
bodylist.append([self.rect.x,self.rect.y])
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT] == 1:
x=[1,0,0,0]
elif keys[pygame.K_RIGHT]==1:
x=[0,1,0,0]
elif keys[pygame.K_UP]==1:
x=[0,0,1,0]
elif keys[pygame.K_DOWN]==1:
x=[0,0,0,1]
if x[0]==1:
self.speedx=-20
self.speedy=0
elif x[1]==1:
self.speedx=20
self.speedy=0
elif x[2]==1:
self.speedy=-20
self.speedx=0
elif x[3]==1:
self.speedy=20
self.speedx=0
else:
self.speedx=-20
self.speedy=0
self.rect.x += self.speedx
self.rect.y += self.speedy
class Body(Snack):
def __init__(self,x):
pygame.sprite.Sprite.__init__(self)
self.image=pygame.Surface((20,20))
self.image.fill((0,0,255))
self.rect=self.image.get_rect()
self.rect.centerx = WIDTH//2
self.rect.bottom = HEIGHT//2
self.speedx = 0
self.speedy = 0
self.x=x
def update(self):
global bodylist
self.rect.x = bodylist[time-self.x][0]
self.rect.y = bodylist[time-self.x][1]
class point(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image=pygame.Surface((20,20))
self.image.fill((255,0,0))
self.rect=self.image.get_rect()
self.rect.centerx = WIDTH//2
self.rect.bottom = HEIGHT//2
self.speedx = 0
self.speedy = 0
snack=Snack()
a_g = pygame.sprite.Group()
a_g.add(snack)
running=True
clock = pygame.time.Clock()
time=0
while running:
if time ==3:
for i in range(k):
body=Body(i)
a_g.add(body)
clock.tick(FPS)
screen.fill((0, 0, 0))
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
running = False
a_g.draw(screen)
a_g.update()
time+=1
pygame.display.flip()
pygame.quit()