hello-world.kbl
· 843 B · Text
Raw
Playground
Actors [ :Helloer :Goodbyer :Changer ] ;
Define SayRepeatedly [
Remember :Message ;
Bind [ :Message ] in [ Say @Message ; Again ; ] ;
]
Every :Tick :Helloer does SayRepeatedly "Hello, " ;
Every :Tick :Goodbyer does SayRepeatedly "Goodbye, " ;
Every :Tick :Worlder does SayRepeatedly "World!" ;
Every :Tick :Changer does [
Peek :CurrentScene ; Is HelloWorld ; Then [
Become :GoodbyeWorld ; Done ;
] ;
Peek :CurrentScene ; Is @goodbye-world ; Then [
Become :HelloWorld ;
Remember Current Helloer ;
Done ;
] ;
Again
] ;
Scenes [ :HelloWorld :GoodbyeWorld ] ;
When :HelloWorld :Started do [
Create Helloer ;
Create Worlder ;
Create Changer ;
] ;
When :GoodbyeWorld :Started do [
Create Goodbyer ;
Create Worlder ;
Create Changer ;
]
Enter HelloWorld ;
| 1 | Actors [ :Helloer :Goodbyer :Changer ] ; |
| 2 | |
| 3 | Define SayRepeatedly [ |
| 4 | Remember :Message ; |
| 5 | Bind [ :Message ] in [ Say @Message ; Again ; ] ; |
| 6 | ] |
| 7 | |
| 8 | Every :Tick :Helloer does SayRepeatedly "Hello, " ; |
| 9 | Every :Tick :Goodbyer does SayRepeatedly "Goodbye, " ; |
| 10 | Every :Tick :Worlder does SayRepeatedly "World!" ; |
| 11 | |
| 12 | Every :Tick :Changer does [ |
| 13 | Peek :CurrentScene ; Is HelloWorld ; Then [ |
| 14 | Become :GoodbyeWorld ; Done ; |
| 15 | ] ; |
| 16 | |
| 17 | Peek :CurrentScene ; Is @goodbye-world ; Then [ |
| 18 | Become :HelloWorld ; |
| 19 | Remember Current Helloer ; |
| 20 | Done ; |
| 21 | ] ; |
| 22 | |
| 23 | Again |
| 24 | ] ; |
| 25 | |
| 26 | Scenes [ :HelloWorld :GoodbyeWorld ] ; |
| 27 | |
| 28 | When :HelloWorld :Started do [ |
| 29 | Create Helloer ; |
| 30 | Create Worlder ; |
| 31 | Create Changer ; |
| 32 | ] ; |
| 33 | |
| 34 | When :GoodbyeWorld :Started do [ |
| 35 | Create Goodbyer ; |
| 36 | Create Worlder ; |
| 37 | Create Changer ; |
| 38 | ] |
| 39 | |
| 40 | Enter HelloWorld ; |
| 41 |