Я пишу код для игры со змеями в pygame как новый программист.Я решил работать со списком кортежей и перемещать их, нажимая клавиши на клавиатуре, но у него есть некоторые проблемы при перемещении.Я не знаю, как заставить его продолжать двигаться, когда я нажимаю клавишу.Я попытался использовать event.get () вместо key.pressed () и работать с циклом while, но он все равно не работает ...
import pygame
pygame.init()
w, h = 500, 500
screen = pygame.display.set_mode((w, h))
c = pygame.time.Clock()
running = True
screen.fill((255,255,255))
x1 , x2 , x3 = 80 , 100 , 120
y1 , y2 , y3 = 80 , 80 , 80
rc = 10
speed = 20
climax = [ (x1 , y1 ) , (x2 , y2), (x3 , y3)]
snake_color = (0,255,0)
while running:
c.tick(20)
screen.fill((0, 0, 0))
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
running = False
pygame.draw.circle(screen , snake_color , (climax[0]) , rc , 0)
pygame.draw.circle(screen , snake_color , (climax[1]) , rc , 0)
pygame.draw.circle(screen , snake_color , (climax[-1]) , rc , 0)
key = pygame.key.get_pressed()
if key[pygame.K_LEFT] :
del climax[2]
climax.insert(2 , climax[1])
climax.insert(1 , climax[0])
climax.insert(0 , (climax[1][0]-speed , climax[1][1]))
pygame.draw.circle(screen , snake_color , (climax[0]) , rc , 0)
pygame.draw.circle(screen , snake_color , (climax[1]) , rc , 0)
pygame.draw.circle(screen , snake_color , (climax[2]) , rc , 0)
if key[pygame.K_UP]:
del climax[2]
climax.insert(2 , climax[1])
climax.insert(1 , climax[0])
climax.insert(0 , (climax[0][0] , climax[0][1]-speed))
pygame.draw.circle(screen , snake_color , (climax[0]) , rc , 0)
pygame.draw.circle(screen , snake_color , (climax[1]) , rc , 0)
pygame.draw.circle(screen , snake_color , (climax[2]) , rc , 0)
if key[pygame.K_DOWN]:
del climax[2]
climax.insert(2 , climax[1])
climax.insert(1 , climax[0])
climax.insert(0 , (climax[0][0] , climax[0][1]+speed))
pygame.draw.circle(screen , snake_color , (climax[0]) , rc , 0)
pygame.draw.circle(screen , snake_color , (climax[1]) , rc , 0)
pygame.draw.circle(screen , snake_color , (climax[2]) , rc , 0)
if key[pygame.K_RIGHT]:
del climax[0]
climax.insert(0 , climax[1])
climax.insert(1 , climax[2])
climax.insert(2 , (climax[1][0]+speed , climax[1][1]))
pygame.draw.circle(screen , snake_color , (climax[0]) , rc , 0)
pygame.draw.circle(screen , snake_color , (climax[1]) , rc , 0)
pygame.draw.circle(screen , snake_color , (climax[2]) , rc , 0)
pygame.display.update()
pygame.quit()
quit()