繁体   English   中英

我的程序中的数组问题有人可以帮助我吗?

[英]Array issue in my program can someone help me?

嗨,我一直在尝试在 pygame 中编写扫雷器作为我的第一个视频游戏。 我一直在尝试创建一个数组,它告诉我每个像素上有多少炸弹在半径为 3x3 的范围内检查另一个数组内部,该数组在 10 x 8 网格上生成 10 个炸弹(该数组实际上是 12 x 10 以便如果您检查拐角处的炸弹并尝试检查 position 0,0 之前的位置,它不会崩溃)。 但无论我做什么,我都无法让它发挥作用。 请帮我。

import random
import numpy as np
num_bomb = 10
num_cell_x = 10
num_cell_y = 8
bombs = np.zeros([int(num_cell_y+2),int(num_cell_x+2)],dtype = np.uint)
for i in range(num_bomb):
        bombs[random.randint(1,num_cell_y),random.randint(1,num_cell_x)] = 1
num_bombs = np.zeros([num_cell_y,num_cell_x],dtype = np.uint)
# The part that doesn't work:
for x in range(0,num_cell_x):
    for y in range(0,num_cell_y):
        bomb_count = 0
        if bombs[y,x] == 0:
            for sy in range(y-1,y+1):
                for sx in range(x-1,x+1):
                    if bombs[sy,sx] == 1:
                        num_bombs[y,x] += 1

print(bombs)
print()
print(num_bombs)

我认为最简单的方法是使用卷积 2D 和 kernel np.ones((3, 3))

import scipy.signal
num_bombs = scipy.signal.convolve2d(bombs, np.ones((3, 3), mode='same')

https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.convolve2d.html

range(a, b)生成数字 sin range [a, b[ 分别所有数字 >= a但 < b 因此,您必须生成范围range(y-1,y+2)range(x-1,x+2)而不是range(y-1,y+1)range(x-1,x+1) :

for sy in range(y-1,y+2):
    for sx in range(x-1,x+2):
        # [...]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM