from machine import Pin, I2C # importe
import ssd1306
import time
import tetris # importe der Spiele
import autobahn
#import dinoRun
button_right = Pin(6, Pin.IN) # definierung von Inputs
button_left = Pin(7, Pin.IN)
button_down = Pin(8, Pin.IN)
button_up = Pin(9, Pin.IN)
i2c = I2C(0, scl=Pin(17), sda=Pin(16), freq=400000) # definierung vom display
SCREEN_W = 128
SCREEN_H = 64
display = ssd1306.SSD1306_I2C(SCREEN_W, SCREEN_H, i2c)
SCREEN_TITEL = "Select Game!" # variablen definieren
game_selecter = 0
games = ["Tetris", "Autobahn", "Dino Run"]
def center(text): # kleine hilfsfunktion um die x position auszurechnen um einen text mittig anzuzeigen
return int(SCREEN_W / 2 - len(text) / 2 * 8)
while True: # while true loop
if button_right.value() and right_was_released: # wenn rechts gedrückt wird und er vorher auch losgelassen war
game_selecter = 0 if game_selecter == 2 else game_selecter + 1 # ein spiel nach rechts
right_was_released = False # um zu wissen, dass er bereits gedrückt wurde
if not button_right.value(): # wenn rechts losgelassen wird soll die variable angepasst werden
right_was_released = True
if button_left.value() and left_was_released: # das gleiche wie bei rechts, nur für links
game_selecter = 2 if game_selecter == 0 else game_selecter - 1
left_was_released = False
if not button_left.value():
left_was_released = True
if button_down.value(): # wenn unten gedrückt wird
if game_selecter == 0: # es wird das entsprechende spiel der variable game zugewiesen
game = tetris.Tetris()
if game_selecter == 1:
game = autobahn.Autobahn()
if game_selecter == 2:
pass # game = dinoRun.DinoRun()
game.run(display, button_right, button_left, button_down, button_up) # das spiel wird gestartet und bekommt alle in-/outputs
display.fill(0) # löscht einmal das display
display.text(SCREEN_TITEL, center(SCREEN_TITEL), 0) # schreibt den titel mittig oben hin
display.text(games[game_selecter], center(games[game_selecter]), 30) # schreibt den nahmen des spiels darunter
display.show() # updated das display
time.sleep(1/60) # wartet eine 1/60 sekunde um nicht unötig schnell zu laufen