我正在研究战舰游戏,此时我已经为游戏创建了一个网格,并且for循环调用“get_location”函数为每艘船随机生成位置。有“if”语句测试船只在放置之前是否适合所选位置,然后有一个添加船只功能将船舶放置在网格上。 但有时人工智能会放置船只,它会离开网格,我得到“列表索引超出范围”错误。
我知道错误在说什么,但我无法弄清楚如何解决它。我希望有人可以帮助我解决这个问题。以下是导致问题的代码部分:
def get_location(index):
# Get the name and size from the lists using the index.
name = VESSEL_NAMES[index]
size = VESSEL_SIZES[index]
column = random.randint(0, GRID_WIDTH)
row = random.randint(0, GRID_HEIGHT)
direction = random.randint(H, V) # H=0, V=1 (global constants)
print()
if (direction == H and column + size > GRID_WIDTH) :
get_location(index)
print()
if (direction == V and row + size > GRID_HEIGHT) :
get_location(index)
print()
else :
add_vessel(index, row, column, direction)
提前感谢您的回复。
答案 0 :(得分:0)
我可能在这里遗漏了一些东西,但是random.randint(0,GRID_WIDTH)可能会给你GRID_WIDTH,我认为它会超出索引吗?