From b49a8a9f6aac652ffcf5bc393bf10735c8b45cd6 Mon Sep 17 00:00:00 2001 From: Kristofers Solo Date: Sun, 10 Apr 2022 17:36:52 +0300 Subject: [PATCH] added score system --- .../source/assets/sprites/cobblestone.jpeg | Bin 0 -> 31264 bytes pygame/snake/source/snake.py | 61 ++++++++++++------ 2 files changed, 41 insertions(+), 20 deletions(-) create mode 100644 pygame/snake/source/assets/sprites/cobblestone.jpeg diff --git a/pygame/snake/source/assets/sprites/cobblestone.jpeg b/pygame/snake/source/assets/sprites/cobblestone.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..80aeca959425314aa105db96ee3bc8cbb7d189cf GIT binary patch literal 31264 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 literal 0 HcmV?d00001 diff --git a/pygame/snake/source/snake.py b/pygame/snake/source/snake.py index bc4e14f4..a1e40dd6 100755 --- a/pygame/snake/source/snake.py +++ b/pygame/snake/source/snake.py @@ -2,6 +2,7 @@ # Date - 10.04.2022 # Title - Snake +from audioop import mul import pygame from random import randrange, randint from os.path import abspath, dirname, join @@ -9,8 +10,8 @@ from os.path import abspath, dirname, join CELL_SIZE = 30 ROWS, COLUMNS = 30, 20 WIDTH, HEIGHT = ROWS * CELL_SIZE, COLUMNS * CELL_SIZE - -WINDOW = pygame.display.set_mode((WIDTH, HEIGHT)) +WINDOW_HEIGHT = HEIGHT + 100 +WINDOW = pygame.display.set_mode((WIDTH, WINDOW_HEIGHT)) pygame.font.init() pygame.display.set_caption("Snake") @@ -19,6 +20,7 @@ SPRITE_PATH = join(BASE_PATH, "assets", "sprites") apple_texture = pygame.transform.scale(pygame.image.load(join(SPRITE_PATH, "golden_apple.png")), (CELL_SIZE, CELL_SIZE)) poison_texture = pygame.transform.scale(pygame.image.load(join(SPRITE_PATH, "poison.png")), (CELL_SIZE, CELL_SIZE)) +cobblestone_texture = pygame.transform.scale(pygame.image.load(join(SPRITE_PATH, "cobblestone.jpeg")), (CELL_SIZE, CELL_SIZE)) RED = (255, 0, 0) BLACK = (0, 0, 0) @@ -43,18 +45,18 @@ class Cube: self.direction = direction self.pos = (self.pos[0] + self.direction[0], self.pos[1] + self.direction[1]) - def draw(self, surface=WINDOW, eyes=False) -> None: + def draw(self, eyes=False) -> None: distance = WIDTH // ROWS i, j = self.pos - pygame.draw.rect(surface, self.color, (i * distance + 1, j * distance + 1, distance - 2, distance - 2)) + pygame.draw.rect(WINDOW, self.color, (i * distance + 1, j * distance + 1, distance - 2, distance - 2)) if eyes: center = distance // 2 radius = 3 circle_middle = (i * distance + center - radius, j * distance + 8) circle_middle_2 = (i * distance + distance - radius * 2, j * distance + 8) - pygame.draw.circle(surface, BLACK, circle_middle, radius) - pygame.draw.circle(surface, BLACK, circle_middle_2, radius) + pygame.draw.circle(WINDOW, BLACK, circle_middle, radius) + pygame.draw.circle(WINDOW, BLACK, circle_middle_2, radius) class Snake: @@ -118,16 +120,17 @@ class Snake: self.turns.pop(head_pos) else: if walls: # end game if goes into the wall - if head.direction[0] == -1 and head.pos[0] <= 0: # left to right + head.move(head.direction) + if head.direction[0] == -1 and head.pos[0] < 0: # left to right end_screen() - if head.direction[0] == 1 and head.pos[0] >= ROWS - 1: # right to left + if head.direction[0] == 1 and head.pos[0] >= ROWS: # right to left end_screen() - if head.direction[1] == 1 and head.pos[1] >= COLUMNS - 1: # bottom to top + if head.direction[1] == 1 and head.pos[1] >= COLUMNS: # bottom to top end_screen() - if head.direction[1] == -1 and head.pos[1] <= 0: # top to bottom + if head.direction[1] == -1 and head.pos[1] < 0: # top to bottom end_screen() else: # move player to other screen size @@ -184,15 +187,27 @@ class Snack: self.pos = (randrange(ROWS), randrange(COLUMNS)) -def draw_grid(surface=WINDOW) -> None: - size_between = WIDTH // ROWS +def draw_grid() -> None: x, y = 0, 0 for _ in range(ROWS): - x += size_between - y += size_between + x += CELL_SIZE + pygame.draw.line(WINDOW, WHITE, (x, 0), (x, HEIGHT)) + for _ in range(COLUMNS): + y += CELL_SIZE + pygame.draw.line(WINDOW, WHITE, (0, y), (WIDTH, y)) - pygame.draw.line(surface, WHITE, (x, 0), (x, HEIGHT)) - pygame.draw.line(surface, WHITE, (0, y), (WIDTH, y)) + +def draw_score(snakes) -> None: + for index, snake in enumerate(snakes): + score_label = set_font(40).render(f"Score {len(snake.body) - 1}", 1, snake.color) + WINDOW.blit(score_label, (10 + (index * (WIDTH - score_label.get_width() - 20)), (WINDOW_HEIGHT - score_label.get_height()))) + + +def collision_check(snakes, snack) -> None: + for snake in snakes: + for block in snake.body: + if block.pos == snack.pos: + snack.randomize() def end_screen() -> None: @@ -211,7 +226,9 @@ def main() -> None: snakes.append(snake_two) apple = Snack(apple_texture) + collision_check(snakes, apple) poison = Snack(poison_texture) + collision_check(snakes, poison) while run: clock.tick(FPS) @@ -223,27 +240,31 @@ def main() -> None: for snake in snakes: snake.move() - if snake.body[0].pos == apple.pos: snake.add_cube() apple = Snack(apple_texture) + collision_check(snakes, apple) if snake.body[0].pos == poison.pos: snake.remove_cube() poison = Snack(poison_texture) + collision_check(snakes, poison) for i in range(len(snake.body)): if snake.body[i].pos in list(map(lambda z: z.pos, snake.body[i + 1:])): - for snake in snakes: - print(f"{snake.number} snake score: {len(snake.body)}") run = False WINDOW.fill(BLACK) draw_grid() + draw_score(snakes) for snake in snakes: snake.draw() apple.draw_snack() poison.draw_snack() + if walls: + for i in range(ROWS): + cobble_rect = pygame.Rect(i * CELL_SIZE, HEIGHT, WIDTH, CELL_SIZE) + WINDOW.blit(cobblestone_texture, cobble_rect) pygame.display.update() @@ -254,7 +275,7 @@ def main_menu() -> None: while True: WINDOW.fill(BLACK) title_label = set_font(50).render("Press any key to start...", 1, WHITE) - WINDOW.blit(title_label, (WIDTH / 2 - title_label.get_width() / 2, HEIGHT / 2 - title_label.get_height() / 2)) + WINDOW.blit(title_label, (WIDTH / 2 - title_label.get_width() / 2, WINDOW_HEIGHT / 2 - title_label.get_height() / 2)) pygame.display.update() for event in pygame.event.get(): if event.type == pygame.QUIT: