Newer
Older
newgame5081 / minesweeper
import random

def initialize_board(board_size, nummines):
    board = [[' ' for  in range(boardsize)] for  in range(board_size)]
    mines = random.sample(range(board_size * board_size), num_mines)

    for mine in mines:
        row = mine // board_size
        col = mine % board_size
        board[row][col] = ''

    return board

def print_board(board):
    board_size = len(board)

    print("  " + " ".join([str(i) for i in range(board_size)]))
    print("  " + "-" (board_size * 2 + 1))

    for i in range(board_size):
        print(str(i) + "|", end="")
        for j in range(board_size):
            print(board[i][j] + " ", end="")
        print("|")

    print("  " + "-" * (board_size * 2 + 1))

def count_adjacent_mines(board, row, col):
    board_size = len(board)
    directions = [(1, 0), (-1, 0), (0, 1), (0, -1), (1, 1), (-1, -1), (1, -1), (-1, 1)]
    count = 0

    for dr, dc in directions:
        r, c = row + dr, col + dc
        if 0 <= r < board_size and 0 <= c < board_size and board[r][c] == '':
            count += 1

    return count

def play_game(board_size, num_mines):
    board = initialize_board(board_size, nummines)
    revealed = [[' ' for  in range(boardsize)] for  in range(board_size)]
    game_over = False

    while not game_over:
        print_board(revealed)
        row = int(input("行を選択してください: "))
        col = int(input("列を選択してください: "))

        if board[row][col] == '':
            game_over = True
        else:
            revealed[row][col] = str(count_adjacent_mines(board, row, col))

    print_board(board)
    print("ゲームオーバー!")

if name == "main":
    board_size = 5
    num_mines = 5
    play_game(board_size, num_mines)