import os import time from random import choice import pygame as pg from .snake import Snake from .food import Food class Game: def __init__(self) -> None: self.screen_widht = 780 self.screen_hight = 600 self.clock = pg.time.Clock() pg.font.init() self.font = pg.font.SysFont(choice(pg.font.get_fonts()), 72) self.score = 0 self.title = 'Snakessss' self.done = False self.bg = pg.image.load(os.path.join(os.curdir, 'snake', 'img', 'bg.png')) self.screen = pg.display.set_mode((self.screen_widht, self.screen_hight)) self.fps = 60 def game_init(self): pg.init() def set_title(self): pg.display.set_caption(self.title) def set_bg(self): self.screen.blit(self.bg, (0, 0)) def gameover(self): self.done = True surf = self.font.render('Game over', True, (20, 20, 20)) rect = surf.get_rect() rect.midtop = (390, 250) self.screen.blit(surf, rect) pg.display.flip() time.sleep(5) pg.quit() def mainloop(): game = Game() snake =Snake(90, 300) foods_array = [] def update_game_window(): while len(foods_array) < 2: food = Food() if food.get_coords() not in snake.get_coords(): foods_array.append(food) for f in foods_array: if snake.get_head_coords() == f.get_coords(): foods_array.remove(f) snake.length += 1 game.set_bg() snake.draw(game.screen) for f in foods_array: f.draw(game.screen) pg.display.update() if snake.impacted: game.gameover() while not game.done: for event in pg.event.get(): if event.type == pg.QUIT: game.done = True pressed = pg.key.get_pressed() if pressed[pg.K_UP]: if snake.direction != 'down': snake.direction = 'up' if pressed[pg.K_DOWN]: if snake.direction != 'up': snake.direction = 'down' if pressed[pg.K_LEFT]: if snake.direction != 'right': snake.direction = 'left' if pressed[pg.K_RIGHT]: if snake.direction != 'left': snake.direction = 'right' update_game_window() game.clock.tick(game.fps)