Jatel
Jatel

Reputation: 36

snake game in pygame doesn't run

import pygame
from pygame.locals import *

class Snake:
    def __init__(self, parent_screen):
        self.parent_screen = parent_screen
        self.block = pygame.image.load("BLOCK.png")
        self.x = 100
        self.y = 100
    
    def draw(self):
        self.parent_screen.fill("White")
        self.parent_screen.blit(self.block, (self.x,self.y))
        pygame.display.flip()

    def move_up(self):
        self.y -= 10
        self.draw()

    def move_down(self):
        self.y += 10
        self.draw()

    def move_right(self):
        self.x += 10
        self.draw()

    def move_left(self):
        self.x -= 10
        self.draw()    

class game:
    def __init__(self):
        pygame.init()
        self.screen = pygame.display.set_mode((500,500))
        self.screen.fill("White")
        self.snake = Snake(self.screen)
        self.snake.draw()
        

    def run(self):
        game_on = True

        while game_on:
            for event in pygame.event.get():
                if event.type == KEYDOWN:
                    if event.key == K_w:
                        self.snake.move_up()

                    elif event.key == K_s:
                        self.snake.move_down()

                    elif event.key == K_a:
                        self.snake.move_left()

                    elif event.key == K_d:
                        self.snake.move_right()

                elif event.type == QUIT:
                    game_on = False
                
                pygame.display.flip()


Game = game()
Game.run

Upvotes: 1

Views: 407

Answers (1)

Rabbid76
Rabbid76

Reputation: 211268

The scene must be draw and updated in the application:

class game:
    def __init__(self):
        pygame.init()
        self.screen = pygame.display.set_mode((500,500))
        #self.screen.fill("White")                       # <-- DELETE
        self.snake = Snake(self.screen)
        #self.snake.draw()                               # <-- DELETE 
        
    def run(self):
        game_on = True
        while game_on:
            for event in pygame.event.get():
                if event.type == KEYDOWN:
                    if event.key == K_w:
                        self.snake.move_up()
                    elif event.key == K_s:
                        self.snake.move_down()
                    elif event.key == K_a:
                        self.snake.move_left()
                    elif event.key == K_d:
                        self.snake.move_right()

                elif event.type == QUIT:
                    game_on = False

            self.screen.fill("White")                   # <-- INSERT
            self.snake.draw()                           # <-- INSERT
            pygame.display.flip() 

Game = game()
Game.run()                                              # <-- ()

The typical PyGame application loop has to:

Upvotes: 0

Related Questions