82 lines
No EOL
2.7 KiB
Python
82 lines
No EOL
2.7 KiB
Python
#!/usr/bin/python3
|
|
from math import sin,cos,radians
|
|
from time import sleep
|
|
import pygame
|
|
def berechne_dreieck(alpha,c):
|
|
alpha = radians(alpha)
|
|
a = cos(alpha)*c# x
|
|
b = -sin(alpha)*c# y
|
|
return a,b
|
|
|
|
def get_debug_text():
|
|
def text(text,line_counter):
|
|
debug_text = default_font.render(str(text), True, (0,0,0))
|
|
screen.blit(debug_text,(0,line_counter*default_font.get_height()))
|
|
|
|
line_counter = 1
|
|
globalvars = globals()
|
|
for a in globalvars:
|
|
text(f"{str(a)} = {str(globalvars[a])}",line_counter)
|
|
line_counter += 1
|
|
|
|
def centered_text(text=str,pos=tuple,color=tuple):
|
|
text = default_font.render(str(text), True, color)
|
|
screen.blit(text,(pos[0]-text.get_width()/2,pos[1]))
|
|
def get_best_size():
|
|
if screensize[0] <= screensize[1]:
|
|
best = screensize[0]
|
|
else:
|
|
best = screensize[1]
|
|
return best
|
|
|
|
pygame.init()
|
|
clock = pygame.time.Clock()
|
|
screen = pygame.display.set_mode([500,500],pygame.RESIZABLE)
|
|
screensize = pygame.display.get_window_size()
|
|
default_font = pygame.font.SysFont("sans", 14)
|
|
|
|
start_pos = screensize[0]/2,screensize[1]/2#(10,screensize[1]-10)
|
|
winkel = 0
|
|
best_radios = get_best_size()/2-20
|
|
|
|
running = True
|
|
if __name__ == "__main__":
|
|
while running:
|
|
screen.fill((255,255,255))
|
|
pressed_keys = pygame.key.get_pressed()
|
|
|
|
if pressed_keys[pygame.K_ESCAPE]:
|
|
exit()
|
|
if pressed_keys[pygame.K_UP]:
|
|
winkel += 1
|
|
if pressed_keys[pygame.K_DOWN]:
|
|
winkel -= 1
|
|
|
|
for event in pygame.event.get():
|
|
if event.type == pygame.QUIT:
|
|
exit()
|
|
if event.type == pygame.WINDOWRESIZED:
|
|
screensize = pygame.display.get_window_size()
|
|
start_pos = screensize[0]/2,screensize[1]/2#(10,screensize[1]-10)
|
|
screen.fill((0,0,0))
|
|
best_radios = get_best_size()/2-20
|
|
if winkel >= 360 or winkel <= -1:
|
|
winkel = 0
|
|
a,b = berechne_dreieck(winkel,best_radios)#screensize[0]*screensize[1])
|
|
|
|
end_pos = start_pos[0]+a,start_pos[1]+b
|
|
# draw c schwarz
|
|
pygame.draw.line(screen,(0,0,0),start_pos,end_pos,3)
|
|
centered_text("c",(end_pos[0]+10,end_pos[1]+10),(0,0,0))
|
|
# draw a rot
|
|
pygame.draw.line(screen,(255,0,0),start_pos,(start_pos[0]+a,start_pos[1]),3)
|
|
centered_text("a",(start_pos[0]+10,start_pos[1]+10),(255,0,0))
|
|
# draw b blau
|
|
pygame.draw.line(screen,(0,0,255),(start_pos[0]+a,start_pos[1]),(start_pos[0]+a,start_pos[1]+b),3)
|
|
centered_text("b",(start_pos[0]+a+10,start_pos[1]+10),(0,0,255))
|
|
|
|
get_debug_text()
|
|
pygame.display.flip()
|
|
clock.tick(30)
|
|
#sleep(1)
|
|
winkel += 1 |