Exemplo n.º 1
0
    def __init__(self):
        self.create_defaultData()

        #global save data is progress shared across savegames
        def getGlobalSaveFile():
            fname = "globalsavedata.sav"
            try:
                self.file = os.path.join(os.path.curdir, os.path.pardir,
                                         "save", fname)
            except:
                with open(
                        os.path.join(os.path.curdir, os.path.pardir, "save",
                                     fname), 'w+') as file:
                    pass
                self.file = os.path.join(os.path.curdir, os.path.pardir,
                                         "save", fname)
                self._write_defaults()

        if os.path.exists(os.path.join(os.path.curdir, os.path.pardir,
                                       "save")):
            getGlobalSaveFile()
        else:
            try:
                os.mkdir(os.path.join(os.path.curdir, os.path.pardir,
                                      "save"), )
            except OSError:
                print("Failed to create directory './save'. Aborting...")
                rog.end()
                return
            print("Successfully created directory './save'.")
            getGlobalSaveFile()
        #init empty lists to fill later during loading
        self.playableJobs = []
Exemplo n.º 2
0
def cmd_prompt(G, L):

    print(
        "Enter command below.\nFor a full list of commands, type /? and strike the enter key."
    )
    hlp = '''-----------------------------------------------------------------
Command Line Help

- Preceed non-code commands with a forward slash ( / ).
- Do not include quotes when typing commands.

Commands:
'r','return':   exit shell and resume game.
'q','quit':     close program.

Writing code:
$ for a new line.'''

    while True:
        try:
            _str = input(">>")

            spaces = 0
            for c in _str:
                if c == ' ':
                    spaces += 1
            _str = _str[spaces:]

            # built-in commands
            if _str[0] == '/':
                _str = _str[1:]
                if _str == "?":
                    print(hlp)
                    continue
                elif (_str == 'return' or _str == 'r'):
                    return
                elif (_str == 'quit' or _str == 'q'):
                    rog.end()
                    return

            # parse new lines from '#' symbols
            new = []
            for i in _str:
                if i == '$': new.append('\n')
                else: new.append(i)
            _str = ''.join(new)

            # execute code
            exec(_str, G, L)
            Debugger.set_last_command(_str)
            print("Done.")

        except Exception as e:
            print(e)
Exemplo n.º 3
0
def main():
    
#------------------------------------------------#
    # INIT
#------------------------------------------------#

    # new way to init
    rog.Rogue.create_settings() # later controllers might depend on settings
    rog.Rogue.create_window()
    rog.Rogue.create_consoles()
    rog.Rogue.create_world()
    rog.Rogue.create_controller()
    rog.Rogue.create_data()
    rog.Rogue.create_map()
    rog.Rogue.create_clock()
    rog.Rogue.create_updater()
    rog.Rogue.create_view()
    rog.Rogue.create_log()
    rog.Rogue.create_savedGame()
    rog.Rogue.create_processors()
    rog.Rogue.create_perturn_managers()
    rog.Rogue.create_const_managers()
    rog.Rogue.create_player(0,0) # what position should be given?
    
    rog.init_keyBindings()
        
##    #map generation
##    rog.map_generate(rog.map(),rog.dlvl())
##
##    # init player object
##    pc=rog.create_player(15,15)
##    # TODO: observer for player
####    obs=observer.Observer_playerChange()
####    pc.observer_add(obs)
##    rog.view_center(pc)
##    
##    
##    ##TESTING
##    rog.gain(pc,"hpmax",100)
##    log=rog.create_stuff(THG.LOG, 18,18)
##    rog.burn(log,200)
##    box=rog.create_stuff(THG.BOX,20,18)
##    #fluids.smoke(16,16)
##    '''pc.stats.hpmax      = 20
##    pc.stats.mpmax      = 20
##    pc.stats.sight      = 20
##    pc.stats.spd        = 100
##    pc.stats.nvision    = False'''
##        #LIGHT
##    pc.light=rog.create_light(pc.x,pc.y, 5, owner=pc)
##        #HEAL
##    rog.givehp(pc)
##    rog.givemp(pc)
##        #EQUIP
##    #print(pc.stats.get('atk'))
##    item=gear.create_weapon("sword",pc.x,pc.y)
##    rog.equip(pc, item, EQ_MAINHAND)
##    #print(pc.stats.get('atk'))
##    #rog.deequip(pc,EQ_MAINHAND)
##    #print(pc.stats.get('atk'))
##        #BUFF
##    #rog.effect_add(pc,{'atk':5})
##    #rog.effect_add(pc,{'dmg':5})
##    #rog.effect_add(pc,{'arm':0})
##    #rog.effect_add(pc,{'msp':15})
##    #rog.effect_add(pc,{'msp':-50})'''
##    '''
##    z = rog.create_monster('Z',15,16)
##    rog.effect_add(z,{'arm':1})
##    rog.effect_add(z,{'dfn':4})
##    rog.effect_add(z,{'atk':3})
##    rog.effect_add(z,{'dmg':3})
##    rog.givehp(z)'''
##    z=rog.create_monster('z',13,19,COL['ltblue'])
##    a=rog.create_monster('a',12,13,COL['scarlet'])
##    o=rog.create_monster('U',19,18,COL['red'])
##    a=rog.create_monster('a',15,17,COL['scarlet'])
##    W=rog.create_monster('W',20,15,COL['purple'])
##    '''import dice
##    for x in range(ROOMW):
##        for y in range(ROOMH):
##            if dice.roll(100) > 98:
##                if not (rog.wallat(x,y)
##                        or rog.monat(x,y) ):
##                    r=rog.create_monster('r',x,y)
##                    r.color=COL['ltgray']
##    print("num monsters: ", len(rog.list_creatures()))
##    '''
    
        

    
#-----------------------------------------------#
#               # MAIN GAME LOOP #              #
#-----------------------------------------------#

    rog.game_set_state("normal")

##    # initialize fov for creatures with sight
##    # IS THIS NOT WORKING???? WHAT'S GOING ON?
##    for creat in rog.list_creatures():
##        if creat.stats.sight > 0:
##            rog.fov_compute(creat)
    
    while rog.game_is_running():

        # manually close game #
        if libtcod.console_is_window_closed():
            rog.end()
        
        # defeat conditions #
        if rog.on(pc, DEAD):
            rog.game_set_state("game over")
        
        # get input #
        pcInput=IO.get_raw_input()
        pcAct=IO.handle_mousekeys(pcInput).items()
        
        # commands that are available from anywhere #
        player.commands_const(pc, pcAct)
        
        # Finally record game state after any/all changes #
        gameState=rog.game_state()
        
        
                        #----------#
                        #   PLAY   #
                        #----------#
                
        #
        # normal game play
        #
        if gameState == "normal":
            game.play(pc, pcAct)
        #
        # other game states #
        #
        elif (gameState == "move view"
                or gameState == "look"
                or gameState == "busy"
                or gameState == "message history"
                ):
            manager=rog.get_active_manager()
            manager.run(pcAct)
            if manager.result:
                rog.close_active_manager()
        #
        
        elif gameState == "game over":
            rog.msg("You died...")
Exemplo n.º 4
0
def main():

    #------------------------------------------------#
    # INIT
    #------------------------------------------------#

    rog.Rogue.create_settings()  # later controllers may depend on settings
    rog.Rogue.create_window()
    rog.Rogue.create_consoles()
    rog.Rogue.create_world()
    rog.Rogue.create_controller()
    rog.Rogue.create_data()
    rog.Rogue.create_map(ROOMW, ROOMH)
    ##    rog.Rogue.create_fov_maps()
    rog.Rogue.create_clock()
    rog.Rogue.create_updater()
    rog.Rogue.create_view()
    rog.Rogue.create_log()
    rog.Rogue.create_savedGame()  # TODO: learn/use Pickle.
    rog.Rogue.create_processors()
    rog.Rogue.create_perturn_managers()
    rog.Rogue.create_const_managers()
    rog.Rogue.create_const_entities()

    rog.init_keyBindings()

    #map generation
    rog.getmap(rog.dlvl()).init_specialGrids(
    )  # inits fov_map; do this before you init terrain
    rog.getmap(rog.dlvl()).init_terrain(WALL)  # clear the map to all walls
    rog.getmap(rog.dlvl()).generate_dlvl(rog.dlvl())

    # init player

    # TESTING THIS IS ALL TEMPORARY!!!
    # temporary: find a position to place the player
    xpos = 15
    ypos = 15
    _borders = 10
    while rog.getmap(rog.dlvl()).tileat(xpos, ypos) == WALL:
        xpos += 1
        if xpos >= ROOMW - _borders:
            xpos = _borders
            ypos += 1
        if ypos >= ROOMH:
            print("~~ ! FATAL ERROR ! Failed to place player in the map!")
            break

    rog.Rogue.create_player(xpos, ypos)  # create player
    pc = rog.pc()

    # TESTING
    # HELP THE PLAYER TO SEE
    rog.create_envlight(16)
    ##    rog.make(rog.pc(), NVISION)
    #

    w = rog.create_monster('W', xpos, ypos - 1)
    ##    rog.world().add_component(w, cmp.AttractedToMen())
    ##    rog.world().add_component(w, cmp.AttractedToWomen())
    ##
    ##     #testing speech
    ##    rog.init_person(w)
    #
    ##    w2=rog.create_monster('W',xpos,ypos+1)
    ##    w3=rog.create_monster('W',xpos,ypos+2)

    ##    rog.setskill(pc, SKL_BOXING, 100)
    ##    rog.setskill(pc, SKL_PERSUASION, 0)
    ##    rog.setskill(pc, SKL_ARMOR, 100)
    ##    rog.sets(pc, 'dex', 12*MULT_STATS)
    ##    rog.sets(pc, 'int', 4*MULT_STATS)
    ##    rog.setskill(pc, SKL_UNARMORED, 40)

    ##    for x in range(20):
    ##        rog.create_monster("L", 1+x*5,1)

    ##    rog.alts(pc, 'sight', 50)
    weap = rog.create_weapon("sword", xpos, ypos, mat=MAT_METAL)
    weap = rog.create_weapon("buckler", xpos, ypos, mat=MAT_METAL)
    ##
    ##    rog.wound(pc, WOUND_BURN, 2)

    ##    rog.damage(weap, 200)
    ##    rog.fitgear(weap, pc)
    ##    print(rog.equip(
    ##        pc,weap,EQ_MAINHANDW
    ##        ))
    ##    rog.create_weapon("wooden club", xpos,ypos)
    ##    rog.create_weapon("estoc", xpos-1,ypos)
    ##    shield=rog.create_weapon("metal shield", 0,0)
    ##    rog.equip(
    ##        pc,shield,EQ_OFFHAND
    ##        )
    ##    rog.fitgear(shield, pc)
    ##    armor=rog.create_armor("metal gear", 0,0)
    ##    rog.equip(
    ##        pc,armor,EQ_FRONT
    ##        )
    ##    rog.fitgear(armor, pc)
    ##    helm=rog.create_headwear("metal helm", 0,0)
    ##    rog.equip(
    ##        pc,helm,EQ_MAINHEAD
    ##        )
    ##    rog.fitgear(helm, pc)
    ##    leg1=rog.create_legwear("metal mail legging", 0,0)
    ##    rog.equip(
    ##        pc,leg1,EQ_MAINLEG
    ##        )
    ##    rog.fitgear(leg1, pc)
    ##    leg2=rog.create_legwear("metal mail legging", 0,0)
    ##    rog.equip(
    ##        pc,leg2,EQ_OFFLEG
    ##        )
    ##    rog.fitgear(leg2, pc)
    ##    arm1=rog.create_armwear("metal vambrace", 0,0)
    ##    rog.equip(
    ##        pc,arm1,EQ_MAINARM
    ##        )
    ##    rog.fitgear(arm1, pc)
    ##    arm2=rog.create_armwear("metal vambrace", 0,0)
    ##    rog.equip(
    ##        pc,arm2,EQ_OFFARM
    ##        )
    ##    rog.fitgear(arm2, pc)
    ##    foot1=rog.create_footwear("metal boot", 0,0)
    ##    rog.equip(
    ##        pc,foot1,EQ_MAINFOOT
    ##        )
    ##    rog.fitgear(foot1, pc)
    ##    foot2=rog.create_footwear("metal boot", 0,0)
    ##    rog.equip(
    ##        pc,foot2,EQ_OFFFOOT
    ##        )
    ##    rog.fitgear(foot2, pc)
    #

    # create light so player can see
    ##    log=rog.create_rawmat("log", 18,18)
    ##    rog.burn(log,500)
    #
    # /TESTING /TEMPORARY
    #

    # TODO?: observer for player
    ##    obs=observer.Observer_playerChange()
    ##    pc.observer_add(obs)

    #-----------------------------------------------#
    #               # MAIN GAME LOOP #              #
    #-----------------------------------------------#

    rog.game_set_state("normal")

    while rog.game_is_running():

        # manually close game #
        if libtcod.console_is_window_closed():
            rog.end()

        # defeat conditions #
        if rog.on(rog.pc(), DEAD):
            rog.game_set_state("game over")

        # get input #
        pcInput = IO.get_raw_input()
        pcAct = IO.handle_mousekeys(pcInput).items()

        # commands that are available from anywhere #
        player.commands_const(rog.pc(), pcAct)

        # Finally record game state after any/all changes #
        gameState = rog.game_state()

        #----------#
        #   PLAY   #
        #----------#

        #
        # normal game play
        #
        if gameState == "normal":
            game.play(pc, pcAct)
        #
        # manager game states #
        #
        elif gameState == "manager":
            manager = rog.get_active_manager()
            manager.run(pcAct)
            if manager.result:
                rog.close_active_manager()
        #

        elif gameState == "game over":
            rog.msg("You died...")
Exemplo n.º 5
0
def commands_const(pc, pcAct):
    for act, arg in pcAct:
        if act == "console": debug.cmd_prompt(globals(), locals())
        elif act == "last cmd": debug.execute_last_cmd(globals(), locals())
        elif act == "quit game": rog.end()
Exemplo n.º 6
0
def main():

    #------------------------------------------------#
    # INIT
    #------------------------------------------------#

    # init settings
    settings = rog.init_settings()
    rog.init_keyBindings()
    # init global controllers
    rog.create_window(settings.window_width, settings.window_height)
    rog.create_consoles()
    rog.create_map()
    rog.create_data()
    rog.create_view()
    rog.create_clock()
    rog.create_log()
    rog.create_update()
    rog.create_environment()
    rog.create_controller()
    rog.create_savedGame()
    # init managers
    rog.create_const_managers()
    rog.create_perturn_managers()

    #map generation
    rog.map_generate(rog.map(), rog.dlvl())

    # init player object
    pc = rog.create_player(15, 15)
    obs = observer.Observer_playerChange()
    pc.observer_add(obs)
    rog.view_center(pc)

    ##TESTING
    rog.gain(pc, "hpmax", 100)
    log = rog.create_stuff(THG.LOG, 18, 18)
    rog.burn(log, 200)
    box = rog.create_stuff(THG.BOX, 20, 18)
    #fluids.smoke(16,16)
    '''pc.stats.hpmax      = 20
    pc.stats.mpmax      = 20
    pc.stats.sight      = 20
    pc.stats.spd        = 100
    pc.stats.nvision    = False'''
    #LIGHT
    pc.light = rog.create_light(pc.x, pc.y, 5, owner=pc)
    #HEAL
    rog.givehp(pc)
    rog.givemp(pc)
    #EQUIP
    #print(pc.stats.get('atk'))
    #item=gear.create_weapon("sword",pc.x,pc.y)
    #rog.equip(pc, item, EQ_MAINHAND)
    #print(pc.stats.get('atk'))
    #rog.deequip(pc,EQ_MAINHAND)
    #print(pc.stats.get('atk'))
    #BUFF
    #rog.effect_add(pc,{'atk':5})
    #rog.effect_add(pc,{'dmg':5})
    #rog.effect_add(pc,{'arm':0})
    #rog.effect_add(pc,{'msp':15})
    #rog.effect_add(pc,{'msp':-50})'''
    '''
    z = rog.create_monster('Z',15,16)
    rog.effect_add(z,{'arm':1})
    rog.effect_add(z,{'dfn':4})
    rog.effect_add(z,{'atk':3})
    rog.effect_add(z,{'dmg':3})
    rog.givehp(z)'''
    z = rog.create_monster('z', 13, 19, COL['ltblue'])
    a = rog.create_monster('a', 12, 13, COL['scarlet'])
    o = rog.create_monster('U', 19, 18, COL['red'])
    a = rog.create_monster('a', 15, 17, COL['scarlet'])
    W = rog.create_monster('W', 20, 15, COL['purple'])
    '''import dice
    for x in range(ROOMW):
        for y in range(ROOMH):
            if dice.roll(100) > 98:
                if not (rog.wallat(x,y)
                        or rog.monat(x,y) ):
                    r=rog.create_monster('r',x,y)
                    r.color=COL['ltgray']
    print("num monsters: ", len(rog.list_creatures()))
    '''
    #create a create_thing function for specific items.
    #make list of items, etc.
    yyy = Thing()
    yyy.x = 16
    yyy.y = 13
    yyy.mask = '4'
    yyy.name = 'the four of destiny'
    yyy.color = COL['gold']
    rog.register_inanimate(yyy)
    ##
    yyy = Thing()
    yyy.x = 17
    yyy.y = 13
    yyy.mask = '*'
    yyy.name = 'blood clot'
    yyy.color = COL['dkmagenta']
    rog.register_inanimate(yyy)
    ##
    '''
    yyy=Thing()
    yyy.name="wood"
    yyy.mask=chr(15)
    yyy.material=MAT_WOOD
    yyy.x=20
    yyy.y=12
    yyy.mass=20
    yyy.stats.hp=1250
    yyy.color=COL['brown']
    rog.register_inanimate(yyy)
    rog.set_status(yyy, FIRE)
    
    yyy=Thing()
    yyy.name="wood"
    yyy.mask=chr(15)
    yyy.material=MAT_WOOD
    yyy.x=10
    yyy.y=19
    yyy.mass=12
    yyy.stats.hp=400
    yyy.color=COL['brown']
    rog.register_inanimate(yyy)
    rog.set_status(yyy, FIRE)'''
    '''
    yyy=rog.create_light(25,25, 15)
    yyy=rog.create_light(14,11, 7)'''

    #-----------------------------------------------#
    #               # MAIN GAME LOOP #              #
    #-----------------------------------------------#

    rog.game_set_state("normal")

    # initialize fov for creatures with sight
    for creat in rog.list_creatures():
        if creat.stats.sight > 0:
            rog.fov_compute(creat)

    while rog.game_is_running():

        # manually close game #
        if libtcod.console_is_window_closed():
            rog.end()

        # defeat conditions #
        if rog.on(pc, DEAD):
            rog.game_set_state("game over")
        # get input #
        pcInput = IO.get_raw_input()
        pcAct = IO.handle_mousekeys(pcInput).items()

        # commands that are available from anywhere #
        player.commands_const(pc, pcAct)

        # Finally record game state after any/all changes #
        gameState = rog.game_state()

        #----------#
        #   PLAY   #
        #----------#
        #
        # normal game play
        #
        if gameState == "normal":
            game.play(pc, pcAct)
        #
        # other game states #
        #
        elif (gameState == "move view" or gameState == "look"
              or gameState == "busy" or gameState == "message history"):
            manager = rog.get_active_manager()
            manager.run(pcAct)
            if manager.result:
                rog.close_active_manager()
        #

        elif gameState == "game over":
            rog.msg("You died...")