Pygame: Jag får inte rektangeln att röra sig
Studerar OOP och fick i uppgift att dela upp koden från den här hemsidan i klasser. Jag sitter just nu med problemet att jag inte kan få "ormen" att röra på sig, programmet registrerar att man trycker på piltangenterna men den rör sig inte...
import pygame
pygame.init()
dis = pygame.display.set_mode((400,300))
pygame.display.set_caption('Snake game by Edureka')
blue = (0,0,255)
black = (0, 0, 0)
red = (255,0,0)
game_over = False
class Snake:
def __init__(self):
self.x1 = 300
self.y1 = 300
self.x1_change = 0
self.y1_change = 0
def update(self):
self.move()
self.draw()
def draw(self):
self.head = pygame.draw.rect(dis,blue,[200,150,10,10])
def move(self):
if event.type == pygame.KEYDOWN:
print("press")
if event.key == pygame.K_LEFT:
self.x1_change = -10
self.y1_change = 0
elif event.key == pygame.K_RIGHT:
self.x1_change = 10
self.y1_change = 0
elif event.key == pygame.K_UP:
self.y1_change = -10
self.x1_change = 0
elif event.key == pygame.K_DOWN:
self.y1_change = 10
self.x1_change = 0
while not game_over:
snake = Snake()
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_over = True
snake.update()
pygame.display.update()
pygame.quit()
Väl medveten om att jag inte är så bra på python så är det några saker som jag reagerar på:
1.
snake = Snake()
Denna rad skapar en ny snake. Det vill du väl bara göra EN gång, inte varje gång i din while loop
2.
self.head = pygame.draw.rect(dis,blue,[200,150,10,10])
Denna rad ritar ut en rektangel på exakt samma ställe varje gång. Den flyttas alltså inte.
Jämför med:
pygame.draw.rect(dis, black, [x1, y1, 10, 10])
Som ritar en rektangel på koordinaterna x1,y1
joculator skrev:
Tack! Det verkade få det att fungera! Har rannsakat internet i dagar efter någonstans att få hjälp med detta, tack för hjälpen!