# Cilj naloge je ustvariti igrico, kjer se na 50 LEDičnem krogu naključno prižgejo pet LEDic.
# Igralec bo upravljal potenciometer, s katerim bo poskušal doseči želeno LEDico.
# Nato pa se bo prižgala naslednja. Igralec bo moral doseči vseh pet LEDic in program bo izpisal čas,
# ki ga je igralec porabil za dokončanje igre.
#Bonus:
#LEDice se naj razmaknejo vsaj 20 narazen za vsako naključno prižigajočo se LEDico.
#Igralec bo moral ostati vsaj 0.5 sekunde na pravilni LEDici.
from machine import Pin, ADC
from time import sleep, time_ns
from neopixel import NeoPixel
from random import randint
NUM_LED = 50
pot = ADC(Pin(2, Pin.IN))
pixels = NeoPixel(Pin(15), NUM_LED)
def convert(x, in_min, in_max, out_min, out_max):
return (x - in_min) * (out_max - out_min) // (in_max - in_min) + out_min
while True:
s_time = time_ns()
n = 0
check = True
while True:
p = convert(pot.read(), 0, 4095, 0, NUM_LED-1)
if check:
n += 1
if n == 1:
rand = randint(0, NUM_LED-1)
else:
if rand + 20 >= NUM_LED:
r2 = (rand - NUM_LED) + 20
else:
r2 = rand + 20
if rand - 20 < 0:
r1 = (NUM_LED + rand) - 20
else:
r1 = rand - 20
if r1 > r2:
r1,r2 = r2,r1
rand = randint(r1, r2)
check = False
for i in range(p):
if pot.read() == 0:
pixels[0] = (255,0,0)
pixels[rand] = (0,255,0)
pixels.write()
elif i+1 == p:
pixels[p] = (255,0,0)
pixels[rand] = (0,255,0)
pixels.write()
if p == rand:
check = True
if n == 6:
break
pixels.fill((0,0,0))
sleep(0.03)
e_time = time_ns()
print(f"{(e_time - s_time) // 1_000_000} ms")
pixels.fill((0,255,0))
pixels.write()
sleep(1)