Toggle Navigation
Hatchery
Eggs
Snakeflut
snakeflut.py
Users
Badges
Login
Register
MCH2022 badge?
go to mch2022.badge.team
snakeflut.py
raw
Content
import badge import ugfx import deepsleep import wifi import usocket import time # width = 296 # height = 128 tile = 20 new_dir = 4 last_dir = 5 socket = None connected = False def snakeflut(): badge.eink_init() ugfx.init() ugfx.input_init() wifi.init() # setup exit buttons ugfx.input_attach(ugfx.BTN_A, reboot) ugfx.input_attach(ugfx.BTN_B, reboot) ugfx.input_attach(ugfx.BTN_SELECT, reboot) # connect reconnect(None) # setup inputs ugfx.input_attach(ugfx.JOY_UP, up) ugfx.input_attach(ugfx.JOY_RIGHT, right) ugfx.input_attach(ugfx.JOY_DOWN, down) ugfx.input_attach(ugfx.JOY_LEFT, left) ugfx.input_attach(ugfx.BTN_START, reconnect) def opposite_dir(a, b): return (a == 0 and b == 2) or (a == 2 and b == 0) or (a == 1 and b == 3) or (a == 3 and b == 1) def update(): global last_dir global socket if new_dir != last_dir and not opposite_dir(new_dir, last_dir): # clear if last_dir == 0: ugfx.area(50 + tile*2, 30 + tile*1, tile, tile, ugfx.WHITE) if last_dir == 1: ugfx.area(50 + tile*3, 30 + tile*2, tile, tile, ugfx.WHITE) if last_dir == 2: ugfx.area(50 + tile*2, 30 + tile*3, tile, tile, ugfx.WHITE) if last_dir == 3: ugfx.area(50 + tile*1, 30 + tile*2, tile, tile, ugfx.WHITE) # box ugfx.box(50 + tile*2, 30 + tile*1, tile+1, tile+1, ugfx.BLACK) ugfx.box(50 + tile*3, 30 + tile*2, tile+1, tile+1, ugfx.BLACK) ugfx.box(50 + tile*2, 30 + tile*3, tile+1, tile+1, ugfx.BLACK) ugfx.box(50 + tile*1, 30 + tile*2, tile+1, tile+1, ugfx.BLACK) # paint if new_dir == 0: ugfx.area(50 + tile*2, 30 + tile*1, tile, tile, ugfx.BLACK) socket.write(b"w") if new_dir == 1: ugfx.area(50 + tile*3, 30 + tile*2, tile, tile, ugfx.BLACK) socket.write(b"d") if new_dir == 2: ugfx.area(50 + tile*2, 30 + tile*3, tile, tile, ugfx.BLACK) socket.write(b"s") if new_dir == 3: ugfx.area(50 + tile*1, 30 + tile*2, tile, tile, ugfx.BLACK) socket.write(b"a") last_dir = new_dir ugfx.flush() def up(wut): global new_dir new_dir = 0 update() def right(wut): global new_dir new_dir = 1 update() def down(wut): global new_dir new_dir = 2 update() def left(wut): global new_dir new_dir = 3 update() def reconnect(wut): global socket global connected if connected: socket.write(b"x"); socket = None connected = False try: ugfx.clear(ugfx.WHITE) ugfx.string(10, 10, "Waiting for wifi...", "Roboto_Regular12", 0) ugfx.flush() wifi.init(); while not wifi.sta_if.isconnected(): time.sleep(0.1) socket = usocket.socket() socket.connect(('151.216.214.145', 36987)) connected = True global new_dir global last_dir new_dir = 1 last_dir = 5 ugfx.clear(ugfx.WHITE) update() ugfx.string(10, 10, "move: UP/DOWN/LEFT/RIGHT, reconnect: START", "Roboto_Regular12", 0) ugfx.flush() except: ugfx.clear(ugfx.WHITE) ugfx.string(10, 10, "Connecting failed! exit: B, reconnect: START", "Roboto_Regular12", 0) ugfx.flush() def reboot(wut): if connected: socket.write(b"x"); time.sleep(0.5) deepsleep.reboot() snakeflut()