python扫雷游戏代码

import tkinter as tk
import random

# 游戏板的行数和列数
ROWS = 10
COLS = 10

# 地雷数
MINES = 10

class MineSweeper(tk.Tk):
    def __init__(self):
        super().__init__()

        # 创建一个游戏板
        self.game_board = tk.Frame(self, borderwidth=2, relief='sunken')
        self.game_board.pack(side='top', padx=5, pady=5)

        # 初始化游戏板
        self.create_board()

    def create_board(self):
        # 创建一个空的游戏板
        self.board = [[None for _ in range(COLS)] for _ in range(ROWS)]

        # 添加地雷
        self.add_mines()

        # 计算每个方块周围的地雷数
        self.calculate_numbers()

        # 在游戏板上显示每个方块
        for row in range(ROWS):
            for col in range(COLS):
                # 创建一个方块
                cell = tk.Label(self.game_board, text=' ',
                                width=2, height=1, relief='raised')
                cell.grid(row=row, column=col)
                cell.bind('', self.handle_left_click)
                cell.bind('', self.handle_right_click)

                # 将方块添加到游戏板上
                self.board[row][col] = {
                    'cell': cell,
                    'mine': False,
                    'number': None,
                    'revealed': False,
                    'flagged': False
                }

    def add_mines(self):
        # 在游戏板上随机添加地雷
        mines_added = 0
        while mines_added < MINES:
            row = random.randint(0, ROWS - 1)
            col = random.randint(0, COLS - 1)
            if not self.board[row][col]['mine']:
                self.board[row][col]['mine'] = True
                mines_added += 1

    def calculate_numbers(self):
        # 计算每个方块周围的地雷数
        for row in range(ROWS):
            for col in range(COLS):
                if not self.board[row][col]['mine']:
                    # 计算周围的方块
                    neighbors = []
                    for d_row in range(-1, 2):
                        for d_col in range(-1, 2):
                            n_row = row + d_row
                            n_col = col + d_col
                            if n_row >= 0 and n_row < ROWS and n_col >= 0 and n_col < COLS:
                                neighbors.append(self.board[n_row][n_col])

                    # 计算周围地雷数
                    num_mines = sum(1 for n in neighbors if n['mine'])

                    # 将地雷数保存在方块上
                    self.board[row][col]['number'] = num_mines

    def handle_left_click(self, event):
        # 点击方块左键时的处理函数
       
 

你可能感兴趣的:(python,游戏,开发语言)