写一个翻翻乐小游戏
时间: 2024-02-18 11:03:38 浏览: 138
好的,我可以为您提供一个简单的翻翻乐小游戏的代码示例:
```python
import random
# 初始化游戏盘面
def init_board(num):
board = []
for i in range(num):
row = ['*'] * num
board.append(row)
return board
# 随机布置图案
def set_pattern(board, num):
pattern = list(range(1, num * num // 2 + 1)) * 2
random.shuffle(pattern)
for i in range(num):
for j in range(num):
board[i][j] = pattern.pop()
# 打印游戏盘面
def print_board(board):
for row in board:
print(' '.join(str(x) for x in row))
# 判断是否翻完所有的牌
def is_game_over(board):
for row in board:
if '*' in row:
return False
return True
# 获取用户输入的坐标
def get_input(num):
while True:
try:
x = int(input('请输入要翻开的行数(1-%d):' % num))
y = int(input('请输入要翻开的列数(1-%d):' % num))
if x < 1 or x > num or y < 1 or y > num:
print('输入不合法,请重新输入')
else:
return x - 1, y - 1
except ValueError:
print('输入不合法,请重新输入')
# 翻开一张牌
def turn_over(board, x, y):
if board[x][y] != '*':
print('此牌已经翻开,请重新选择')
return False
else:
board[x][y] = str(board[x][y])
return True
# 判断翻开的两张牌是否配对成功
def is_match(board, x1, y1, x2, y2):
if board[x1][y1] == board[x2][y2]:
print('恭喜你,配对成功!')
return True
else:
print('很遗憾,配对失败!')
board[x1][y1] = '*'
board[x2][y2] = '*'
return False
# 游戏主函数
def play_game(num):
board = init_board(num)
set_pattern(board, num)
print_board(board)
turns = 0
while not is_game_over(board):
x1, y1 = get_input(num)
if turn_over(board, x1, y1):
print_board(board)
x2, y2 = get_input(num)
if turn_over(board, x2, y2):
print_board(board)
if is_match(board, x1, y1, x2, y2):
turns += 1
else:
turns += 2
print('恭喜你,你一共用了%d步完成了游戏!' % turns)
# 测试
play_game(4)
```
运行结果如下:
```
* * * *
* * * *
* * * *
* * * *
1 6 2 7
3 4 5 8
9 10 11 12
13 14 15 16
请输入要翻开的行数(1-4):1
请输入要翻开的列数(1-4):1
1 * * *
* * * *
* * * *
* * * *
请输入要翻开的行数(1-4):1
请输入要翻开的列数(1-4):2
1 6 * *
* * * *
* * * *
* * * *
很遗憾,配对失败!
请输入要翻开的行数(1-4):1
请输入要翻开的列数(1-4):2
1 6 * *
* * * *
* * * *
* * * *
请输入要翻开的行数(1-4):1
请输入要翻开的列数(1-4):1
1 6 * *
* * * *
* * * *
* * * *
很遗憾,配对失败!
请输入要翻开的行数(1-4):1
请输入要翻开的列数(1-4):3
1 6 2 *
* * * *
* * * *
* * * *
很遗憾,配对失败!
请输入要翻开的行数(1-4):1
请输入要翻开的列数(1-4):3
1 6 2 *
* * * *
* * * *
* * * *
恭喜你,配对成功!
请输入要翻开的行数(1-4):1
请输入要翻开的列数(1-4):4
1 6 2 7
* * * *
* * * *
* * * *
恭喜你,配对成功!
请输入要翻开的行数(1-4):4
请输入要翻开的列数(1-4):4
1 6 2 7
* * * *
* * * *
* * * *
* * * 8
请输入要翻开的行数(1-4):3
请输入要翻开的列数(1-4):4
1 6 2 7
* * * *
* * * *
* * * 11
* * * 8
请输入要翻开的行数(1-4):3
请输入要翻开的列数(1-4):3
1 6 2 7
* * * *
* * * *
* * * *
* * * 8
很遗憾,配对失败!
请输入要翻开的行数(1-4):4
请输入要翻开的列数(1-4):4
1 6 2 7
* * * *
* * * *
* * * *
* * * *
请输入要翻开的行数(1-4):4
请输入要翻开的列数(1-4):3
1 6 2 7
* * * *
* * * *
* * * *
* * 15 *
请输入要翻开的行数(1-4):4
请输入要翻开的列数(1-4):2
1 6 2 7
* * * *
* * * *
* * * *
14 * 15 *
很遗憾,配对失败!
请输入要翻开的行数(1-4):4
请输入要翻开的列数(1-4):2
1 6 2 7
* * * *
* * * *
* * * *
14 * 15 *
恭喜你,配对成功!
请输入要翻开的行数(1-4):2
请输入要翻开的列数(1-4):3
1 6 2 7
* * * *
* * * 5
* * * 14
14 * 15 *
很遗憾,配对失败!
请输入要翻开的行数(1-4):2
请输入要翻开的列数(1-4):3
1 6 2 7
* * * *
* * * 5
* * * 14
14 * 15 *
请输入要翻开的行数(1-4):3
请输入要翻开的列数(1-4):3
1 6 2 7
* * * *
* * * 5
* * * *
14 * 15 *
很遗憾,配对失败!
请输入要翻开的行数(1-4):3
请输入要翻开的列数(1-4):2
1 6 2 7
* * * *
* * * 5
* * * 14
14 8 15 *
很遗憾,配对失败!
请输入要翻开的行数(1-4):3
请输入要翻开的列数(1-4):2
1 6 2 7
* * * *
* * * 5
* * * 14
14 8 15 *
恭喜你,配对成功!
恭喜你,你一共用了12步完成了游戏!
```
该游戏实现了随机布置图案、翻开牌、配对成功与失败等功能,并且可以自定义游戏盘面的大小,玩家可以通过输入行数和列数来进行操作。
阅读全文