| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- import time
- import flipperzero as f0
- def init_grid():
- return [
- [" ", " ", " "],
- [" ", " ", " "],
- [" ", " ", " "],
- ]
- m_exit = False
- m_grid = init_grid()
- m_x = 1
- m_y = 1
- m_is_cross = True
- @f0.on_input
- def input_handler(button, type):
- global m_exit
- global m_grid
- global m_x
- global m_y
- global m_is_cross
- if button == f0.INPUT_BUTTON_BACK and type == f0.INPUT_TYPE_LONG:
- m_exit = True
- elif button == f0.INPUT_BUTTON_BACK and type == f0.INPUT_TYPE_SHORT:
- m_grid = init_grid()
- elif button == f0.INPUT_BUTTON_LEFT and type == f0.INPUT_TYPE_SHORT:
- m_x = (m_x - 1) % 3
- elif button == f0.INPUT_BUTTON_RIGHT and type == f0.INPUT_TYPE_SHORT:
- m_x = (m_x + 1) % 3
- elif button == f0.INPUT_BUTTON_UP and type == f0.INPUT_TYPE_SHORT:
- m_y = (m_y - 1) % 3
- elif button == f0.INPUT_BUTTON_DOWN and type == f0.INPUT_TYPE_SHORT:
- m_y = (m_y + 1) % 3
- elif button == f0.INPUT_BUTTON_OK and type == f0.INPUT_TYPE_SHORT:
- m_grid[m_x][m_y] = "X" if m_is_cross else "O"
- m_is_cross = not m_is_cross
- def draw_grid():
- global m_grid
- global m_x
- global m_y
- f0.canvas_clear()
- f0.canvas_draw_frame(2, 2, 60, 60)
- f0.canvas_draw_line(22, 2, 22, 62)
- f0.canvas_draw_line(42, 2, 42, 62)
- f0.canvas_draw_line(2, 22, 62, 22)
- f0.canvas_draw_line(2, 42, 62, 42)
- px = m_x * 20 + 4
- py = m_y * 20 + 4
- f0.canvas_draw_frame(px, py, 16, 16)
- f0.canvas_set_text_align(f0.ALIGN_CENTER, f0.ALIGN_CENTER)
- for x in range(0, 3):
- for y in range(0, 3):
- px = x * 20 + 10 + 2
- py = y * 20 + 10 + 2
- f0.canvas_set_text(px, py, m_grid[x][y])
- f0.canvas_update()
- while not m_exit:
- draw_grid()
- time.sleep_ms(25)
|