【发布时间】:2021-12-18 08:40:34
【问题描述】:
代码如下:
import random
import numpy as np
class Room:
def __init__(self, name, contents):
self.name = name
self.contents = contents
rooms = np.zeros((11, 11))
maxRooms = 7
possibleNextRoom = []
def resetLevel():
global rooms
for r in range(len(rooms[0])):
for c in range(len(rooms[1])):
rooms[r][c] = 0
possibleNextRoom = []
halfHeight = int(len(rooms[1]) / 2)
halfWidth = int(len(rooms[0]) / 2)
rooms[halfWidth][halfHeight] = 1
def countRooms():
global rooms
roomCount = 0
for r in range(len(rooms)):
for c in range(len(rooms)):
if rooms[r][c] == 1:
roomCount += 1
return roomCount
def findPossibleRooms():
for r in range(len(rooms) - 1):
for c in range(len(rooms) - 1):
if rooms[r][c] == 1:
if rooms[r][c+1] != 1:
possibleNextRoom.append((r, c+1))
if rooms[r][c-1] != 1:
possibleNextRoom.append((r, c-1))
if rooms[r-1][c] != 1:
possibleNextRoom.append((r-1, c))
if rooms[r+1][c] != 1:
possibleNextRoom.append((r+1, c))
def addRoom():
nextRoom = random.randrange(0, len(possibleNextRoom))
rooms[possibleNextRoom[nextRoom][0]][possibleNextRoom[nextRoom][1]] = 1
possibleNextRoom.pop(nextRoom)
def generateLevel():
resetLevel()
while countRooms() < maxRooms:
countRooms()
findPossibleRooms()
addRoom()
def displayLevel():
print(rooms)
generateLevel()
displayLevel()
这是错误:
ValueError: empty range for randrange() (0, 0, 0)
我以为我正确地使用了随机数,但显然不是。我试着让数组从里面的东西开始,但它仍然给了我同样的错误。我已经为此工作了很长时间,这让我很头疼。对此的任何帮助将不胜感激。错误在第 54 行。
【问题讨论】:
-
错误出现在第 54 行 @Leo
-
在调用该函数之前尝试打印
possibleNextRoom。你会看到它是空的。 -
这行得通,但现在它给了我 TypeError: 'int' object is not subscriptable on line 56
-
原因 #31857 为什么你不想摆弄全局变量。您确实需要通过传递参数和返回结果来学习如何正确使用函数,因为这种类型的编程会导致这种类型的问题:真的很难找到错误。
-
我知道是什么意思,但是 rooms 和 possibleNextRoom 都是数组@Leo
标签: python arrays python-3.x numpy random