import pygame
from random import randint

object_position = []
object_size = ()
object_speed = []
size = (640, 400)
sch_pos = size[0]/2 - size[0]/8   #Mittig - Hälfte der Schlägerbreite
sch_speed = 0           #VArtiable zur festlegung der Position
sch_base_speed = 7      #Verschiebungsgeschwindigkeit

game_over = False       #Festlegen wenn Game Over

wuerfel = randint(1, 7) # Ganze Zufallszahl aus [1, …, 7[

def init():
    global object_position
    global object_size, object_speed
    global object_image
    global paddle_speed
    object_image = pygame.image.load('ohm.png')

    # Initialisierung der Bibliothek pygame
    pygame.init()

    # Vorbereiten der Oberfäche
    pygame.display.set_mode(size)
    pygame.display.set_caption("Pong!")

    # Spieldaten initialisieren
    object_position = [size[0]/2, size[1]/2]
    object_speed = [randint(1,7), randint(1,7)]
    object_size = (50, 50)

def draw():
    # Benötigte Farben als RGB-Werte
    black = (0, 0, 0)
    red = (255, 0, 0)

    # Zeichnen des aktuellen Spielzustands
    window = pygame.display.get_surface()
    window.fill(black)
    window.blit(object_image, object_position)
    #Schläger Größe ans Fenster Anspassen
    schläger = pygame.Rect(sch_pos,
                           size[1]-22,
                           size[0]/4,
                           size[1]/25)
    pygame.draw.rect(window, red, schläger)     # und Zeichnen, mit der position schläger

    if game_over:
        font = pygame.font.SysFont(None, 60)
        text = font.render("GAME OVER", True, (255, 255, 255))
        window.blit(text, (180, 150))

    pygame.display.flip()
    # "Umschalten" der aktuellen Anzeige auf die
    # gerade gezeichnete Anzeige

def update():
    global object_position
    global object_speed
    global sch_pos
    global game_over

    sch_pos += sch_speed

    # Abmessungen des Game-Fensters ermitteln
    window = pygame.display.get_surface()
    window_size = (window.get_width(),
                   window.get_height())
    
    #Hier wird das erste mal die Dimensionen festgelegt, wichtig für Kollision
    logo_rect = pygame.Rect(
    object_position[0],
    object_position[1],
    object_size[0],
    object_size[1]
    )

    #eigentlich kann ich den aus draw() übernehmen aber ich hab vergessen wie
    schläger = pygame.Rect(
        sch_pos,
        size[1]-22,
        size[0]/4,
        size[1]/25
    )
    #y-Richtung umdrehen
    if logo_rect.colliderect(schläger) and object_speed[1] > 0:
        object_speed[1] *= -1


    #Bouncing
    for dim in [0, 1]:
        
        # Bewegung des Objekts
        object_position[dim] += object_speed[dim]
        # Bouncing?
        if object_position[dim] < 0:
            object_speed[dim] *= -1
        end = object_position[dim] + object_size[dim]
        if end > window_size[dim]:
            object_speed[dim] *= -1

    if object_position[1] + object_size[1] >= size[1]:      #Position = Wert von 0 bis 400 - oben links, size[o] = 40 (oderso), wenn die zusammen gleich oder größer sind als das Window in Vertikal, berührt das Logo die untere Kante
        game_over = True

        


def user_input():
    global sch_speed
    global sch_base_speed
    global game_over

    # Alle Events seit dem letzten Durchlauf
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            return False
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_ESCAPE:
                return False
            if event.key == pygame.K_LEFT:      #Linksclick
                sch_speed = -sch_base_speed
            if event.key == pygame.K_RIGHT:     #Rechtsclick
                sch_speed = sch_base_speed

        if event.type == pygame.KEYUP:
            if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:       #Key wieder hoch
                sch_speed = 0           

    return True

init()

running = True

clock=pygame.time.Clock()

while running:
    clock.tick(60) # max 60 frames / sec
    running = user_input()
    update()
    draw()
