state machine presentation62 end
TRANSCRIPT
Thursday, March 18, 2010
Thursday, March 18, 2010
Thursday, March 18, 2010
Thursday, March 18, 2010
public class Creature{ private var amIdead : Boolean; private var doIHaveDelbruckBrain : Boolean; private var doIHaveVictorBrain : Boolean;
public function Creature() { trace(“Ecce Creature”); amIdead = true;
}
public function implant( b : Brain ) { mybrain = b; if( mybrain == DELBRUCK_BRAIN ) // how?? { doIHaveDelbruckBrain = true; doIHaveVictorBrain = false; } else if( mybrain == VICTOR_BRAIN )// again -- how?? { doIHaveDelbruckBrain = false; doIHaveVictorBrain = true; } else { doIHaveDelbruckBrain = false; doIHaveVictorBrain = false; } }
public function zap() { if( amIdead ) { amIdead = false;
} else
{ amIdead = false;
}}
public function talk() { if( amIdead ) { // DO NOTHING -- I’M DEAD
} else
{ if( doIHaveDelbruckBrain ) {
trace(“Listen to this...”); trace(“the secrets of eternity”); } else if( doIHaveVictorBrain ) { trace(“The operation...”); trace(“...did it work?”); } else { trace(“UNNNNNNNH”); }
Thursday, March 18, 2010
public class Creature{ private var amIdead : Boolean; private var doIHaveDelbruckBrain : Boolean; private var doIHaveVictorBrain : Boolean;
public function Creature() { trace(“Ecce Creature”); amIdead = true;
}
public function implant( b : Brain ) { mybrain = b; if( mybrain == DELBRUCK_BRAIN ) // how?? { doIHaveDelbruckBrain = true; doIHaveVictorBrain = false; } else if( mybrain == VICTOR_BRAIN )// again -- how?? { doIHaveDelbruckBrain = false; doIHaveVictorBrain = true; } else { doIHaveDelbruckBrain = false; doIHaveVictorBrain = false; } }
public function zap() { if( amIdead ) { amIdead = false;
} else
{ amIdead = false;
}}
public function talk() { if( amIdead ) { // DO NOTHING -- I’M DEAD
} else
{ if( doIHaveDelbruckBrain ) {
trace(“Listen to this...”); trace(“the secrets of eternity”); } else if( doIHaveVictorBrain ) { trace(“The operation...”); trace(“...did it work?”); } else { trace(“UNNNNNNNH”); }
Thursday, March 18, 2010
public class Creature{ private var amIdead : Boolean; private var doIHaveDelbruckBrain : Boolean; private var doIHaveVictorBrain : Boolean;
public function Creature() { trace(“Ecce Creature”); amIdead = true;
}
public function implant( b : Brain ) { mybrain = b; if( mybrain == DELBRUCK_BRAIN ) // how?? { doIHaveDelbruckBrain = true; doIHaveVictorBrain = false; } else if( mybrain == VICTOR_BRAIN )// again -- how?? { doIHaveDelbruckBrain = false; doIHaveVictorBrain = true; } else { doIHaveDelbruckBrain = false; doIHaveVictorBrain = false; } }
public function zap() { if( amIdead ) { amIdead = false;
} else
{ amIdead = false;
}}
public function talk() { if( amIdead ) { // DO NOTHING -- I’M DEAD
} else
{ if( doIHaveDelbruckBrain ) {
trace(“Listen to this...”); trace(“the secrets of eternity”); } else if( doIHaveVictorBrain ) { trace(“The operation...”); trace(“...did it work?”); } else { trace(“UNNNNNNNH”); }
Thursday, March 18, 2010
public class Creature{ private var amIdead : Boolean; private var doIHaveDelbruckBrain : Boolean; private var doIHaveVictorBrain : Boolean;
public function Creature() { trace(“Ecce Creature”); amIdead = true;
}
public function implant( b : Brain ) { mybrain = b; if( mybrain == DELBRUCK_BRAIN ) // how?? { doIHaveDelbruckBrain = true; doIHaveVictorBrain = false; } else if( mybrain == VICTOR_BRAIN )// again -- how?? { doIHaveDelbruckBrain = false; doIHaveVictorBrain = true; } else { doIHaveDelbruckBrain = false; doIHaveVictorBrain = false; } }
public function zap() { if( amIdead ) { amIdead = false;
} else
{ amIdead = false;
}}
public function talk() { if( amIdead ) { // DO NOTHING -- I’M DEAD
} else
{ if( doIHaveDelbruckBrain ) {
trace(“Listen to this...”); trace(“the secrets of eternity”); } else if( doIHaveVictorBrain ) { trace(“The operation...”); trace(“...did it work?”); } else { trace(“UNNNNNNNH”); }
Thursday, March 18, 2010
public class Creature{ private var amIdead : Boolean; private var doIHaveDelbruckBrain : Boolean; private var doIHaveVictorBrain : Boolean;
public function Creature() { trace(“Ecce Creature”); amIdead = true;
}
public function implant( b : Brain ) { mybrain = b; if( mybrain == DELBRUCK_BRAIN ) // how?? { doIHaveDelbruckBrain = true; doIHaveVictorBrain = false; } else if( mybrain == VICTOR_BRAIN )// again -- how?? { doIHaveDelbruckBrain = false; doIHaveVictorBrain = true; } else { doIHaveDelbruckBrain = false; doIHaveVictorBrain = false; } }
public function zap() { if( amIdead ) { amIdead = false;
} else
{ amIdead = false;
}}
public function talk() { if( amIdead ) { // DO NOTHING -- I’M DEAD
} else
{ if( doIHaveDelbruckBrain ) {
trace(“Listen to this...”); trace(“the secrets of eternity”); } else if( doIHaveVictorBrain ) { trace(“The operation...”); trace(“...did it work?”); } else { trace(“UNNNNNNNH”); }
Thursday, March 18, 2010
Thursday, March 18, 2010
public class Creature{ private var mybrain : Brain;
public function Creature() { trace(“Ecce Creature”); }
public function zap() {}
public function walk() {}
public function talk() {} }
Thursday, March 18, 2010
public class Creature{ private var mybrain : Brain;
public function Creature() { trace(“Ecce Creature”); }
public function zap() {}
public function walk() {}
public function talk() {} }
Thursday, March 18, 2010
public class Brain{
public function zap(){}
public function talk(){}
public function walk(){}
}
Thursday, March 18, 2010
public class DeadDelbruckBrain extends Brain{
public function zap(){}
public function talk(){}
public function walk(){}
}
Thursday, March 18, 2010
public class Creature{ private var mybrain : Brain;
public function Creature() { trace(“Ecce Creature”); this.implant( new DeadDelbruckBrain()); }
public function zap() { mybrain.zap();
}
public function walk() { mybrain.walk();
} public function talk() { mybrain.talk();
} }
Thursday, March 18, 2010
public class Creature{ private var mybrain : Brain;
public function Creature() { trace(“Ecce Creature”); this.implant( new DeadDelbruckBrain()); }
public function zap() { mybrain.zap();
}
public function walk() { mybrain.walk();
} public function talk() { mybrain.talk();
} }
Thursday, March 18, 2010
public class Creature{ private var deadDelbruckBrain : DeadDelbruckBrain;
private var livingDelbruckBrain : LivingDelbruckBrain;
public function Creature(){ trace(“Ecce Creature”);
deadDelbruckBrain = new DeadDelbrookBrain(); livingDelbruckBrain = new LivingDelbrookBrain();
this.implant( deadDelbruckBrain );}
public function zap() { mybrain.zap();
}
public function walk() { mybrain.walk();
} public function talk() { mybrain.talk();
} }
Thursday, March 18, 2010
public class Creature{ private var deadDelbruckBrain : DeadDelbruckBrain;
private var livingDelbruckBrain : LivingDelbruckBrain;
public function Creature(){ trace(“Ecce Creature”);
deadDelbruckBrain = new DeadDelbrookBrain(); livingDelbruckBrain = new LivingDelbrookBrain();
this.implant( deadDelbruckBrain );}
public function zap() { mybrain.zap();
}
public function walk() { mybrain.walk();
} public function talk() { mybrain.talk();
} }
Thursday, March 18, 2010
public class DeadDelbruckBrain extends Brain{
public function zap() {
mycreature.implant( mycreature.livingDelbruckBrain );
}
Thursday, March 18, 2010
public class Creature{ public var deadDelbruckBrain : DeadDelbruckBrain;
public var livingDelbruckBrain : LivingDelbruckBrain;
public function Creature(){ trace(“Ecce Creature”);
deadDelbruckBrain = new DeadDelbrookBrain(); livingDelbruckBrain = new LivingDelbrookBrain();
this.implant( deadDelbruckBrain );}
public function zap() { mybrain.zap();
}
public function walk() { mybrain.walk();
} public function talk() { mybrain.talk();
} }
Thursday, March 18, 2010
public class Creature{ public var deadDelbruckBrain : DeadDelbruckBrain;
public var livingDelbruckBrain : LivingDelbruckBrain;
public function Creature(){ trace(“Ecce Creature”);
deadDelbruckBrain = new DeadDelbrookBrain( this ); livingDelbruckBrain = new LivingDelbrookBrain( this );
this.implant( deadDelbruckBrain );}
public function zap() { mybrain.zap();
}
public function walk() { mybrain.walk();
} public function talk() { mybrain.talk();
}
Thursday, March 18, 2010
public class Brain{
public var mycreature : Creature;
public function Brain( somecreature : Creature ) { mycreature = somecreature; }
Thursday, March 18, 2010
...
public function zap() {
mycreature.implant( mycreature.livingDelbruckBrain );
}...
Thursday, March 18, 2010
public class DeadAbnormalBrain extends Brain{
public function zap(){}
public function talk(){}
public function walk(){}
}
Thursday, March 18, 2010
public class LivingAbnormalBrain extends Brain{
public function zap(){}
public function talk(){}
public function walk(){}
}
Thursday, March 18, 2010
...
public function zap() {
mycreature.implant( mycreature.livingAbnormalBrain );
}...
Thursday, March 18, 2010
...
public function eatSoup() {
...}
...
Thursday, March 18, 2010
Thursday, March 18, 2010
...
public function smokeCigar() {
...}
...
Thursday, March 18, 2010
Thursday, March 18, 2010
...
public function sing() {
...}
...
Thursday, March 18, 2010
Thursday, March 18, 2010
public class HybridVictorAndAbnormalBrain extends Brain{
...
}
Thursday, March 18, 2010
public class HybridVictorAndAbnormalBrain extends Brain{
private var percentageVictor : int;
public function setVictorPercentage( p : int ){ percentageVictor = p;}
Thursday, March 18, 2010
public class HybridVictorAndAbnormalBrain extends Brain{
...
public function talk( ){ if( percentageVictor > 50 ) {...
Thursday, March 18, 2010
Thursday, March 18, 2010
Template Method Pattern
Thursday, March 18, 2010
public class Brain{... public function walk() {
stepWithLeftFoot();stepWithRightFoot();
}...}
Thursday, March 18, 2010
public class Brain{... public function stepWithLeftFoot() {
}
public function stepWithRightFoot() {
}...}
Thursday, March 18, 2010
public class OneLeggedBrain{... override public function walk() {
//stepWithLeftFoot();stepWithRightFoot();
}...}
Thursday, March 18, 2010
public class RogerCobbBrain extends Brain{... override public function stepWithLeftFoot() {
leftFootPosition += strideLength; }
override public function stepWithRightFoot() {
rightFootPosition += strideLength; }...}
Thursday, March 18, 2010
public class EdwinaBrain extends Brain{... override public function stepWithLeftFoot() {
leftFootPosition += strideLength; }
override public function stepWithRightFoot() {
rightFootPosition += strideLength; }...}
Thursday, March 18, 2010
public class EdwinaBrain extends Brain{... override public function stepWithLeftFoot() {
leftFootPosition += strideLength * 2; }
override public function stepWithRightFoot() {
rightFootPosition += strideLength * 2; }...}
Thursday, March 18, 2010
public class EdwinaBrain extends Brain{... public function EdwinaBrain() {
strideLength = 12;rightStrideLength = 24;
}
override public function stepWithRightFoot() {
rightFootPosition += rightStrideLength; }...}
Thursday, March 18, 2010
public class TwoBrainedCreature{... public var rightBrain : RightBrain; public var leftBrain : LeftBrain;...}
Thursday, March 18, 2010
Thursday, March 18, 2010
Many brainsin one creature.
Thursday, March 18, 2010
public class TwoBrainedCreature{... public function walk() {
rightBrain.stepWithLeftFoot();leftBrain.stepWithRightFoot();
}...}
Thursday, March 18, 2010
Thursday, March 18, 2010
One kind of brain,many kinds of creatures.
Thursday, March 18, 2010
public class World{public function World(){ var neo : Hero = new Hero(); var shopper : NormalPerson = new NormalPerson();
var agentOne = new SmithBrain(); var agentTwo = new SmithBrain(); neo.implant( agentOne ); shopper.implant( agentTwo );
}}
Thursday, March 18, 2010
Thursday, March 18, 2010
One actual brain,many creatures.
Thursday, March 18, 2010
Thursday, March 18, 2010
public class World{public function World(){
agentSmithBrain = new AgentSmithBrain(); var neo : Creature = new Creature(); var shopper : Creature = new Creature();
neo.implant( agentSmithBrain ); shopper.implant( agentSmithBrain );
}}
Thursday, March 18, 2010
Dependency Injection
Thursday, March 18, 2010
Thursday, March 18, 2010
<beans> <bean id="edwina" class="EdwinaBrain"> <property name="mycreature" ref=" creature"/> </bean> <bean id="roger" class="RogerCobbBrain"> <property name="mycreature" ref=" creature"/> </bean> <bean id="creature" class="Creature"> <property name="leftBrain" ref="edwina"/> <property name="rightBrain" ref="roger"/> </bean></beans>
Thursday, March 18, 2010
Actual Example
Thursday, March 18, 2010
<game> <level name="demomode" > <sprite id="bigboss" class="FlyingDragon"> <property name="target" ref="hero"/> <property name="inputBrain" class="HeroFollower"/> <property name="movementBrain" class="ClumsyFlying"/> </sprite> <sprite id="hero" class="UnarmedHero"> <property name="inputSource" class="KeyboardInput"/> </sprite> </level></game>
Thursday, March 18, 2010
<game> <level name="demomode" > <sprite id="bigboss" class="FlyingDragon"> <property name="target" ref="hero"/> <property name="inputBrain" class="HeroFollower"/> <property name="movementBrain" class="ClumsyFlying"/> </sprite> <sprite id="hero" class="UnarmedHero"> <property name="inputSource" class="RecordingKeyboardInput"/> </sprite> </level></game>
Thursday, March 18, 2010
<game> <level name="demomode" > <sprite id="bigboss" class="FlyingDragon"> <property name="target" ref="hero"/> <property name="inputBrain" class="HeroFollower"/> <property name="movementBrain" class="ClumsyFlying"/> </sprite> <sprite id="hero" class="UnarmedHero"> <property name="inputSource" class="RecordedKeyboardInput" /> <property name="inputSource" class= "RecordedInputTranslator" data="a7.b3.c22.a42" /> </sprite> </level>
Thursday, March 18, 2010
One Word:
Thursday, March 18, 2010
Thursday, March 18, 2010
Brains.
Thursday, March 18, 2010