You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
91 lines
2.4 KiB
91 lines
2.4 KiB
from pyoo.interpret import Interpreter
|
|
from pyoo.things import Thing, Place, Player
|
|
from pyoo.base import make_verb, PyooVerbNotFound
|
|
|
|
|
|
class Hammer(Thing):
|
|
def __init__(self):
|
|
Thing.__init__(self, "hammer", "a heavy ball-peen hammer.")
|
|
|
|
@make_verb("hit", "that", "with", "this")
|
|
def hit(self, verb_callframe):
|
|
try:
|
|
verb_callframe.dobj.handle_hit(self)
|
|
except AttributeError:
|
|
pass
|
|
|
|
@make_verb("drop", "this", "none", "none")
|
|
def drop(self, verb_callframe):
|
|
print(verb_callframe)
|
|
|
|
@make_verb("get", "this", "none", "none")
|
|
def get(self, verb_callframe):
|
|
print(verb_callframe)
|
|
|
|
|
|
class Nail(Thing):
|
|
def __init__(self):
|
|
Thing.__init__(self, "nail", "a nine inch nail.")
|
|
self.depth = 1
|
|
|
|
def handle_hit(self, hitter):
|
|
if self.depth > 0:
|
|
print("bang! the nail is hammered.")
|
|
self.depth -= 1
|
|
else:
|
|
print("ping! the nail won't go deeper.")
|
|
|
|
def contents_desc_hook(self):
|
|
if self.depth > 0:
|
|
return "You see a nail sticking out "+str(self.depth)+"cm."
|
|
else:
|
|
return "You see a nail fully hammered in."
|
|
|
|
|
|
class HammerTime(Place):
|
|
def __init__(self):
|
|
Place.__init__(self, "HAMMERTIME")
|
|
self.handle_enter(Hammer())
|
|
self.handle_enter(Nail())
|
|
|
|
@make_verb("look,l", "none", "none", "none")
|
|
def look(self, verb_callframe):
|
|
for cont in self.contents:
|
|
try:
|
|
print(cont.contents_desc_hook())
|
|
except AttributeError:
|
|
continue
|
|
print("You see a hammer.")
|
|
|
|
@make_verb("look,l", "that", "none", "none")
|
|
def look_at(self, verb_callframe):
|
|
if verb_callframe.dobj:
|
|
dobj = verb_callframe.dobj
|
|
print("%s: %s" % (dobj.name, dobj.description))
|
|
else:
|
|
print("That doesn't appear to be here.")
|
|
|
|
|
|
hammertime = HammerTime()
|
|
game = Interpreter([hammertime])
|
|
player = Player("player")
|
|
game.add_player(player)
|
|
game.handle_move(hammertime, player)
|
|
game.update()
|
|
run = True
|
|
if __name__ == "__main__":
|
|
while run:
|
|
cmd = ""
|
|
try:
|
|
cmd = input(">")
|
|
except EOFError:
|
|
run = False
|
|
if cmd.startswith("quit"):
|
|
run = False
|
|
else:
|
|
try:
|
|
game.interpret(cmd, player)
|
|
except PyooVerbNotFound:
|
|
print("I don't understand that.")
|
|
|
|
print("Bye!")
|
|
|