from time import sleep_ms#, ticks_ms
from machine import SoftI2C, Pin
from i2c_lcd import I2cLcd
adress = 0x27
i2c = SoftI2C(scl=Pin(22), sda=Pin(21), freq=100000) # connect scl to GPIO 22, sda to GPIO 21
lcd = I2cLcd(i2c, adress, 2, 16)
# def testLcd(num):
# lcd.move_to(3,0)
# lcd.putstr('Micropython')
# lcd.move_to(0,1)
# lcd.putstr("hello " + str(num))
# if __name__ == '__main__':
# for i in range(100):
# testLcd(i)
# sleep_ms(200)
from urandom import randint
length = 100
track_begin = 0
track_end = 1
track0 = [randint(2,3) if i%13==0 else 2 for i in range(length)]
track1 = [randint(0,1) if i%7==0 else 0 for i in range(length)]
x1 = 15
button = Pin(13, Pin.IN)
target = 0
speed = 300
driver = 0
def make_str(data):
string = ""
for el in data:
if el == 0 or el == 2:
string += " "
elif el == 1:
string += "I"
elif el == 3:
string += "<"
return string
while True:
lcd.clear()
lcd.move_to(x1,0)
road = make_str(track0[track_begin:track_end])
lcd.putstr(road)
lcd.move_to(x1,1)
road = make_str(track1[track_begin:track_end])
lcd.putstr(road)
lcd.move_to(0,driver)
lcd.putstr('@')
sleep_ms(speed)
if button.value():
driver = 0
else:
driver = 1
if driver == 1 and track_end > 16 and track1[track_begin] == 1:
print('Game Over!')
break
if driver == 0 and track_end > 16 and track0[track_begin] == 3:
print('Game Over!')
break
if x1 > 1:
x1 -= 1
track_end += 1
if track_end > 15:
track_begin += 1