我是编程新手,正在尝试用Pygame创建一款战舰游戏。我的游戏功能和AI与玩家的对比,目前我正在努力研究如何将AI的炸弹放到适当的位置。我已经创建了一个函数(bombs),它将grid[row][column]设置为2,如果单击它,它将输出"Boom“。如果我将和单个值设置为2,如第55行所示,但我希望随机设置炸弹,它就会起作用。
我游戏中处理人工智能炸弹的部分:
import random
def bombs():
for i in range(0,8):
row = random.randint(1,8)
column = random.randint(1,8)
grid[row][column] = 2
print(row,column)
i = i+1
# Create a 2 dimensional array. A two dimensional array is simply a list of lists.
grid = []
for row in range(8):
# Add an empty array that will hold each cell
# in this row
grid.append([])
for column in range(0,8):
grid[row].append(0) # Append a cell错误:
Traceback (most recent call last):
File "C:\Users\hazza\OneDrive\Desktop\Python\CHECK.py", line 54, in <module>
bombs()
File "C:\Users\hazza\OneDrive\Desktop\Python\CHECK.py", line 9, in bombs
grid[row][column] = 2
IndexError: list index out of range发布于 2020-08-19 00:32:54
random.randint(a, b)生成一个随机整数N,使得一个<= N <= b.列表索引从0开始。
使用random.randrange在指定范围内生成随机列和行:
row = random.randrange(8)
column = random.randrange(8)
grid[row][column] = 2random.randrange的工作原理与range类似,但它不生成范围,它只返回指定范围内的随机数。
发布于 2020-08-19 00:32:32
你的grid有8个项目,索引从0到7(从零开始索引)。但是,random.randint(1,8)采用1到8之间的随机数,包括边界值。因此,如果随机数是8,您会得到这个索引超出范围的错误(您可以很容易地通过print在该行之前的值来调试它
将其更改为
row = random.randint(0,7) # column the samehttps://stackoverflow.com/questions/63472822
复制相似问题