だから私はこのエンジンを働かせようとしています、そして私はそうしましたが、それは私のプログラムを壊しました。(LPTHWより)
私は基本的に、ユーザーからの入力を 11 回取得する関数にアクセスしようとしています。ユーザーが正しい入力を推測できなかった場合、ユーザーは (ゲーム内で) 死亡しますが、エンジンから関数にプロンプトを送信するための私の修正は、入力を11回取得し、11個の入力すべてに同じ推測を使用する関数を中断します。
メインエンジンはこちら
globvar = ' '
class Game(object):
def __init__(self, start):
self.quips = [
"You died. You kinda suck at this.",
"Your mom would be proud. If she were smarter.",
"Such a luser.",
"I have a small puppy that's better at this."
]
self.start = start
def play(self):
# next_room_name is taken from init argument start
next_room_name = self.start
while True:
global globvar
print "\n--------"
# set variable room to get function from next_room_name
room = getattr(self, next_room_name)
print room.__doc__
if room == self.laser_weapon_armory:
prompt = raw_input("[keypad]> ")
elif room == self.escape_pod:
prompt = raw_input("[pod #]> ")
else:
prompt = raw_input("> ")
globvar = prompt
# unpacks function from next_room_name into room
next_room_name = room()
そして、これが機能しようとしている機能です
def laser_weapon_armory(self):
"""
You do a dive roll into the Weapon Armory, crouch and scan the room
for more Gothons that might be hiding. It's dead quiet, too quiet.
You stand up and run to the far side of the room and find the
neutron bomb in its container. There's a keypad lock on the box
and you need the code to get the bomb out. If you get the code
wrong 10 times then the lock closes forever and you can't
get the bomb. The code is 3 digits.
"""
code = "%d%d%d" % (randint(1,9), randint(1,9), randint(1,9))
guess = globvar
guesses = 0
while guess != code and guesses < 10:
print "BZZZZEDDD!"
guesses += 1
guess = globvar
if guess == code:
print "The container clicks open and the seal breaks, letting gas out."
print "You grab the neutron bomb and run as fast as you can to the"
print "bridge where you must place it in the right spot."
return 'the_bridge'
else:
print "The lock buzzes one last time and then you hear a sickening"
print "melting sound as the mechanism is fused together."
print "You decide to sit there, and finally the Gothons blow up the"
print "ship from their ship and you die."
return 'death'
そして、ここに私が得る出力があります
--------
You do a dive roll into the Weapon Armory, crouch and scan the room
for more Gothons that might be hiding. It's dead quiet, too quiet.
You stand up and run to the far side of the room and find the
neutron bomb in its container. There's a keypad lock on the box
and you need the code to get the bomb out. If you get the code
wrong 10 times then the lock closes forever and you can't
get the bomb. The code is 3 digits.
[keypad]> 124
BZZZZEDDD!
BZZZZEDDD!
BZZZZEDDD!
BZZZZEDDD!
BZZZZEDDD!
BZZZZEDDD!
BZZZZEDDD!
BZZZZEDDD!
BZZZZEDDD!
BZZZZEDDD!
The lock buzzes one last time and then you hear a sickening
melting sound as the mechanism is fused together.
You decide to sit there, and finally the Gothons blow up the
ship from their ship and you die.