数字推盘 python 代码
时间: 2023-07-23 08:09:22 浏览: 54
以下是一个简单的数字推盘游戏的 Python 代码示例:
```python
import random
# 游戏面板大小
BOARD_SIZE = 4
# 游戏结束标志
GAME_OVER = False
# 初始化游戏面板
board = [[0] * BOARD_SIZE for _ in range(BOARD_SIZE)]
# 在游戏面板上随机生成两个数字
def generate_number():
x = random.randint(0, BOARD_SIZE-1)
y = random.randint(0, BOARD_SIZE-1)
while board[x][y] != 0:
x = random.randint(0, BOARD_SIZE-1)
y = random.randint(0, BOARD_SIZE-1)
board[x][y] = 2 if random.random() < 0.9 else 4
# 绘制游戏面板
def draw_board():
for i in range(BOARD_SIZE):
for j in range(BOARD_SIZE):
print(board[i][j], end='\t')
print()
# 将游戏面板向左移动
def move_left():
global GAME_OVER
for i in range(BOARD_SIZE):
for j in range(1, BOARD_SIZE):
if board[i][j] != 0:
k = j
while k > 0 and board[i][k-1] == 0:
k -= 1
if k != j:
board[i][k] = board[i][j]
board[i][j] = 0
if k > 0 and board[i][k-1] == board[i][k]:
board[i][k-1] *= 2
board[i][k] = 0
if board[i][k-1] == 2048:
GAME_OVER = True
# 将游戏面板向右移动
def move_right():
global GAME_OVER
for i in range(BOARD_SIZE):
for j in range(BOARD_SIZE-2, -1, -1):
if board[i][j] != 0:
k = j
while k < BOARD_SIZE-1 and board[i][k+1] == 0:
k += 1
if k != j:
board[i][k] = board[i][j]
board[i][j] = 0
if k < BOARD_SIZE-1 and board[i][k+1] == board[i][k]:
board[i][k+1] *= 2
board[i][k] = 0
if board[i][k+1] == 2048:
GAME_OVER = True
# 将游戏面板向上移动
def move_up():
global GAME_OVER
for j in range(BOARD_SIZE):
for i in range(1, BOARD_SIZE):
if board[i][j] != 0:
k = i
while k > 0 and board[k-1][j] == 0:
k -= 1
if k != i:
board[k][j] = board[i][j]
board[i][j] = 0
if k > 0 and board[k-1][j] == board[k][j]:
board[k-1][j] *= 2
board[k][j] = 0
if board[k-1][j] == 2048:
GAME_OVER = True
# 将游戏面板向下移动
def move_down():
global GAME_OVER
for j in range(BOARD_SIZE):
for i in range(BOARD_SIZE-2, -1, -1):
if board[i][j] != 0:
k = i
while k < BOARD_SIZE-1 and board[k+1][j] == 0:
k += 1
if k != i:
board[k][j] = board[i][j]
board[i][j] = 0
if k < BOARD_SIZE-1 and board[k+1][j] == board[k][j]:
board[k+1][j] *= 2
board[k][j] = 0
if board[k+1][j] == 2048:
GAME_OVER = True
# 开始游戏
while not GAME_OVER:
generate_number()
draw_board()
move = input('请输入移动方向(上下左右):')
if move == '左':
move_left()
elif move == '右':
move_right()
elif move == '上':
move_up()
elif move == '下':
move_down()
print('游戏结束!')
```
注意:该示例代码仅供参考,实际上还有很多优化的空间,比如可以使用字典来简化移动操作等。