数独游戏代码

import random

import tkinter as tk

from tkinter import messagebox, ttk  # 新增ttk导入

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="")

            if board[i][j] == 0:

                print("  ", end="")

            else:

                print(str(board[i][j]) + " ", end="")

        print()

def is_valid(board, row, col, num):

    """检查数字是否可以放置在指定位置"""

    # 检查行

    for i in range(9):

        if board[row][i] == num:

            return False

    # 检查列

    for i in range(9):

        if board[i][col] == num:

            return False

    # 检查3x3宫格

    start_row, start_col = 3 * (row // 3), 3 * (col // 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 generate_sudoku():

    """生成已解决的数独(回溯法)"""

    board = [[0 for _ in range(9)] for _ in range(9)]

   

    def backtrack(row, col):

        if row == 9:

            return True

        if col == 9:

            return backtrack(row + 1, 0)

        if board[row][col] != 0:

            return backtrack(row, col + 1)

       

        nums = list(range(1, 10))

        random.shuffle(nums)

        for num in nums:

你可能感兴趣的:(游戏)