【问题标题】:Text based adventure game inventory problems python基于文本的冒险游戏库存问题python
【发布时间】:2013-11-03 23:47:00
【问题描述】:

我一直在开发一款基于恐怖短信的假牙游戏,但我遇到了一些库存问题。库存是我可以在任何函数中调用的数组。我有点到了那里,但我只是每次都用新的库存重新填充我的阵列。我可以使用一些帮助,这些是我的库存功能:

#Populating an aray with items to be used throughout the game.
def createItems():
   items = range(0, 11)
   if items[9] != "full":
      items[1] = ("Axe")
      items[2] = ("Gas")
      items[3] = ("keys")
      items[4] = ("gun")
      items[5] = ("note")
      items[9] = ("full")
      return items
   else:
      return items 
# this function is going to check if the item passed to it is still in the array
def checkItems(item):
  list = createItems()
  itemC = item
  for i in range (0, 11):
    if list[i] == itemC:
      return ("no")
      break

def createInventory():
   inv = range(0 , 11)
   inv[10] = ("made")
   if inv[10] != ("made"):
      for i in range (0, 11):
         inv[i] = 0
   return inv

def stockInventory(item):
  inv = createInventory()
  for i in range (0, 11):
     if inv[i] == 0:
       inv[i] = item 
       break
       return inv

def checkInventory(item):
    itemC = item
    inv = createInventory()
    for i in range(0, 11):
       if itemC == inv[i]:
          return ("yes")

【问题讨论】:

  • 请正确缩进你的代码,这是不可能的。
  • 刚刚对 @DanielRoseman 感到抱歉
  • 这将很难回答,因为这段代码中有四五个真正的基本误解。我建议你看看docs.python.org/2/tutorial 的第 1-5 节,然后再回到这个...
  • 你能说出几个吗,它几乎可以工作。在里面有东西之后,我在进入库存时遇到了一个小问题。 @MrE
  • 1) checkInventory 调用 createInventory 这意味着您每次都返回一个新库存,而不是将其存储在变量中并将其作为参数传递。 2)你在break之后直接调用return(即你永远不会打return语句),同样breakreturn之后,3)如何构造一个字符串列表4)设置inv[10]到一个值,然后立即检查该值是什么......

标签: python python-2.7 inventory


【解决方案1】:

这可能不是答案,但从我从代码和问题中可以看出,这应该会有所帮助。请注意您的代码和我的代码中的差异并进行相应的更改。

# Main Inventory
Inventory = createInventory()

# Populating given inventory aray with items to be used throughout the game.
def createItems(inv):
    items = inv
    items[1] = "Axe"
    items[2] = "Gas"
    items[3] = "keys"
    items[4] = "gun"
    items[5] = "note"
    items[9] = "full"

# Check if the item passed to it is still in the inventory array
def checkItems(item):
    items = Inventory
    for i in range(len(items)):
        if items[i] == item:
            return "yes"
    return "no"

def createInventory():
    inv = range(11)
    inv[10] = "made"
    return inv

def stockInventory(item):
    inv = Inventory
    for i in range (11):
        if inv[i] == 0:
            inv[i] = item
            break
    return inv

def checkInventory(item):
    inv = Inventory
    for i in range(0, 11):
        if item == inv[i]:
            return "yes"
    return "no"

【讨论】:

  • 谢谢,这就是我要找的。我不知道 python 支持的全局变量。坏老师...
  • 看看这个 - docs.python.org/2/faq/…
【解决方案2】:

您可以将库存设为布尔值。

inventory = {"sword":True, "axe":True}

这也有助于为您的库存制作课程。

class Weapon():

    def attack(self, monster):
        pass

class Axe(Weapon):
    def __init__(self):
        self.name = "axe"
        self.damage = 1

    def attack(self, monster):
        monster.hp -= self.damage

【讨论】:

    猜你喜欢
    • 2018-07-28
    • 2016-08-25
    • 2013-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多