【发布时间】:2021-11-09 14:51:24
【问题描述】:
这里是代码有问题的部分:
import numpy as np
class Player():
def __init__(self, health, maxHealth, baseDmg, dmg, name, weapons, items, isAlive, previousRoom, room):
self.health = health
self.maxHealth = maxHealth
self.baseDmg = baseDmg
self.dmg = dmg
self.name = name
self.weapons = weapons
self.items = items
self.isAlive = isAlive
self.previousRoom = previousRoom
self.coords = (0, 0)
def Move(self, direction):
if direction not in self.room.exits:
print("Cannot Move In That Direction!")
return
newRoomName = self.room.exits[direction]
self.previousRoom = self.room.name
print("Moving to", newRoomName)
world[newRoomName] = newRoomName
self.room = world[newRoomName]
class Room():
def __init__(self, name, description, exits, hasWeapon, weapon, hasItem, item, hasEnemy, enemy, isFirstVisit, coords):
self.name = name
self.description = description
self.exits = exits
self.hasWeapon = hasWeapon
self.weapon = weapon
self.hasItem = hasItem
self.item = item
self.hasEnemy = hasEnemy
self.enemy = enemy
self.isFirstVisit = isFirstVisit
self.coords = coords
world = {}
rooms = np.empty((11,11), object)
rooms[5][5] = Room(
"room1",
"",
{"E": "room2"},
False,
None,
False,
None,
False,
None,
True,
(5, 5)
)
rooms[5][6] = Room(
"room2",
"",
{"W": "room1"},
False,
None,
False,
None,
False,
None,
True,
(5, 5)
)
counter = 1
world["room1"] = rooms[3][3]
world["room2"] = rooms[3][4]
player = Player(10, 10, 5, 5, "Jedidiah", [], [], True, world["room1"].coords, world["room1"].coords)
我想要做的是使用 2d 数组和字典(根据项目要求)在 python 中创建一个移动系统,但它一直给我一个错误,说“str object has no attribute 'coords'”:
Traceback (most recent call last):
File "main.py", line 75, in <module>
player = Player(10, 10, 5, 5, "Ethan", [], [], True, world["room1"].coords, world["room1"].coords)
AttributeError: 'NoneType' object has no attribute 'coords'
我不知道为什么会这样,但我确信这是一个简单的解决方案。我是编程新手,所以请让答案尽可能简单。感谢所有帮助。
【问题讨论】:
-
np.empty 创建一个空数组,world["room1"] 设置为索引 rooms[3][3] 处的数组。由于它是空的,因此您不能在其上使用 .coords。您的意思是让 world["room1"] 和 world["room2"] 成为您之前制作的房间吗?它们设置在不同的指标上。
-
你需要
world["room1"] = rooms[5][5]和world["room2"] = rooms[5][6] -
天哪,我真是个白痴。太感谢了。我现在真的很笨
标签: python python-3.x numpy object