Super(de)construction

text adventure game

My text-adventure game was (first and foremost a struggle and) an attempt to dive a little bit into the world of python and deal peacefully with the potential trauma of coding. The first unsuccessful try started by making a map on paper with all the possible rooms, corridors, spaces and the potential inputs of the player. It proved to be a too-ambitious plan though. So this was the time when the super(de)construction game was born! I intended to make a fan fiction text adventure game(!) of the Marxist superstructure theory. There are three basic rooms where the player can navigate: the Base-ment, the Apparatus and the Megaroom. People can grab specific “objects” from each room and check their inventory (for example you can have unpaidlabour, church, mostlywhitemen from base-ment, apparatus and megaroom respectively in the same bag!). The game aims to accumulate enough points in order to bring eventually the revolution and win. The fermentation and the radicalization happen only in the base-ment.

Will you be part of the revolutionary class?


import os , time , random

#   Setting up the current (saved) state
currentRoom = "base-ment"
start = True
graduation = False
study = 0
items = {
    "base-ment": ["unpaidlabor", "consiousness", "lackoftime", "dipression", "commodities", "collectivememory", "laborforce", "survivalmode"],
    "apparatus": ["game", "work", "symbols", "family", "church", "institutionalmemory", "army", "ideology"],
    "megaroom": ["hegemony", "control", "power", "violence", "accumulationofwealth", "property", "mostlywhiterichmen"]
}

inventory = []

#   Seperating the text and printing in delay so the content on the screen is readable and easy to comprehend
def printer (text):
    for t in text:
        print(t, end = "", flush= True)
        time.sleep(random.choice([0.0001, 0.005, 0.007]))
    print()

#   Defining the "taker" function and setting it up in each of the three rooms below
def taker(room):
    if any(x in spliti for x in ["get", "grab", "take", "carry", "steal", "expropriate"]):
        for item in items[room]: 
            if item in spliti:
                printer("You took " + item) 
                inventory.append(item)
                items[room].remove(item)

#   Creating the while-loop
while True:
    if (start == True):
        printer("""
        Super(de)construction: The game
        
        
                                    __                                         __                           __                           
                                    /\ \                                       /\ \__                       /\ \__  __                    
____  __  __  _____      __   _ __  \_\ \     __    ___    ___     ___     ____\ \ ,_\  _ __   __  __    ___\ \ ,_\/\_\    ___     ___    
/',__\/\ \/\ \/\ '__`\  /'__`\/\`'__\/'_` \  /'__`\ /'___\ / __`\ /' _ `\  /',__\\ \ \/ /\`'__\/\ \/\ \  /'___\ \ \/\/\ \  / __`\ /' _ `\  
/\__, `\ \ \_\ \ \ \L\ \/\  __/\ \ \//\ \L\ \/\  __//\ \__//\ \L\ \/\ \/\ \/\__, `\\ \ \_\ \ \/ \ \ \_\ \/\ \__/\ \ \_\ \ \/\ \L\ \/\ \/\ \ 
\/\____/\ \____/\ \ ,__/\ \____\\ \_\\ \___,_\ \____\ \____\ \____/\ \_\ \_\/\____/ \ \__\\ \_\  \ \____/\ \____\\ \__\\ \_\ \____/\ \_\ \_\
\/___/  \/___/  \ \ \/  \/____/ \/_/ \/__,_ /\/____/\/____/\/___/  \/_/\/_/\/___/   \/__/ \/_/   \/___/  \/____/ \/__/ \/_/\/___/  \/_/\/_/
                \ \_\                                                                                                                     
                \/_/                                                                                                                     



        """)
        printer("""
        ‘Welcome to the super(de)costruction game or How to destroy the ideological apparatus and capitalism in small steps.

You are a witch in the body of a cultural worker leaving in the poor south. However, you cannot make a living only by selling your labor power so you have to use your magic powers to maintain yourself. You can become invisible in order to expropriate goods from chain supermarkets and share them with your comrades and girlfriends. That’s okay! Inflation ...

You will have an extraordinary chance to walk a lead bit through an enormous architectural miracle and why not dismantle the master's house! 
Are you readyyy???

        """)
        start = False
        
    if (graduation == True):
        printer("You Win!")
        exit()

#   Clearing the screen: "cls" for Windows; "clear" for macOS       
    i = input()
    #os.system("cls")
    spliti = i.split(" ")

#   Creating an inventory
    if "inventory" in i: 
        printer("The truth is that you don't own anything. You are proletarian. You don't really have private property. However, in you current inventory you can find " + ", ".join(inventory))
    
    if i in ["talk","discuss","debate","ask","say"]:
        printer("Hiiiiiii witch, how can I help you, now that nobody is watching us?")
        i = input()
        if i in ["revolution","finish","free", "freedom"]:
            if study >= 119:
                printer("You did so many things! You struggle a lot, you care, you respect! You are a true witch fighter! Revolution is in the corner.")
                graduation = True
            else:
                printer("We should keep the hard work. Do not give up though. Things do change and your contribution is valuable! You have gained " + str(study) + "  points. Shall we go again to the base-ment? We have to organise stuff! Please don't give up. Here is something small for you!")
                printer("""
                                    

                For it is not the anger of Black Women which is dripping down over this globe like a diseased liquid. It is not my anger that launches rockets, spent more than 60,000 dolars second on missiles and other agents of war and death, slaughters children in cities, stockpiles nerve gas and chemical bombs, sodomizes our daughters and the earth. This is not the anger of Black Women which corrodes into blind, dehumanising power, bent upon the annihilation of us all unless we meet it with what we have, our power to examine and to redefine the terms upon which we will live and work; our power to envision and to reconstruct, anger by painful anger, stone upon heavy stone, a future of pollinating difference and the earth to support our choices.
                We welcome all women who can meet us, face to face, beyond objectification and beyond guilt.
                by Audre Lorde


                """)
    

#   Choices in the base-ment
    if currentRoom == "base-ment":
        if i in ["look","see","view","explore"]:
            printer("Oh I'm in an base-ment, cool. There is little light here. Soooo many people. TheY do work hard. The seem unhappy and dipressed")
            printer("You can find here: " + ", ".join(items["base-ment"]))
                        
        elif i in ["exit","walk","run","door","leave"]:
            printer("You can use this tiny door to exit the base-ment. To be completely honest, you cannot escape that easily the base-ment. You wish you could. It can be really suffocating. However you are a witch, you have class consiousness and you have your caring comrades. So now let's move. ")
            currentRoom = "apparatus"

#   The ECTS condition, or the point-gaining system. Every "study" adds 30 points to the player's score. The goal is to reach 120 points or credits.             
        elif i in ["disconstruct", "dismantle", "poetry", "street", "public", "library", "counter-culture","read", "struggle", "collective", "solidarity", "fight", "feminism", "queer", "act", "expropriate", "parasite", "organise", "care", "reclaim", "speak", "counterhegemony", "escape", "burn", "collective", "demonstrate", "zine", "create", "enjoy", "disobedience", "occupy", "protest", "manifest", "shout", "sing", "anarchy", "radical", "barricade", "putaspell", "witchcraft", "unlearn"]:
            printer("You have struggled soo much!")
            study = study + 30
            printer("The revolution seems to be closer. Cracks still happen and are completely important and vital and powerful. You have gained " + str(study) + " points")

        else: 
            taker("base-ment")


#   Choices in the neutral zone
    elif currentRoom == "apparatus":
        if i in ["look","see","view","explore", "open"]:
            printer("Vrooom, vroom, vroom. You are now in the apparatus room! What a contradictory place to be. A wise-structured organised chaos ... Monumental huge buildings, computers, archives, cameras, people in uniforms, banks campus and other big buildings, and borders. Where is the public, though? If you see a little bit closer, it is not that solid.")
            printer("Oh look in the apparatus you can find: " + ", ".join(items["apparatus"]))
            
        elif i in ["exit","walk","run","door","leave"]:
            printer("You may use this door to exit the apparatus.")
            i = input("which door? (1 or 2)")
            if i == "1":
                printer("You use the door to the base-ment")
                currentRoom = "base-ment"
            elif i == "2":
                printer("You use the door to the megaroom")
                currentRoom = "megaroom"
        else: 
            taker("apparatus")
    

#   Choices in the megaroom
    elif currentRoom == "megaroom":
        if i in ["look","see","view","explore", "open"]:
            printer("Oh You are in the megaroom! You can tell that it is luxurious, monumental structure classical and contemporary in the same time. You haven’t seen something similar before! Wowww. But why are so little people? Why the are mostly white men? Don’t be stressed - they will not notice you! You enter the mansion as a cleaning lady. You are invisible to them. However, YOU know how radical our marginal identities are! ")
            printer("Oh look in the megaroom! There is : " + ", ".join(items["megaroom"]))
            
        elif i in ["exit","walk","run","door","leave"]:
            printer("You use the door to exit the megaroom.")
            currentRoom = "apparatus"

        else: 
            taker("megaroom")