Код IT
← Каталог

Python — Racing — Мини-карта (radar)

Фрагмент из «Python — Racing»: Мини-карта (radar).

python spinoffencyclopedia9-04-razrabotka-igr-praktikum-razrabotki-igr-4 embed URL статья в энциклопедии
Python main.py
import pygame
import config as C


class Minimap:
    def __init__(self):
        self.size = 120
        self.x = C.SCREEN_W - self.size - 12
        self.y = 12

    def _scale(self, px, py):
        sx = self.x + self.size // 2 + int((px - C.TRACK_CX) * 0.12)
        sy = self.y + self.size // 2 + int((py - C.TRACK_CY) * 0.12)
        return sx, sy

    def draw(self, surface, player, rivals):
        rect = pygame.Rect(self.x, self.y, self.size, self.size)
        pygame.draw.rect(surface, (0, 0, 0, 160), rect)
        pygame.draw.rect(surface, (200, 200, 210), rect, 2)
        pygame.draw.ellipse(
            surface, (80, 80, 85),
            rect.inflate(-20, -20), 1,
        )
        for rival in rivals:
            rx, ry = self._scale(rival.car.x, rival.car.y)
            pygame.draw.circle(surface, rival.car.color, (rx, ry), 4)
        px, py = self._scale(player.x, player.y)
        pygame.draw.circle(surface, (255, 80, 80), (px, py), 5)
import pygame
import config as C


class Minimap:
    def __init__(self):
        self.size = 120
        self.x = C.SCREEN_W - self.size - 12
        self.y = 12

    def _scale(self, px, py):
        sx = self.x + self.size // 2 + int((px - C.TRACK_CX) * 0.12)
        sy = self.y + self.size // 2 + int((py - C.TRACK_CY) * 0.12)
        return sx, sy

    def draw(self, surface, player, rivals):
        rect = pygame.Rect(self.x, self.y, self.size, self.size)
        pygame.draw.rect(surface, (0, 0, 0, 160), rect)
        pygame.draw.rect(surface, (200, 200, 210), rect, 2)
        pygame.draw.ellipse(
            surface, (80, 80, 85),
            rect.inflate(-20, -20), 1,
        )
        for rival in rivals:
            rx, ry = self._scale(rival.car.x, rival.car.y)
            pygame.draw.circle(surface, rival.car.color, (rx, ry), 4)
        px, py = self._scale(player.x, player.y)
        pygame.draw.circle(surface, (255, 80, 80), (px, py), 5)