From 5d51dc1e8a3aedc7780a573704e054f99e9afc2a Mon Sep 17 00:00:00 2001 From: lando_worsch Date: Sun, 19 Apr 2026 14:47:12 +0000 Subject: [PATCH] Manueller Upload erster Stand --- snake.py | 221 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 221 insertions(+) create mode 100644 snake.py diff --git a/snake.py b/snake.py new file mode 100644 index 0000000..5b7f9b4 --- /dev/null +++ b/snake.py @@ -0,0 +1,221 @@ +from operator import truediv + +import pygame +import time +import random +def gameover_testen(aaaabbruch:bool,fresserchen:int): + if aaaabbruch: + pygame.display.set_caption('Snake Game Game Over ' + fresserchen.__str__()) + time.sleep(1) + return False + else: + return True + + +def schlange_zeichnen(s:list): + for segmeent in s: + (x,y) = segmeent + pygame.draw.rect(screen, GREEN, (x*box_size, y*box_size, box_size, box_size)) + return s + +def schlange_wachsen(s:list,dx:int,dy:int): + neues_segement = [s[0][0]+dx,s[0][1]+dy] + s.insert(0,neues_segement) + print (s) + return s + +def weg_versperrt(s:list): + + for i in range(1, len(s)): + if s[i] == s[0]: + return True + + + return False + + +def schlange_bewegen(s:list,dx:int,dy:int): + neues_segement = [s[0][0] + dx, s[0][1] + dy] + s.insert(0, neues_segement) + s.pop() + return (s) + + + +def pixel(position): + return 10 + position * box_size + + +def rand_test(x:int,y:int): + if x < 0: + return True + if y < 0: + return True + if x > feld_max: + return True + if y > feld_max: + return True + return False + +def futter_Yommy(futterx:int,futtery:int,positionx:int,positiony:int): + if (futterx == positionx and futtery == positiony): + return True + + +def move(move_wertikal:int,move_horizontal:int): + laenge = 0 + for event in pygame.event.get(): + if event.type == pygame.QUIT: + running = False + if event.type == pygame.KEYDOWN and event.key == pygame.K_LEFT: + if move_wertikal != box_size: + move_wertikal = -box_size + move_horizontal = 0 + laenge = move_wertikal + box_size + if event.type == pygame.KEYDOWN and event.key == pygame.K_RIGHT: + if move_wertikal != -box_size: + move_wertikal = box_size + move_horizontal = 0 + laenge = move_wertikal - box_size + if event.type == pygame.KEYDOWN and event.key == pygame.K_UP: + if move_horizontal != box_size: + move_horizontal = -box_size + move_wertikal = 0 + laenge = move_horizontal + box_size + if event.type == pygame.KEYDOWN and event.key == pygame.K_DOWN: + if move_horizontal != -box_size: + move_horizontal = box_size + move_wertikal = 0 + laenge = move_horizontal - box_size + + return (move_wertikal,move_horizontal,laenge) + + + +pygame.init() +Food = 0 +feld_max=39 +X = 0 +Schlüssel_für_länge = 0 +box_size = 20 +screen = pygame.display.set_mode((feld_max*box_size, feld_max*box_size)) +pygame.display.set_caption('Snake Game') +WHITE = (255, 255, 255) +RED = (100, 0, 0) +BLACK = (0, 0, 0) +GREEN = (0, 100, 0) +_GREEN = (0, 205, 0) +pygame.draw.rect(screen, RED, (10, 20, 680, 660)) +pygame.display.flip() +font = pygame.font.SysFont("Arial", 32) # Schriftart und Größe + +#--- Willkommens Meldung ---------------- +screen.fill(BLACK) +# 2. Text rendern (Text, Antialias, Farbe) +text_titel_0 = font.render("Pygame_Snake", True,WHITE) +text_titel_1 = font.render("Click Enter to start ", True,WHITE) +# 3. Text auf dem Screen "blitzen" (Position x=10, y=10) +screen.blit(text_titel_0, (250,30)) +screen.blit(text_titel_1, (235,500)) +# 4. Bildschirm zeichnen +pygame.display.flip() +# 5. Auf Enter-Taste warten +warten_auf_enter = True +while warten_auf_enter: + for ereignis in pygame.event.get(): + if ereignis.type == pygame.KEYDOWN and ereignis.key == pygame.K_RETURN: + print("Enter gedrueckt!") + warten_auf_enter = False + + +#--- Spielwiederholung ---------------------------- +nochmal_spielen = True +while nochmal_spielen: + #--- Spiel---------------------------------- + schritt = 0 + position_mitte = [(feld_max-1)/2, (feld_max-1)/2] + position = position_mitte + s = [[20,20]] + richtung = [0, 0] + running = True + game_over = False + X = 0 + verzoegerung = 0.2 + while running: + snake = [] + snake_laenge = 1 + schritt = schritt + 1 + time.sleep(verzoegerung-(X*0.002)) + + screen.fill(BLACK) + + # 2. Text rendern (Text, Antialias, Farbe) + text_surface = font.render("Count "+X.__str__(), True,WHITE) + # 3. Text auf dem Screen "blitzen" (Position x=10, y=10) + screen.blit(text_surface, (10, 10)) + + + s = schlange_zeichnen(s) + s = schlange_bewegen(s, richtung[0]/box_size, richtung[1]/box_size) + + if (Food == 2 or Food == 0): + zufallszahl1x = random.randint(1, 37) + zufallszahl1y = random.randint(1, 37) + + #futter futter Yumy + if futter_Yommy(zufallszahl1x, zufallszahl1y,s[0][0],s[0][1]): + Food = 2 + s = schlange_wachsen (s,richtung[0]/box_size,richtung[1]/box_size) + + if (Food == 0): Food = 1 + if (Food == 2): X = X + 1 + if (Food == 2): Food = 0 + if (Food != 0): + pygame.draw.rect(screen, RED, + (zufallszahl1x * box_size,zufallszahl1y * box_size, box_size, + box_size)) + + game_over = weg_versperrt(s) + + if game_over == False : + game_over = rand_test(s[0][0], s[0][1]) + + # Bildschirm neu zeichnen! + pygame.display.flip() + + (richtung[0], richtung[1], Schlüssel_für_länge) = move(richtung[0], richtung[1]) + + running = gameover_testen(game_over,X) + + #--- Abschiedsmeldung ---------------- + screen.fill(BLACK) + ereignisse_entfernen = pygame.event.get() + # 1. Text rendern (Text, Antialias, Farbe) + text_titel_0 = font.render("Pygame_Snake", True,WHITE) + text_titel_1 = font.render("Play again? (Y/N)", True,WHITE) + text_gefressen = font.render("Count " + X.__str__(), True, WHITE) + # 2. Text auf dem Screen "blitzen" (Position x=10, y=10) + screen.blit(text_titel_0, (250,30)) + screen.blit(text_titel_1, (235,500)) + screen.blit(text_gefressen, (10, 10)) + # 3. Bildschirm zeichnen + pygame.display.flip() + # 4. Auf Taste warten + + warten_auf_taste = True + while warten_auf_taste: + for ereignis in pygame.event.get(): + if ereignis.type == pygame.KEYDOWN: + print("taste gedrueckt!") + warten_auf_taste = False + if ereignis.key == pygame.K_y: + print("taste ist y also nochmal") + nochmal_spielen = True + else: + print("taste ist nicht y") + nochmal_spielen = False + + + + +