codelion commited on
Commit
46882f0
·
verified ·
1 Parent(s): 789c580

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +15 -16
app.py CHANGED
@@ -20,14 +20,14 @@ CAMPS = [
20
  ]
21
  ESCAPES = [(i,j) for i in [0,8] for j in range(BOARD_SIZE)] + [(i,j) for j in [0,8] for i in range(BOARD_SIZE) if (i,j) not in CAMPS]
22
  COLORS = {
23
- 'empty': (255, 255, 255), # White
24
- 'castle': (128, 128, 128), # Gray
25
- 'camp': (139, 69, 19), # Brown
26
- 'escape': (0, 255, 0), # Green
27
- 'white': (255, 255, 255), # White
28
- 'black': (0, 0, 0), # Black
29
- 'king': (255, 215, 0), # Gold
30
- 'highlight': (255, 255, 0) # Yellow
31
  }
32
 
33
  # Game state class
@@ -322,9 +322,9 @@ def generate_board_image(state, selected_pos=None):
322
  def click_board(state, selected_pos, evt: gr.SelectData):
323
  if state.turn != 'WHITE':
324
  return state, "It's the AI's turn", generate_board_image(state), selected_pos
325
- x = evt.index[1] // CELL_SIZE # Image coordinates are (x, y), board is (row, col)
326
- y = evt.index[0] // CELL_SIZE
327
- pos = (x, y)
328
  if selected_pos is None:
329
  if state.board[pos] in [WHITE_SOLDIER, KING]:
330
  return state, f"Selected {pos_to_coord(pos)}", generate_board_image(state, pos), pos
@@ -347,8 +347,9 @@ def new_game():
347
  state = TablutState()
348
  return state, "New game started. Your turn (White).", generate_board_image(state), None
349
 
350
- # Gradio interface
351
- with gr.Blocks(title="Tablut Game") as demo:
 
352
  state = gr.State()
353
  selected_pos = gr.State(value=None)
354
  board_image = gr.Image(label="Board", type="pil")
@@ -356,6 +357,4 @@ with gr.Blocks(title="Tablut Game") as demo:
356
  new_game_button = gr.Button("New Game")
357
  board_image.select(fn=click_board, inputs=[state, selected_pos], outputs=[state, message_label, board_image, selected_pos])
358
  new_game_button.click(fn=new_game, outputs=[state, message_label, board_image, selected_pos])
359
- demo.load(fn=new_game, outputs=[state, message_label, board_image, selected_pos])
360
-
361
- # Note: demo.launch() is not needed for HF Spaces
 
20
  ]
21
  ESCAPES = [(i,j) for i in [0,8] for j in range(BOARD_SIZE)] + [(i,j) for j in [0,8] for i in range(BOARD_SIZE) if (i,j) not in CAMPS]
22
  COLORS = {
23
+ 'empty': (255, 255, 255),
24
+ 'castle': (128, 128, 128),
25
+ 'camp': (139, 69, 19),
26
+ 'escape': (0, 255, 0),
27
+ 'white': (255, 255, 255),
28
+ 'black': (0, 0, 0),
29
+ 'king': (255, 215, 0),
30
+ 'highlight': (255, 255, 0)
31
  }
32
 
33
  # Game state class
 
322
  def click_board(state, selected_pos, evt: gr.SelectData):
323
  if state.turn != 'WHITE':
324
  return state, "It's the AI's turn", generate_board_image(state), selected_pos
325
+ y = evt.index[0] // CELL_SIZE # Image coordinates (x, y) map to board (row, col)
326
+ x = evt.index[1] // CELL_SIZE
327
+ pos = (y, x)
328
  if selected_pos is None:
329
  if state.board[pos] in [WHITE_SOLDIER, KING]:
330
  return state, f"Selected {pos_to_coord(pos)}", generate_board_image(state, pos), pos
 
347
  state = TablutState()
348
  return state, "New game started. Your turn (White).", generate_board_image(state), None
349
 
350
+ # Define Gradio interface
351
+ demo = gr.Blocks(title="Tablut Game")
352
+ with demo:
353
  state = gr.State()
354
  selected_pos = gr.State(value=None)
355
  board_image = gr.Image(label="Board", type="pil")
 
357
  new_game_button = gr.Button("New Game")
358
  board_image.select(fn=click_board, inputs=[state, selected_pos], outputs=[state, message_label, board_image, selected_pos])
359
  new_game_button.click(fn=new_game, outputs=[state, message_label, board_image, selected_pos])
360
+ demo.load(fn=new_game, outputs=[state, message_label, board_image, selected_pos])