鱼C论坛

 找回密码
 立即注册
查看: 1010|回复: 6

[已解决]小白求助 如何用python做地雷游戏

[复制链接]
发表于 2020-5-19 16:30:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
创建一个10x10游戏板,并隐藏地雷。 不是地雷的地方标记为。,而地雷则标记为#。
地雷的可能性是通过产生随机数来确定的。 如果要使总数的30%成为地雷,如果生成的随机数少于0.3,则将当前空间确定为地雷。
最佳答案
2020-5-19 18:31:36
以下是百度的结果

import random


def minesweeper(m, n, p):
    # m行 n列 p为概率
    matrix = [[0 for col in range(n + 2)] for row in range(m + 2)]
    for row in range(1, m + 1):
        for col in range(1, n + 1):
            ran = random.random()
            if ran > p:
                matrix[row][col] = 0  # 如果ran大于p,说明不是地雷。因为这里的p表示的是地雷的概率。
            else:
                matrix[row][col] = "#"

    for row in range(1, m + 1):
        for col in range(1, n + 1):
            if matrix[row][col] == "#":  # 如果这个地方是地雷,就在它周围一圈里的非地雷方格都加1
                for i in range(row - 1, row + 1 + 1):
                    for j in range(col - 1, col + 1 + 1):
                        if matrix[i][j] != "#":  # 只有在该方格不是地雷的时候才会+1
                            matrix[i][j] += 1
    # 打印
    for i in range(1, m + 1):
        for j in range(1, n + 1):
            print("#", end=" ") if matrix[i][j] == "#" else print(".", end=" ")
        print()

    print()

    for i in range(1, m + 1):
        for j in range(1, n + 1):
            print(matrix[i][j], end=" ")
        print()
minesweeper(10,10,0.3) # 10行10列,每个格子为地雷的概率为0.3


虽然是百度的,但是还是想要个最佳哈哈~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-19 16:31:24 | 显示全部楼层
本帖最后由 Twilight6 于 2020-5-19 17:48 编辑

看看百度多好用?以下是百度的结果
import random


def minesweeper(m, n, p):
    # m行 n列 p为概率
    matrix = [[0 for col in range(n + 2)] for row in range(m + 2)]
    for row in range(1, m + 1):
        for col in range(1, n + 1):
            ran = random.random()
            if ran > p:
                matrix[row][col] = 0  # 如果ran大于p,说明不是地雷。因为这里的p表示的是地雷的概率。
            else:
                matrix[row][col] = "*"

    for row in range(1, m + 1):
        for col in range(1, n + 1):
            if matrix[row][col] == "*":  # 如果这个地方是地雷,就在它周围一圈里的非地雷方格都加1
                for i in range(row - 1, row + 1 + 1):
                    for j in range(col - 1, col + 1 + 1):
                        if matrix[i][j] != "*":  # 只有在该方格不是地雷的时候才会+1
                            matrix[i][j] += 1
    # 打印
    for i in range(1, m + 1):
        for j in range(1, n + 1):
            print("*", end=" ") if matrix[i][j] == "*" else print(".", end=" ")
        print()

    print()

    for i in range(1, m + 1):
        for j in range(1, n + 1):
            print(matrix[i][j], end=" ")
        print()
minesweeper(10,10,0.3) # 10行10列,每个格子为地雷的概率为0.3
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 16:38:30 | 显示全部楼层
百度
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-19 16:42:36 | 显示全部楼层
我去,改代码可以,做的话很不妥
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 16:43:08 | 显示全部楼层
不过改代码也是那些大佬的事情(😊)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 18:08:06 | 显示全部楼层
看看百度多好用嘿嘿?以下是百度的结果
import random


def minesweeper(m, n, p):
    # m行 n列 p为概率
    matrix = [[0 for col in range(n + 2)] for row in range(m + 2)]
    for row in range(1, m + 1):
        for col in range(1, n + 1):
            ran = random.random()
            if ran > p:
                matrix[row][col] = 0  # 如果ran大于p,说明不是地雷。因为这里的p表示的是地雷的概率。
            else:
                matrix[row][col] = "*"

    for row in range(1, m + 1):
        for col in range(1, n + 1):
            if matrix[row][col] == "*":  # 如果这个地方是地雷,就在它周围一圈里的非地雷方格都加1
                for i in range(row - 1, row + 1 + 1):
                    for j in range(col - 1, col + 1 + 1):
                        if matrix[i][j] != "*":  # 只有在该方格不是地雷的时候才会+1
                            matrix[i][j] += 1
    # 打印
    for i in range(1, m + 1):
        for j in range(1, n + 1):
            print("*", end=" ") if matrix[i][j] == "*" else print(".", end=" ")
        print()

    print()

    for i in range(1, m + 1):
        for j in range(1, n + 1):
            print(matrix[i][j], end=" ")
        print()
minesweeper(10,10,0.3) # 10行10列,每个格子为地雷的概率为0.3
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 18:31:36 | 显示全部楼层    本楼为最佳答案   
以下是百度的结果

import random


def minesweeper(m, n, p):
    # m行 n列 p为概率
    matrix = [[0 for col in range(n + 2)] for row in range(m + 2)]
    for row in range(1, m + 1):
        for col in range(1, n + 1):
            ran = random.random()
            if ran > p:
                matrix[row][col] = 0  # 如果ran大于p,说明不是地雷。因为这里的p表示的是地雷的概率。
            else:
                matrix[row][col] = "#"

    for row in range(1, m + 1):
        for col in range(1, n + 1):
            if matrix[row][col] == "#":  # 如果这个地方是地雷,就在它周围一圈里的非地雷方格都加1
                for i in range(row - 1, row + 1 + 1):
                    for j in range(col - 1, col + 1 + 1):
                        if matrix[i][j] != "#":  # 只有在该方格不是地雷的时候才会+1
                            matrix[i][j] += 1
    # 打印
    for i in range(1, m + 1):
        for j in range(1, n + 1):
            print("#", end=" ") if matrix[i][j] == "#" else print(".", end=" ")
        print()

    print()

    for i in range(1, m + 1):
        for j in range(1, n + 1):
            print(matrix[i][j], end=" ")
        print()
minesweeper(10,10,0.3) # 10行10列,每个格子为地雷的概率为0.3


虽然是百度的,但是还是想要个最佳哈哈~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-21 06:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表