以下是一个基于 Python 的 9x9 数独游戏的代码示例:

import random
import os

def generate_board():
    board = [[0] * 9 for _ in range(9)]
    empty_count = random.randint(13, 21)
    while empty_count > 0:
        row = random.randint(0, 8)
        col = random.randint(0, 8)
        if board[row][col] == 0:
            board[row][col] = ' '
            empty_count -= 1
    return board

def print_board(board):
    for i in range(9):
        if i % 3 == 0 and i != 0:
            print('- - - + - - - + - - -')
        for j in range(9):
            if j % 3 == 0 and j != 0:
                print('|', end=' ')
            print(board[i][j], end=' ')
        print()
        
def is_valid(board, num, row, col):
    for i in range(9):
        if board[row][i] == num or board[i][col] == num:
            return False
    start_row = (row // 3) * 3
    start_col = (col // 3) * 3
    for i in range(3):
        for j in range(3):
            if board[start_row + i][start_col + j] == num:
                return False
    return True

def solve_board(board):
    for row in range(9):
        for col in range(9):
            if board[row][col] == ' ':
                for num in range(1, 10):
                    if is_valid(board, num, row, col):
                        board[row][col] = num
                        if solve_board(board):
                            return True
                        board[row][col] = ' '
                return False
    return True

def play_game():
    os.system('clear' if os.name == 'posix' else 'cls')
    print('按 S 开始游戏')
    input_key = input().lower()
    if input_key != 's':
        play_game()
    
    board = generate_board()
    solved_board = [row[:] for row in board]
    solve_board(solved_board)
    
    while True:
        os.system('clear' if os.name == 'posix' else 'cls')
        print('数独游戏')
        print_board(board)
        print('输入 C 结束游戏')
        print('输入 R 重新生成数列')
        print('输入行列数字和待填数字,如 3 4 5')
        input_key = input().lower()
        
        if input_key == 'c':
            break
        elif input_key == 'r':
            board = generate_board()
            solved_board = [row[:] for row in board]
            solve_board(solved_board)
        else:
            try:
                row, col, num = map(int, input_key.split())
                if not (1 <= row <= 9 and 1 <= col <= 9 and 1 <= num <= 9):
                    raise ValueError
                if board[row-1][col-1] != ' ':
                    print('�33[91m请输入符合规则的数字!�33[0m')
                else:
                    if is_valid(board, num, row-1, col-1):
                        board[row-1][col-1] = num
                    else:
                        print('�33[91m请输入符合规则的数字!�33[0m')
            except ValueError:
                print('�33[91m请输入符合规则的数字!�33[0m')
    
    os.system('clear' if os.name == 'posix' else 'cls')
    print('完成的数列表:')
    print_board(solved_board)

play_game()

请注意,这只是一个简单的示例,可能还有一些改进的空间,例如更好的用户界面和输入验证。你可以根据自己的需求进行修改和优化。

Python 9x9 数独游戏 - 随机生成,可玩,按规则输入数字

原文地址: https://www.cveoy.top/t/topic/o37B 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录