Initial commit with a mostly working engine.
Basic commands are being parsed. I think the only weird part is the 'use' command because it needs to possibly target two things. A tiny test example is provided in __main__, this will probably be broken out later. Signed-off-by: Alek Ratzloff <alekratz@gmail.com>
This commit is contained in:
115
agame/__main__.py
Normal file
115
agame/__main__.py
Normal file
@@ -0,0 +1,115 @@
|
||||
from agame.action import *
|
||||
from agame.game import *
|
||||
from agame.item import *
|
||||
from agame.room import *
|
||||
from agame.trigger import *
|
||||
|
||||
|
||||
# TODO - take a custom module name that has:
|
||||
# .database
|
||||
# .game
|
||||
# so that you can just RUN it
|
||||
# Something similar to wsgi using "app" in the passed module
|
||||
|
||||
|
||||
# This is the *game* here
|
||||
database = Database()
|
||||
database.add_items(
|
||||
Item(
|
||||
id="glowing_rock",
|
||||
name="glowing rock",
|
||||
desc="This rock is glowing.",
|
||||
synonyms=("rock",),
|
||||
room_desc="You see a ((glowing rock)). You have **got** to have it.",
|
||||
triggers={
|
||||
GET: [
|
||||
PrintAction(
|
||||
"You try to pick up the rock, but it slips out of your greasy hands.",
|
||||
"Maybe you should wash your hands, you disgusting little man.",
|
||||
)
|
||||
],
|
||||
LOOK: [PrintAction("Man, that rock looks awesome.")],
|
||||
},
|
||||
),
|
||||
Item(
|
||||
id="cell_door",
|
||||
name="door",
|
||||
room_desc="A ((door)) sits on the far wall.",
|
||||
triggers={
|
||||
GET: [PrintAction("The door is pretty attached to its wall.")],
|
||||
OPEN: [
|
||||
CheckVarAction(
|
||||
"cell_door_open",
|
||||
Compare.EQUALS,
|
||||
True,
|
||||
yes=[
|
||||
PrintAction(
|
||||
"It's already open. You push on the door even //more//, just in case."
|
||||
),
|
||||
SleepAction(1.0),
|
||||
PrintAction("..."),
|
||||
SleepAction(1.0),
|
||||
PrintAction("Yup, still open."),
|
||||
],
|
||||
no=[
|
||||
SetVarAction("cell_door_open", True),
|
||||
PrintAction("The door swings open, thanks to you."),
|
||||
],
|
||||
)
|
||||
],
|
||||
CLOSE: [
|
||||
CheckVarAction(
|
||||
"cell_door_open",
|
||||
Compare.EQUALS,
|
||||
True,
|
||||
yes=[
|
||||
PrintAction("You close that door. Nice job."),
|
||||
SetVarAction("cell_door_open", False),
|
||||
],
|
||||
no=[PrintAction("The door is already closed.")],
|
||||
)
|
||||
],
|
||||
LOOK: [
|
||||
CheckVarAction(
|
||||
"cell_door_open",
|
||||
Compare.EQUALS,
|
||||
True,
|
||||
yes=[PrintAction("It's a door, wide open, because you opened it.")],
|
||||
no=[PrintAction("A closed door. You can change this.")],
|
||||
)
|
||||
],
|
||||
},
|
||||
),
|
||||
)
|
||||
database.add_rooms(
|
||||
Room(
|
||||
id="start",
|
||||
name="Test room",
|
||||
desc="You're in ((Todd's Test Cell)).",
|
||||
items=[
|
||||
database.items["glowing_rock"].create_inst(),
|
||||
database.items["cell_door"].create_inst(),
|
||||
],
|
||||
),
|
||||
)
|
||||
|
||||
# Build the game state
|
||||
game = Game(
|
||||
database=database,
|
||||
room=database.rooms["start"],
|
||||
vars={
|
||||
"cell_door_open": False,
|
||||
},
|
||||
)
|
||||
|
||||
game.print_room()
|
||||
while True:
|
||||
try:
|
||||
game.say()
|
||||
line = input("> ")
|
||||
game.say()
|
||||
game.run_command(line)
|
||||
except (KeyboardInterrupt, EOFError):
|
||||
game.say()
|
||||
game.say("Bye.")
|
||||
break
|
||||
Reference in New Issue
Block a user