Place the while running:
loop in the Game run()
method
running = True
while running:
for event in pygame.event.get():
if event.type == KEYDOWN:
if event.key == K_ESCAPE or event.key == K_q:
running = False
if event.key == K_DOWN or event.key == K_s:
block_y += 10
if event.key == K_UP or event.key == K_w:
block_y -= 10
if event.key == K_LEFT or event.key == K_a:
block_x -= 10
if event.key == K_RIGHT or event.key == K_d:
block_x += 10
if event.type == QUIT:
running = False
Instead of adjusting each block_x
and block_y, refer to
self.snake
move
methods, but create the methods in the Snake.
class Game:
def __init__(self):
pygame.init()
self.surface = pygame.display.set_mode((500,400))
self.surface.fill((255,255,255))
self.snake = Snake(self.surface)
self.snake.draw()
def run(self):
running = True
while running:
for event in pygame.event.get():
if event.type == KEYDOWN:
if event.key == K_ESCAPE or event.key == K_q:
running = False
if event.key == K_DOWN or event.key == K_s:
self.snake.move_down()
if event.key == K_UP or event.key == K_w:
self.snake.move_up()
if event.key == K_LEFT or event.key == K_a:
self.snake.move_left()
if event.key == K_RIGHT or event.key == K_d:
self.snake.move_right()
if event.type == QUIT:
running = False
Create move methods in the Snake
class Snake:
def __init__(self,parent_surface):
self.parent_surface = parent_surface
self.block = pygame.image.load('images/block.jpg').convert()
self.x = 100
self.y = 100
def draw(self):
self.parent_surface.fill((255,255,255))
self.parent_surface.blit(self.block,(self.x,self.y))
pygame.display.flip()
def move_down(self):
self.y += 10
self.draw()
def move_up(self):
self.y -= 10
self.draw()
def move_left(self):
self.x -= 10
self.draw()
def move_right(self):
self.x += 10
self.draw()
Create the move methods in the Snake
class
class Snake:
def __init__(self,parent_surface):
self.parent_surface = parent_surface
self.block = pygame.image.load('images/block.jpg').convert()
self.x = 100
self.y = 100
def draw(self):
self.parent_surface.fill((255,255,255))
self.parent_surface.blit(self.block,(self.x,self.y))
pygame.display.flip()
def move_down(self):
Code is now functioning
import pygame
from pygame.locals import *
class Snake:
def __init__(self,parent_surface):
self.parent_surface = parent_surface
self.block = pygame.image.load('images/block.jpg').convert()
self.x = 100
self.y = 100
def draw(self):
self.parent_surface.fill((255,255,255))
self.parent_surface.blit(self.block,(self.x,self.y))
pygame.display.flip()
def move_down(self):
self.y += 10
self.draw()
def move_up(self):
self.y -= 10
self.draw()
def move_left(self):
self.x -= 10
self.draw()
def move_right(self):
self.x += 10
self.draw()
class Game:
def __init__(self):
pygame.init()
self.surface = pygame.display.set_mode((500,400))
self.surface.fill((255,255,255))
self.snake = Snake(self.surface)
self.snake.draw()
def run(self):
running = True
while running:
for event in pygame.event.get():
if event.type == KEYDOWN:
if event.key == K_ESCAPE or event.key == K_q:
running = False
if event.key == K_DOWN or event.key == K_s:
self.snake.move_down()
if event.key == K_UP or event.key == K_w:
self.snake.move_up()
if event.key == K_LEFT or event.key == K_a:
self.snake.move_left()
if event.key == K_RIGHT or event.key == K_d:
self.snake.move_right()
if event.type == QUIT:
running = False
if __name__ == '__main__':
game = Game()
game.run()