Python 9x9 数列游戏代码:随机生成、规则验证和玩家交互
下面是一个使用 Python 编写的 9x9 数列游戏的示例代码:
import random
def generate_random_board():
board = [[0] * 9 for _ in range(9)]
num_empty = random.randint(15, 26)
for _ in range(num_empty):
while True:
row = random.randint(0, 8)
col = random.randint(0, 8)
if board[row][col] == 0:
board[row][col] = ' '
break
return board
def print_board(board):
for row in board:
print(' '.join(str(cell) for cell in row))
print()
def is_valid_move(board, row, col, num):
# 检查同一行是否有相同数字
if num in board[row]:
return False
# 检查同一列是否有相同数字
for i in range(9):
if board[i][col] == num:
return False
# 检查同一个3x3方格是否有相同数字
start_row = (row // 3) * 3
start_col = (col // 3) * 3
for i in range(start_row, start_row + 3):
for j in range(start_col, start_col + 3):
if board[i][j] == num:
return False
return True
def play_game():
board = generate_random_board()
print('按S键开始游戏')
while True:
command = input('> ')
if command == 'S' or command == 's':
break
else:
print('请输入S键开始游戏!')
print_board(board)
while True:
row = int(input('请输入要填充的行号(1-9):')) - 1
col = int(input('请输入要填充的列号(1-9):')) - 1
num = input('请输入要填充的数字(1-9)或空格:')
if num == ' ':
num = 0
else:
num = int(num)
if row < 0 or row > 8 or col < 0 or col > 8 or num < 0 or num > 9:
print('请输入符合规则的数字!')
elif not is_valid_move(board, row, col, num):
print('请输入符合规则的数字!')
else:
board[row][col] = num
print_board(board)
if all(cell != ' ' for row in board for cell in row):
print('数列表已完成!')
break
while True:
command = input('按R键重新生成一个初始随机数列表,按C键结束游戏。')
if command == 'R' or command == 'r':
board = generate_random_board()
print_board(board)
break
elif command == 'C' or command == 'c':
print('游戏结束!')
return
else:
print('请输入R键或C键!')
play_game()
这个代码使用了一个generate_random_board函数来生成随机的初始数列表,print_board函数用于打印数列表,is_valid_move函数用于检查玩家的输入是否符合数列规则。play_game函数是游戏的主体逻辑,它通过不断接受玩家的输入来填充数列表,直到数列表被填满。游戏结束后,玩家可以选择按R键重新开始游戏或按C键结束游戏。
原文地址: https://www.cveoy.top/t/topic/o4bJ 著作权归作者所有。请勿转载和采集!