嗨,我一直在嘗試在 pygame 中撰寫掃雷艇作為我的第一個視頻游戲。我一直在嘗試創建一個陣列,在每個像素上告訴我 3x3 半徑內有多少炸彈正在檢查另一個陣列的內部,該陣列在 10 x 8 的網格上生成 10 個炸彈(該陣列實際上是 12 x 10,因此如果您檢查拐角處的炸彈并嘗試檢查位置 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)
uj5u.com熱心網友回復:
range(a, b)生成數字 sin 范圍 [a, b[ 分別為所有數字 >=a但 < b。因此,您必須生成范圍range(y-1,y 2)andrange(x-1,x 2)而不是range(y-1,y 1)and range(x-1,x 1):
for sy in range(y-1,y 2):
for sx in range(x-1,x 2):
# [...]
uj5u.com熱心網友回復:
我認為做你想做的最簡單的方法是使用卷積 2D 和內核 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
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/361513.html
