from play_and_code import *
import random

tick_speed(60)

size = 50
FIELD_WIDTH = WINDOW_WIDTH 
FIELD_HEIGHT = WINDOW_HEIGHT

snake = [(FIELD_WIDTH/2, FIELD_HEIGHT/2)]
phase = 0
dir = (0,0)

def new_fruit():
    # ZufÃ¤llige position fÃ¼r die Frucht bestimmen
    x = random.randint(0, FIELD_WIDTH-size)
    y = random.randint(0, FIELD_HEIGHT-size)
    return (x,y)

fruit = new_fruit()

def main():
    global dir, snake, size, fruit, phase
    if phase == 0:
        if is_key_pressed(UP):
            dir = (0,-5)
        elif is_key_pressed(DOWN):
            dir = (0,5)
        elif is_key_pressed(RIGHT):
            dir = (5,0)
        elif is_key_pressed(LEFT):
            dir = (-5,0)
                
        # Dir setzen wenn links, rechts oder unten gedrÃ¼ckt wird

        #cur current
        cur = snake[0]
        snake[0] = (snake[0][0] + dir[0], snake[0][1] + dir[1])
        
        for i in range(1, len(snake)):
            tmp = snake[i]
            snake[i] = cur
            cur = tmp
            i = i + 1

        # Die Frucht anzeigen

        fruit_rect = rect(GREEN, fruit[0], fruit[1], size, size )

        # Alle Teile der Schlange in einer anderen Farbe als die Frucht anzeigen
        
        for part in snake:
            rect(RED, part[0] , part[1], size, size )
        
        
        
        # Schlange verlÃ¤ngern wenn der Kopf auf der gleichen Stelle wie die Frucht ist.
        # Die neue position lÃ¤sst sich mit: (last[0] - dir[0], last[1] - dir[1])
        # wobei last das momentan letzte teil der Schlange ist

        snake_head = rect(RED, snake[0][0] , snake[0][1], size, size )
        
        if intersects(fruit_rect, snake_head):
            last = snake[len(snake)-1]
            snake.append((last[0] - dir[0], last[1] - dir[1]))
            fruit = new_fruit()
            

        for j in range(1,len(snake)):
            if snake[0] == snake[j]:
                phase = 2
        
        if snake[0][0] == FIELD_WIDTH or snake[0][0] < 0 or snake[0][1] == FIELD_HEIGHT or snake[0][1] < 0:
            phase = 2

        # Das spiel mit der exit() funktion beenden wenn der Kopf ein anderes Teil der Schlange berÃ¼hrt
        
        # Die Punktzahl anzeigen

        text("Score: " + str(len(snake)-1), WHITE, 100, 30, 36  )
        
        
        # Das spiel mit der exit() funktion beenden wenn der Kopf auÃŸerhalb des Spielfelds ist

    if phase == 2:
        text("Game Over", RED, WINDOW_WIDTH/2, WINDOW_HEIGHT/2, 50 )
        text("Score: " + str(len(snake)-1), WHITE,WINDOW_WIDTH/2, WINDOW_HEIGHT/2 + 100, 36  )
start(main)
