2 svar
46 visningar
Frightbot är nöjd med hjälpen
Frightbot 2
Postad: 15 mar 2023 08:14

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()
joculator 5286 – F.d. Moderator
Postad: 15 mar 2023 08:54

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

Frightbot 2
Postad: 15 mar 2023 09:15
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!

Svara Avbryt
Close