Exemplo n.º 1
0
class MinersWife(BaseGameEntity):
    m_Location = None
    # an instance of the state machine class
    m_pStateMachine = None

    def __init__(self, EntityNames):
        # super(EntityNames)
        self.m_Location = location_type.shack
        self.m_pStateMachine = StateMachine(self)
        self.m_pStateMachine.SetCurrentState(DoHouseWork.getInstance())
        self.m_pStateMachine.SetGlobalState(WifesGlobalState.getInstance())

    def GetFSM(self):
        return self.m_pStateMachine

    def RevertToPreviousState(self):
        None

    def Update(self):
        self.m_pStateMachine.Update()

    def Location(self):
        return self.m_Location

    def ChangeLocation(self, location_type):
        self.m_Location = location_type
Exemplo n.º 2
0
class Miner(BaseGameEntity):
    ComFortLevel = 5
    MaxNuggets = 3
    ThirstLevel = 5
    TirednessThreshold = 5

    m_Location = None

    m_iGoldCarried = None
    m_iMoneyInBank = None
    m_iThirst = None
    m_iFatigue = None

    ThirstLevel = 5
    TirednessThreshold = 5
    MaxNuggets = 3
    ComfortLevel = 5

    # an instance of the state machine class
    m_pStateMachine = None

    def __init__(self, EntityNames):
        # super(EntityNames)
        self.m_Location = location_type.shack
        self.m_iGoldCarried = 0
        self.m_iMoneyInBank = 0
        self.m_iThirst = 0
        self.m_iFatigue = 0
        self.m_pStateMachine = StateMachine(self)
        self.m_pStateMachine.SetCurrentState(
            GoHomeAndSleepTilRested.getInstance())

    def GetFSM(self):
        # global m_pStateMachine
        return self.m_pStateMachine

    def RevertToPreviousState(self):
        None

    def HandleMessage(self, Telegram):
        return self.m_pStateMachine.HandleMessage(Telegram)

    def Update(self):
        # global m_iThirst, m_pStateMachine
        self.m_iThirst += 1
        self.m_pStateMachine.Update()

    def HandleMessage(self, Telegram):
        return self.m_pStateMachine.HandleMessage(Telegram)

    def AddToGoldCarried(self, val):
        self.m_iGoldCarried += val

        if self.m_iGoldCarried < 0:
            self.m_iGoldCarried = 0

    def AddToWealth(self, val):
        self.m_iMoneyInBank += val

        if self.m_iMoneyInBank < 0:
            self.m_iMoneyInBank = 0

    def Thirsty(self):
        self.ThirstLevel = 5

        if self.m_iThirst >= self.ThirstLevel:
            return True
        else:
            return False

    def Fatigued(self):
        if self.m_iFatigue > 5:
            return True
        else:
            return False

    def Location(self):
        return self.m_Location

    def ChangeLocation(self, location_type):
        self.m_Location = location_type

    def IncreaseFatigue(self):
        self.m_iFatigue += 1

    def DecreaseFatigue(self):
        self.m_iFatigue -= 1

    def PocketsFull(self):
        self.MaxNuggets = 3
        if self.m_iGoldCarried >= self.MaxNuggets:
            return True
        else:
            return False

    def GoldCarried(self):
        return self.m_iGoldCarried

    def SetGoldCarried(self, val):
        self.m_iGoldCarried = val

    def Wealth(self):
        return self.m_iMoneyInBank

    def BuyAndDrinkAWhiskey(self):
        self.m_iThirst = 0
        self.m_iMoneyInBank -= 2
Exemplo n.º 3
0
from StateMachine import StateMachine
import time

sm = StateMachine()


def State1Behavior():
    print("You are in State 1")


def State2Behavior():
    print("You are in State 2")


def StateTransitionCondition():
    return sm.TimoutSinceLastTransition(.5)


sm.AddState("State1", State1Behavior)
sm.AddState("State2", State2Behavior)
sm.AddTransition("State1", "State2", StateTransitionCondition)
sm.AddTransition("State2", "State1", StateTransitionCondition)

sm.SetCurrentState(sm.GetStateByName("State1"))

while True:
    nextState = sm.GetNextState()
    sm.SetCurrentState(sm.GetStateByName(nextState))
    sm.RunCurrentState()
    time.sleep(.25)