用python设计一款五子棋游戏,可以实现1、“简单”,“困难”不同难度的选择,2、分数记录,3、分数排名这三个功能。
时间: 2024-03-10 07:48:50 浏览: 25
好的,我为您提供一个简单的五子棋游戏示例。首先,我们需要定义一些变量和函数:
```python
import random
# 定义游戏难度和对应的棋盘大小
difficulties = {
"easy": 10,
"hard": 15
}
# 定义玩家分数记录
scores = []
# 定义棋盘和玩家
board = None
player = None
# 定义游戏函数
def play_game():
global board, player
# 让用户选择游戏难度
difficulty = input("请选择游戏难度(easy/hard): ")
if difficulty not in difficulties:
print("无效的难度级别!")
return
# 获取棋盘大小
size = difficulties[difficulty]
# 初始化棋盘
board = [[0] * size for _ in range(size)]
# 随机选择玩家
player = random.choice([1, 2])
# 显示棋盘
print_board()
# 开始游戏
while True:
# 让玩家下棋
make_move()
# 检查游戏是否结束
if check_game_over():
break
# 切换玩家
player = 3 - player
# 显示输赢结果并记录分数
if check_winner() == 1:
print("恭喜玩家1获胜!")
scores.append(1)
elif check_winner() == 2:
print("恭喜玩家2获胜!")
scores.append(2)
else:
print("平局!")
# 定义下棋函数
def make_move():
global player
while True:
x, y = map(int, input(f"玩家{player}请下棋(x, y): ").split(","))
if not is_valid_move(x, y):
print("无效的落子位置!")
else:
board[x-1][y-1] = player
print_board()
break
# 定义检查落子是否有效的函数
def is_valid_move(x, y):
global board
if x < 1 or x > len(board) or y < 1 or y > len(board):
return False
if board[x-1][y-1] != 0:
return False
return True
# 定义检查游戏是否结束的函数
def check_game_over():
global board
for row in board:
if 0 in row:
return False
return True
# 定义检查胜者的函数
def check_winner():
global board
for i in range(len(board)):
for j in range(len(board)):
if i <= len(board) - 5 and board[i][j] == board[i+1][j] == board[i+2][j] == board[i+3][j] == board[i+4][j]:
return board[i][j]
if j <= len(board) - 5 and board[i][j] == board[i][j+1] == board[i][j+2] == board[i][j+3] == board[i][j+4]:
return board[i][j]
if i <= len(board) - 5 and j <= len(board) - 5 and board[i][j] == board[i+1][j+1] == board[i+2][j+2] == board[i+3][j+3] == board[i+4][j+4]:
return board[i][j]
if i <= len(board) - 5 and j >= 4 and board[i][j] == board[i+1][j-1] == board[i+2][j-2] == board[i+3][j-3] == board[i+4][j-4]:
return board[i][j]
return 0
# 定义显示棋盘的函数
def print_board():
global board
for row in board:
print(" ".join(str(x) for x in row))
# 定义排行榜函数
def show_scores():
if not scores:
print("暂无分数记录!")
return
sorted_scores = sorted(scores, reverse=True)
print("排行榜:")
for i, score in enumerate(sorted_scores):
print(f"{i+1}. 玩家{score}")
# 主程序
while True:
command = input("请输入指令(play/show_scores/quit): ")
if command == "play":
play_game()
elif command == "show_scores":
show_scores()
elif command == "quit":
break
else:
print("无效的指令!")
```
运行程序后,用户可以选择不同的难度级别进行游戏,下棋后会显示棋盘和当前玩家,游戏结束后会显示输赢结果并记录分数。用户也可以查看排行榜来比较自己的得分和其他玩家的得分。注意:此示例中五子棋胜负判断只考虑了横、竖、斜方向连续五子相同的情况,还有其他情况可以根据需要自行添加。