Pygame racing game
Here is the code:
import pygame
import math
import road
class Game:
def __init__(self):
#window params
self.window_size = (1920, 1080)
self.FPS = 60
self.sc = pygame.display.set_mode(self.window_size, pygame.FULLSCREEN)
self.clock = pygame.time.Clock()
self.done = False
#colors
self.BLACK = (0, 0, 0)
self.WHITE = (255, 255, 255)
self.GREEN = (0, 255, 0)
#car params
self.size = (10, 50)
self.angle = 5
self.speed = 10
self.x = self.window_size[0] // 2 - self.size[0]
self.y = self.window_size[1] // 2 - self.size[1]
self.d2r = math.pi / 180
#car
self.rot = 0
self.rot_speed = 5
self.image_orig = pygame.Surface((50, 10))
self.image_orig.set_colorkey(self.BLACK)
self.image_orig.fill(self.GREEN)
self.image = self.image_orig.copy()
self.image.set_colorkey(self.BLACK)
self.rect = self.image.get_rect()
self.rect.center = (self.window_size[0] // 2, self.window_size[1] // 2)
def draw_road(self):
pygame.draw.circle(self.sc, (255, 255, 255), (1920 // 2, 1080 // 2), 500, 100)
def draw_car(self):
pygame.draw.rect(
self.sc,
(255, 255, 255),
(self.x, self.y, self.size[0], self.size[1])
)
def main_loop(self):
while not self.done:
self.clock.tick(self.FPS)
self.sc.fill(self.BLACK)
for i in pygame.event.get():
if i.type == pygame.QUIT:
self.done = True
# self.draw_car()
self.draw_road()
old_center = self.rect.center
# self.rot = (self.rot + self.rot_speed) % 360
new_image = pygame.transform.rotate(self.image_orig, self.rot)
self.rect = new_image.get_rect()
self.rect.center = old_center
self.sc.blit(new_image, self.rect)
pygame.display.update()
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
self.rot += self.rot_speed
self.rot = self.rot % 360
if keys[pygame.K_RIGHT]:
self.rot -= self.rot_speed
self.rot = self.rot % 360
if keys[pygame.K_UP]:
self.x += self.speed * math.cos(self.rot * self.d2r)
self.y += self.speed * -math.sin(self.rot * self.d2r)
self.rect.center = (self.x, self.y)
if keys[pygame.K_DOWN]:
self.x -= self.speed * math.cos(self.rot * self.d2r)
self.y -= self.speed * -math.sin(self.rot * self.d2r)
self.rect.center = (self.x, self.y)
game = Game()
game.main_loop()
It should be something like a racing game. The circle is a race track. Now the car goes beyond this race track. How do I add the boundaries of this circle?
0