如何解决为什么我的程序会生成列表索引问题?
我真的是编程新手,正在尝试使用Pygame创建战舰游戏。我的游戏功能和AI对玩家的关系,目前我正在努力如何放置AI的炸弹。我创建了一个将bombs
设置为grid[row][column]
的函数(2
),如果单击该函数,它将输出“ Boom”。如果将第55行中所示的值和单个值设置为2,它会起作用,但是我希望将炸弹随机设置。
我的游戏中处理AI炸弹的部分:
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
解决方法
random.randint(a,b)
生成一个随机整数 N ,使得 a 。列表索引从0开始。
使用random.randrange
生成指定范围内的随机列和行:
row = random.randrange(8)
column = random.randrange(8)
grid[row][column] = 2
random.randrange
的工作方式类似于range
,但它不会生成范围,它只会返回指定范围内的随机数。
您的grid
有8项,索引从0到7(从零开始的索引)。但是,random.randint(1,8)
取1到8之间的随机数,包括边界值。因此,如果随机数为8,则会使该索引超出范围错误(可以通过在行前print
设置值来轻松调试它
更改为
row = random.randint(0,7) # column the same
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。