made menu for chess

This commit is contained in:
Rudis Muiznieks 2022-04-24 13:32:14 -05:00
parent 1b778b1b97
commit 7e721e7940
Signed by: rudism
GPG Key ID: CABF2F86EF7884F9
3 changed files with 48 additions and 6 deletions

View File

@ -15,6 +15,10 @@ menu_config = [
MenuType.PLUGIN, MenuType.PLUGIN,
{"plugin": "chess", {"plugin": "chess",
"arg": None}), "arg": None}),
MenuItem("Cube Timer",
MenuType.PLUGIN,
{"plugin": "cube",
"arg": None}),
]}), ]}),
MenuItem("Information", MenuItem("Information",
MenuType.PLUGIN, MenuType.PLUGIN,

View File

@ -1,13 +1,35 @@
from cinput import ControlInput, Button from cinput import ControlInput, Button
from enum import Enum, auto
from graphics import Graphics from graphics import Graphics
from .draw import Draw from .draw import Draw
from .sunfish import initial from .sunfish import initial
class GameState(Enum):
MAIN_MENU = auto()
THINKING = auto()
CHOOSE_ROW = auto()
CHOOSE_COL = auto()
GAME_OVER = auto()
def execute(cinput: ControlInput, graphics: Graphics, _): def execute(cinput: ControlInput, graphics: Graphics, _):
graphics.clear()
draw = Draw(graphics) draw = Draw(graphics)
draw.draw(initial) draw.draw_board(initial)
state = GameState.MAIN_MENU
menu_index = 0
while True: while True:
key = cinput.get_one_shot(5) if state == GameState.MAIN_MENU:
if key == Button.BTN_A: draw.draw_menu(menu_index)
return
key = cinput.get_one_shot()
if state == GameState.MAIN_MENU:
if key == Button.DIR_U:
menu_index -= 1
if menu_index < 0:
menu_index = 0
elif key == Button.DIR_D:
menu_index += 1
if menu_index > 2:
menu_index = 2

View File

@ -51,6 +51,11 @@ class Draw:
" . ■ ■ ■ ■ . "], " . ■ ■ ■ ■ . "],
} }
MENU = [
"New (W)",
"New (B)",
"Quit"]
def __init__(self, graphics: Graphics): def __init__(self, graphics: Graphics):
self._graphics = graphics self._graphics = graphics
@ -68,10 +73,13 @@ class Draw:
elif pixel =='-': elif pixel =='-':
self._graphics.pixel(x, y, c if filled else sqc) self._graphics.pixel(x, y, c if filled else sqc)
def _clear_info(self):
self._graphics.fill_rect(
self.BOARD_SIZE, 0, self.BOARD_SIZE, self.BOARD_SIZE, 0)
def draw(self, board: str): def draw_board(self, board: str):
self._graphics.fill_rect(0, 0, self.BOARD_SIZE, self.BOARD_SIZE, 0)
nb = "".join(board.split()) nb = "".join(board.split())
self._graphics.clear()
c = True c = True
for row in range(8): for row in range(8):
c = not c c = not c
@ -86,3 +94,11 @@ class Draw:
c = not c c = not c
self._graphics.show() self._graphics.show()
def draw_menu(self, menu_index: int):
self._clear_info()
self._graphics.text("Menu:", 12, 0, 1)
for i in range(len(self.MENU)):
marker = "> " if i == menu_index else " "
self._graphics.text(marker + self.MENU[i], 12, i + 2, 1)
self._graphics.show()