Renpy ELIF声明

时间:2018-08-23 06:28:53

标签: python renpy

我一直在看renpy的关于如何做出选择的教程,并且在大多数情况下,除了一件小事之外,都已经弄清楚了。

如何正确使用elif语句? 我已经查看了基本的python elif语句,甚至是有关如何在renpy中使用它的实际站点,但无法使其正常工作。

(我已附上我的代码的屏幕截图以及错误,非常感谢您的帮助)

这是我的代码的片段:

define e = Character("???")
$ mage = False
$ warrior = False
$ archer = False

# The game starts here.

label start:
# Show a background.

scene bg black

# This shows a character sprite. 

show weird orb

# These display lines of dialogue.

e "Welcome human, what is your name?"

python:
    name = renpy.input(_("What's your name?"))
    name = name.strip() or __("John")

define m = Character("[name]")

e "Hmm, [name] is it?"
e "That's a wonderful name!"
m "Where am I?"
e "You'll know in good time, my child."
e "For now, tell me a bit about yourself"
menu:
    e "Which of these do you prefer?"
    "Magic":
        jump magic
    "Brute Force":
        jump force
    "Archery":
        jump archery

label magic:
    e "You chose magic."
    $ mage = True
    jump enter

label force:
    e "You chose brute force."
    $ warrior = True
    jump enter

label archery:
    e "You chose archery."
    $ archer = True
    jump enter

label enter:
    if mage:
        m "I'm a mage."
    elif warrior:
        m "I'm a warrior."
    else:
        m "I'm an archer"
return

以下是错误的副本:

I'm sorry, but an uncaught exception occurred.

While running game code:
  File "game/script.rpy", line 66, in script
    if mage:
  File "game/script.rpy", line 66, in <module>
    if mage:
NameError: name 'mage' is not defined

-- Full Traceback ------------------------------------------------------------

Full traceback:
  File "game/script.rpy", line 66, in script
    if mage:
  File "C:\Users\ArceusPower101\Downloads\renpy-7.0.0-sdk\renpy\ast.py", line 1729, in execute
    if renpy.python.py_eval(condition):
  File "C:\Users\ArceusPower101\Downloads\renpy-7.0.0-sdk\renpy\python.py", line 1943, in py_eval
    return py_eval_bytecode(code, globals, locals)
  File "C:\Users\ArceusPower101\Downloads\renpy-7.0.0-sdk\renpy\python.py", line 1936, in py_eval_bytecode
    return eval(bytecode, globals, locals)
  File "game/script.rpy", line 66, in <module>
    if mage:
NameError: name 'mage' is not defined

Windows-8-6.2.9200
Ren'Py 7.0.0.196
Test 1.0
Thu Aug 23 02:06:20 2018

enter image description here

1 个答案:

答案 0 :(得分:2)

您的代码给您一个例外,因为这三行从不运行:

$ mage = False
$ warrior = False
$ archer = False

它们没有运行,因为它们出现在代码开始运行的start:标签上方。

有几种方法可以解决此问题。一种是简单地重新排列代码,以使start标签出现在这些行的上方。另一种选择是对每个分配使用default语句:

default mage = False
default warrior = False 
default archer = False

default语句将在游戏启动和加载游戏时运行一次,但前提是尚未定义变量。