diff options
author | Yuchen Pei <me@ypei.me> | 2017-11-29 12:30:41 +0100 |
---|---|---|
committer | Yuchen Pei <me@ypei.me> | 2017-11-29 12:30:41 +0100 |
commit | a000308104aab27c2dde9a306f1bc654b2db4806 (patch) | |
tree | aecc628e14c1628b5714281437aba18680cdc27b /projects/10/ExpressionLessSquare/SquareGame.jack |
first commit
Diffstat (limited to 'projects/10/ExpressionLessSquare/SquareGame.jack')
-rw-r--r-- | projects/10/ExpressionLessSquare/SquareGame.jack | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/projects/10/ExpressionLessSquare/SquareGame.jack b/projects/10/ExpressionLessSquare/SquareGame.jack new file mode 100644 index 0000000..2866f0d --- /dev/null +++ b/projects/10/ExpressionLessSquare/SquareGame.jack @@ -0,0 +1,60 @@ +// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+// File name: projects/10/ExpressionLessSquare/SquareGame.jack
+
+/** Expressionless version of projects/10/Square/SquareGame.jack. */
+
+class SquareGame {
+ field Square square;
+ field int direction;
+
+ constructor SquareGame new() {
+ let square = square;
+ let direction = direction;
+ return square;
+ }
+
+ method void dispose() {
+ do square.dispose();
+ do Memory.deAlloc(square);
+ return;
+ }
+
+ method void moveSquare() {
+ if (direction) { do square.moveUp(); }
+ if (direction) { do square.moveDown(); }
+ if (direction) { do square.moveLeft(); }
+ if (direction) { do square.moveRight(); }
+ do Sys.wait(direction);
+ return;
+ }
+
+ method void run() {
+ var char key;
+ var boolean exit;
+
+ let exit = key;
+ while (exit) {
+ while (key) {
+ let key = key;
+ do moveSquare();
+ }
+
+ if (key) { let exit = exit; }
+ if (key) { do square.decSize(); }
+ if (key) { do square.incSize(); }
+ if (key) { let direction = exit; }
+ if (key) { let direction = key; }
+ if (key) { let direction = square; }
+ if (key) { let direction = direction; }
+
+ while (key) {
+ let key = key;
+ do moveSquare();
+ }
+ }
+ return;
+ }
+}
+
|