【问题标题】:how do I get the mov function to work properly如何让 mov 功能正常工作
【发布时间】:2021-06-17 00:25:30
【问题描述】:

所以,我有这个输入命令,它应该给用户无提示的输入,如果它是一个无效的命令来输出“输入”是一个无效的命令。但是,向北、向西等是一个有效的命令,但代码无法识别它。请帮助:)

顺便说一句,播放器是一个模块,其中包含一个用于移动播放器位置的类。

代码:

import world, tiles
from player import Player

game = "play"
while game == "play":
    x = input()
    y = " is not a valid command"
    string = x + y
    
    if x == "go north":
        Player.go_north

    if x == "go south":
        Player.go_south
    if x == "go east":
        Player.go_east

    if x == "go west":
        Player.go_west

    if x == "pick up":
        print("pick up what?")

    else:
        print(string)

【问题讨论】:

  • 首先你需要创建一个类的实例来使用它们,比如a_player = Player(),其次你必须在方法名后面加上()才能调用它:即@ 987654324@.

标签: python module adventure


【解决方案1】:

似乎有几件事可能是错误的。首先,Player.go_* 被引用为属性,但我希望它们应该是函数,如果它们 什么?从技术上讲,我猜它们可能是属性,但这感觉像是错误的使用方式。

其次,我认为您的 if/else 逻辑不是您想要的。您检查每个方向,但即使成功,它也会下降到下一个if 语句。所以在最后一次检查时会发生什么,如果它不是“拾取”,它总是会打印出无效的命令字符串。您要么希望每个条件都成为 if/elif/else 的一部分,这样一旦命中一个,它就会跳过其他条件,或者您需要在任何成功检查后拥有 continue,因为如果找到匹配项,您只想继续循环。

比如:

import world, tiles
from player import Player

player = Player()
game = "play"
while game == "play":
    x = input()
    y = " is not a valid command"
    string = x + y
    
    if x == "go north":
        player.go_north()
    elif x == "go south":
        player.go_south()
    elif x == "go east":
        player.go_east()
    elif x == "go west":
        player.go_west()
    elif x == "pick up":
        print("pick up what?")
    else:
        print(string)

【讨论】:

  • 所以我这样做了,它解决了这个问题,但随后出现了一个参数错误,说我错过了 'self' 添加了它,但得到了这个错误。 Player.go_west(self) NameError: name 'self' is not defined
  • Player是一个类,听起来go_north()等都是实例方法。您必须实例化 Player。将更新示例。
  • 不确定你的意思,所以我猜,可能from player 语句和使用player 作为局部变量之间存在冲突...您可以尝试重命名@987654329 @到别的东西,看看有没有帮助。
猜你喜欢
  • 2013-01-06
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
  • 2021-06-15
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
相关资源
最近更新 更多