engine-sim/main.py
Aidan Haas 17fbfb3426 Init
2025-06-13 12:11:29 -04:00

80 lines
2.2 KiB
Python

# Example file showing a circle moving on screen
import pygame
import math
from engine import Engine
# pygame setup
pygame.init()
screen = pygame.display.set_mode((1280, 720))
clock = pygame.time.Clock()
running = True
dt = 0
player_pos = pygame.Vector2(screen.get_width() / 2, screen.get_height() / 2)
rpm_pos = pygame.Vector2(screen.get_width() * 0.25, screen.get_height() / 2)
spd_pos = pygame.Vector2(screen.get_width() * 0.75, screen.get_height() / 2)
gauge_radius = screen.get_height() / 5
# Angle for gauge
angle_rad = math.radians(145)
needle_color = "black"
needle_width = 4
tip_radius = needle_width
offset_vector = pygame.Vector2(
math.cos(angle_rad) * gauge_radius,
math.sin(angle_rad) * gauge_radius
)
e = engine()
while running:
# poll for events
# pygame.QUIT event means the user clicked X to close your window
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# fill the screen with a color to wipe away anything from last frame
screen.fill("white")
# RPM
# Min = 0 at 45 degrees
# Max = 8 at 315 degrees
pygame.draw.circle(screen, "red", rpm_pos, gauge_radius)
rpm_tip = rpm_pos + offset_vector
pygame.draw.line(screen, needle_color, rpm_pos, rpm_tip, needle_width)
pygame.draw.circle(screen, needle_color, rpm_tip, tip_radius)
# Trans Speed
# Min = 0 at 45 degrees
# Max = 160 at 315 degrees
pygame.draw.circle(screen, "red", spd_pos, gauge_radius)
spd_tip = spd_pos + offset_vector
pygame.draw.line(screen, needle_color, spd_pos, spd_tip, needle_width)
pygame.draw.circle(screen, needle_color, spd_tip, tip_radius)
pygame.draw.circle(screen, "red", player_pos, 40)
keys = pygame.key.get_pressed()
if keys[pygame.K_w]:
player_pos.y -= 300 * dt
if keys[pygame.K_s]:
player_pos.y += 300 * dt
if keys[pygame.K_a]:
player_pos.x -= 300 * dt
if keys[pygame.K_d]:
player_pos.x += 300 * dt
# flip() the display to put your work on screen
pygame.display.flip()
# limits FPS to 60
# dt is delta time in seconds since last frame, used for framerate-
# independent physics.
dt = clock.tick(60) / 1000
pygame.quit()