I sat down today and thought of a way to program cause and effect. I came up with this notation:
(initCondtion, initState, initBehavior) + Action = (deltaState, deltaCondition,deltaBehavior) = Reaction
The initial condition is that it is sunny outside.
The initial state is that you are happy.
This causes an initial behavior-- you go outside to play.
But then, something happens (an action).
It starts to rain. Now it is rainy outside.
Now you are sad.
This causes you to go back inside and go to sleep.
The action triggers a change in state and a change in condition.
This change in state and condition produces a reaction-- You go inside to go to sleep.
PseudoExample:
--Statesnormal = truehappy = falsesad = false --Conditionsclear = truerainy= falsesunny = false --Behaviors --Initial Behaviorfunction GoOutToPlay() --Change in Behaviorfunction GoToSleep() --Actionfunction Rain()start to rainend --Reactionfunction ChangeState()sad = true function ChangeCondition()rainy = true function ChangeBehavior()if sad && rainyGoToSleep()
I wonder if this is solid enough to implement. hmm.