Prog3A_JW/lab_01/apollo.py
2025-10-31 14:50:05 +01:00

65 lines
1.8 KiB
Python

import os
from dotenv import load_dotenv, dotenv_values
from game import Game
from moon import Moon
from compute import *
import pygame
load_dotenv()
title = str(os.getenv("TITLE"))
fps = int(os.getenv("FPS"))
size = tuple(map(int, os.getenv("SIZE").split(',')))
theta = float(os.getenv("THETA"))
position_moon = tuple(map(int, os.getenv("POSITION_MOON").split(',')))
WHITE = (255, 255, 255)
BLACK = (0,0,0)
RED = (255,0,0)
BLUE = (0,0, 255)
EARTH_RADIUS = 100
MOON_RADIUS = 20
AP_RADIUS = 5
class Apollo(Moon):
def __init__(self, title, fps, size, position_moon, theta):
super().__init__(title, fps, size)
self.position_moon = position_moon
self.position_ap = (0, 50)
self.theta = theta
self.theta_2 = -0.02
self.rot_moon = rot_2D(self.theta)
self.rot_ap = rot_2D(self.theta_2)
self.rel_position_ap = (0,30)
self.position_ap = (self.position_moon[0] + self.rel_position_ap[0],
self.position_moon[1] + self.rel_position_ap[1])
def update_game(self):
super().update_game()
new_rel_ap = matmul(self.rot_ap, transpose([list(self.rel_position_ap)]))
self.rel_position_ap = (new_rel_ap[0][0], new_rel_ap[1][0])
self.position_ap = (self.position_moon[0] + self.rel_position_ap[0],
self.position_moon[1] + self.rel_position_ap[1])
return True
def draw_game(self):
super().draw_game()
def draw_circles(self):
super().draw_circles()
self.draw_circle(self.position_ap, AP_RADIUS, RED)
def draw_circle(self, position, radius, color):
super().draw_circle(position, radius, color)
if __name__ == "__main__":
# created by me and only me
game = Apollo(title, fps, size, position_moon, theta)
game.run()