import pygame
import random
import sas_pygame as sas

# -------------------------------------------------
# Konfiguration / Dateinamen deiner Bilder
# -------------------------------------------------
WIDTH = 600
HEIGHT = 400

class Turner:

    def __init__(self, pX, pY, pWinkelArme, pWinkelAenderung):    
        self.xPos = pX
        self.yPos = pY
        self.winkelarme = pWinkelArme
        self.winkelAenderung = pWinkelAenderung
        rumpf = sas.Rectangle(self.xPos - 3, self.yPos - 18, 6, 110, "red")
        self.figur = sas.Sprite(rumpf)
        kopf = sas.Circle(self.xPos - 18, self.yPos - 54, 18, "red")
        self.figur.add(kopf)
        beinLinks =sas.Rectangle(self.xPos - 3, self.yPos+82,6, 110, "red" )
        beinRechts =sas.Rectangle(self.xPos - 3, self.yPos+82,6, 110, "red" )
        beinLinks.turn(self.xPos, self.yPos + 82, -10)
        beinRechts.turn(self.xPos, self.yPos + 82, 10)
        self.figur.add(beinLinks)
        self.figur.add(beinRechts)
        self.armLinks  = sas.Rectangle(self.xPos - 3, self. yPos, 6, 90, "red")
        self.armRechts  = sas.Rectangle(self.xPos - 3, self. yPos, 6, 90, "red")
        self.armLinks.turn(self.xPos, self.yPos, -self.winkelarme)
        self.armRechts.turn(self.xPos, self.yPos, self.winkelarme)
        self.figur.add(self.armLinks)
        self.figur.add(self.armRechts)

    def bewegeArme(self, pMinWinkel, pMaxWinkel):
        if self.winkelarme > pMaxWinkel or self.winkelarme < pMinWinkel:
            self.winkelAenderung = - self.winkelAenderung
        self.armLinks.turn(self.xPos, self.yPos, -self.winkelAenderung)
        self.armRechts.turn(self.xPos, self.yPos, self.winkelAenderung)
        self.winkelarme += self.winkelAenderung
        

class TurnerMitHantel(Turner):

    def __init__(self, pX, pY, pWinkelArme, pWinkelAenderung):
        super().__init__(pX, pY, pWinkelArme, pWinkelAenderung)
        mx = self.armLinks.getCenterX()
        my = self.armLinks.getCenterY()
        rechteck = sas.Rectangle(mx - 10, my -3, 20, 6, "green")
        self.hantelLinks = sas.Sprite(rechteck)
        kreis1 = sas.Circle(mx - 12, my - 5, 5, "green")
        kreis2 = sas.Circle(mx + 8, my - 5, 5, "green")
        self.hantelLinks.add(kreis1)
        self.hantelLinks.add(kreis2)
        self.hantelLinks.turn(-self.winkelarme)
        self.hantelLinks.setDirection(180 - self.winkelarme)
        self.hantelLinks.move(45)
        self.hantelRechts = self.hantelLinks.clone()
        self.hantelRechts.flipHorizontal()
        self.hantelRechts.move(2*(pX- self.hantelLinks.get_center_x()), 0)

    def bewegeArme(self, pMinWinkel, pMaxWinkel):
        super().bewegeArme(pMinWinkel, pMaxWinkel)
        self.hantelLinks.turn(self.xPos, self.yPos, -self.winkelAenderung)
        self.hantelRechts.turn(self.xPos, self.yPos, self.winkelAenderung)

class Vorturner:
    def __init__(self, view):
        self.view = view
        sas.Rectangle( 0, 350, 600, 50, "blue")
        self.figur0 = Turner(100, 160, 60, 2)
        self.figur1 = TurnerMitHantel(300, 160, 90, 3)
        self.figur2 = Turner(500, 160, 90, 1)  
     
    def update(self):
            self.figur0.bewegeArme(50, 135)
            self.figur1.bewegeArme(60, 150)
            self.figur2.bewegeArme(0, 90)

# -------------------------------------------------
# Hauptprogramm
# -------------------------------------------------
def main():
    view = sas.View(600, 400, "white", "Turnverein")
    tv = Vorturner(view)
    while view.running:
        view.step()
        tv.update()
        
    view.quit()


main()