from oxocard import * from ivobuttons import * from oxoaccelerometer import * # Zustand vom Spiel # Positionen und Farben vom Trail n = 24 pos = [[i%8,i//8] for i in range(n)] farben = [(255-i*10,0,i*10+15) for i in range(n)] # Beschleunigungssensor acc = Accelerometer.create() for i in range(8): if i<4 or i>4: fastDot(i,3,GREEN) # Funktionen zum Zeichnen und löschen des Spielzustands def zeichnen(): global pos, farben,n # Variablen von ausserhalb dieser Funktion verwenden for i,p in enumerate(pos): fastDot(p[0], p[1], farben[i]) fastRepaint() def loeschen(): global pos, farben,n # Variablen von ausserhalb dieser Funktion verwenden for i,p in enumerate(pos): fastDot(p[0], p[1], BLACK) # Begrenzt einen Wert zwischen 0 und 7 (damit man sicher auf dem Display bleibt). def clip(v): if v<0: v=0 if v>7: v=7 return v zeichnen() pneu = [0,0] # Variable für neue Position while True: ac = acc.getValues() # Aktuelle Beschleunigung auslesen dir = [0,0] for c in range(2): # i=0 für x-Koordinate, i=1 für y-Koordinate dir[c] = 1 # Richtung positiv if ac[c]<0: # Ausser wenn Beschleunigung negativ dir[c] = -1 dir[1]=-dir[1] # Vorzeichenwechsel in y-Richtung for i in range(n): x,y = pos[i][0], pos[i][1] a,b = clip(x+dir[0]), clip(y+dir[1]) if a!=x or b!=y: change = False if fastGetDot(a,b)==BLACK: change = True elif (abs(a-x)+abs(b-y))==2: if fastGetDot(a,y)==BLACK: b=y change = True elif fastGetDot(x,b)==BLACK: a=x change = True if change: fastDot(x,y, BLACK) pos[i][0], pos[i][1] = a,b fastDot(pos[i][0], pos[i][1], farben[i]) fastRepaint()