Assignment 1 commit: Moon & Apollo
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
import pygame
|
||||
|
||||
from game.game import Game
|
||||
from numeric.compute import rot_2D, matmul
|
||||
|
||||
|
||||
class Moon(Game):
|
||||
def __init__(self):
|
||||
super().__init__("Moon")
|
||||
self.moon_position = None
|
||||
self.center = (540, 355)
|
||||
self.moon_distance = [[200], [0]]
|
||||
self.angle = 0
|
||||
|
||||
def update_game(self):
|
||||
self.angle = pygame.time.get_ticks() / 1000 # Zeit = Winkel
|
||||
rot = rot_2D(self.angle)
|
||||
rotated = matmul(rot, self.moon_distance)
|
||||
self.moon_position = (
|
||||
int(self.center[0] + rotated[0][0]),
|
||||
int(self.center[1] + rotated[1][0])
|
||||
)
|
||||
return True
|
||||
|
||||
def draw_game(self):
|
||||
self.screen.fill((30,30,30))
|
||||
pygame.draw.circle(self.screen, (0,0,255), self.center, 12)
|
||||
pygame.draw.circle(self.screen, (255,255,255), self.moon_position, 8)
|
||||
pygame.display.flip()
|
||||
@@ -0,0 +1,26 @@
|
||||
import pygame
|
||||
|
||||
from game.Moon import Moon
|
||||
from numeric.compute import rot_2D, matmul
|
||||
|
||||
|
||||
class Apollo(Moon):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.orbiter_position = None
|
||||
self.orbiter_distance = [[50], [0]]
|
||||
|
||||
def update_game(self):
|
||||
super().update_game()
|
||||
rot = rot_2D(-self.angle)
|
||||
rotated = matmul(rot, self.orbiter_distance)
|
||||
self.orbiter_position = (
|
||||
int(self.moon_position[0] + rotated[0][0]),
|
||||
int(self.moon_position[1] + rotated[1][0])
|
||||
)
|
||||
return True
|
||||
|
||||
def draw_game(self):
|
||||
super().draw_game()
|
||||
pygame.draw.circle(self.screen, (255,0,0), self.orbiter_position, 4)
|
||||
pygame.display.flip()
|
||||
@@ -0,0 +1,53 @@
|
||||
import pygame
|
||||
|
||||
class Game:
|
||||
|
||||
def __init__(self, title, fps=60, size=(1080, 720)):
|
||||
self.title = title
|
||||
self.fps = fps
|
||||
self.size = size
|
||||
self.clock = pygame.time.Clock()
|
||||
self.dt = 0
|
||||
self.screen = None
|
||||
|
||||
def init_game(self):
|
||||
pygame.init()
|
||||
pygame.display.set_caption(self.title)
|
||||
self.screen = pygame.display.set_mode(self.size)
|
||||
|
||||
|
||||
def game_loop(self):
|
||||
while True:
|
||||
# Berechnung der Zeitdifferenz seit dem letzten Frame
|
||||
self.dt = self.clock.tick(self.fps) / 1000
|
||||
if self.event_handling() == False:
|
||||
break
|
||||
if self.update_game() == False:
|
||||
break
|
||||
self.draw_game()
|
||||
|
||||
def exit_game(self):
|
||||
pygame.quit()
|
||||
|
||||
def event_handling(self): # bleibt in der Unterklasse unverändert
|
||||
for event in pygame.event.get():
|
||||
if not self.handle_event(event):
|
||||
return False
|
||||
return True
|
||||
|
||||
def handle_event(self, event): # wird in der Unterklasse überschrieben
|
||||
if event.type == pygame.QUIT:
|
||||
return False
|
||||
return True
|
||||
|
||||
def update_game(self):
|
||||
return True
|
||||
|
||||
def draw_game(self):
|
||||
pygame.display.flip()
|
||||
|
||||
def run(self):
|
||||
self.init_game()
|
||||
self.game_loop()
|
||||
self.exit_game()
|
||||
|
||||
Reference in New Issue
Block a user