asffadsa commited on
Commit
d248334
·
verified ·
1 Parent(s): 42d2b57

Update Gradio app.py

Browse files
Files changed (1) hide show
  1. Gradio app.py +90 -0
Gradio app.py CHANGED
@@ -0,0 +1,90 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import numpy as np
3
+
4
+ # 初始化游戏板
5
+ def initialize_board():
6
+ board = np.zeros((4, 4), dtype=int)
7
+ add_new_tile(board)
8
+ add_new_tile(board)
9
+ return board
10
+
11
+ # 添加新的数字块
12
+ def add_new_tile(board):
13
+ zeros = list(zip(*np.where(board == 0)))
14
+ if zeros:
15
+ x, y = zeros[np.random.choice(len(zeros))]
16
+ board[x, y] = np.random.choice([2, 4], p=[0.9, 0.1])
17
+
18
+ # 移动数字块
19
+ def move(board, direction):
20
+ if direction == 'left':
21
+ board = np.rot90(board, 1)
22
+ board = move_left(board)
23
+ board = np.rot90(board, -1)
24
+ elif direction == 'right':
25
+ board = np.rot90(board, -1)
26
+ board = move_left(board)
27
+ board = np.rot90(board, 1)
28
+ elif direction == 'up':
29
+ board = move_left(board)
30
+ elif direction == 'down':
31
+ board = np.rot90(board, 2)
32
+ board = move_left(board)
33
+ board = np.rot90(board, 2)
34
+ return board
35
+
36
+ # 向左移动数字块
37
+ def move_left(board):
38
+ new_board = np.zeros((4, 4), dtype=int)
39
+ for i in range(4):
40
+ row = board[i, :]
41
+ row = row[row != 0]
42
+ row = merge(row)
43
+ new_board[i, :len(row)] = row
44
+ return new_board
45
+
46
+ # 合并相同的数字块
47
+ def merge(row):
48
+ for i in range(len(row) - 1):
49
+ if row[i] == row[i + 1]:
50
+ row[i] *= 2
51
+ row[i + 1] = 0
52
+ row = row[row != 0]
53
+ return row
54
+
55
+ # 游戏主循环
56
+ def game_loop(board, direction):
57
+ if direction:
58
+ board = move(board, direction)
59
+ add_new_tile(board)
60
+ return board
61
+
62
+ # 初始化游戏板
63
+ board = initialize_board()
64
+
65
+ # 创建Gradio界面
66
+ def update_board(direction):
67
+ global board
68
+ board = game_loop(board, direction)
69
+ return board
70
+
71
+ with gr.Blocks() as demo:
72
+ gr.Markdown("# 2048 Game")
73
+ with gr.Row():
74
+ with gr.Column(scale=1):
75
+ gr.Markdown("## Controls")
76
+ up_button = gr.Button("Up")
77
+ down_button = gr.Button("Down")
78
+ left_button = gr.Button("Left")
79
+ right_button = gr.Button("Right")
80
+ with gr.Column(scale=2):
81
+ gr.Markdown("## Game Board")
82
+ board_display = gr.Dataframe(board, headers=["", "", "", ""], datatype=["number", "number", "number", "number"])
83
+
84
+ up_button.click(update_board, "up", board_display)
85
+ down_button.click(update_board, "down", board_display)
86
+ left_button.click(update_board, "left", board_display)
87
+ right_button.click(update_board, "right", board_display)
88
+
89
+ de
90
+ mo.launch()