From d3a0cc3a8ba6dfeb64d3faeffdeb6845b60e5840 Mon Sep 17 00:00:00 2001 From: Yuchen Pei Date: Sat, 20 Jan 2018 15:41:49 +0100 Subject: rearranged the dir for github - removed tools and pdfs - rearranged the projects dirs - added md files - other minor changes --- projects/10/Square/Main.ast | 1 - projects/10/Square/Main.jack | 36 -- projects/10/Square/Main.xml | 244 -------- projects/10/Square/MainT.xml | 126 ---- projects/10/Square/Square.ast | 1 - projects/10/Square/Square.jack | 110 ---- projects/10/Square/Square.xml | 1211 ------------------------------------ projects/10/Square/SquareGame.ast | 1 - projects/10/Square/SquareGame.jack | 81 --- projects/10/Square/SquareGame.xml | 643 ------------------- projects/10/Square/SquareGameT.xml | 315 ---------- projects/10/Square/SquareT.xml | 561 ----------------- 12 files changed, 3330 deletions(-) delete mode 100644 projects/10/Square/Main.ast delete mode 100644 projects/10/Square/Main.jack delete mode 100644 projects/10/Square/Main.xml delete mode 100644 projects/10/Square/MainT.xml delete mode 100644 projects/10/Square/Square.ast delete mode 100644 projects/10/Square/Square.jack delete mode 100644 projects/10/Square/Square.xml delete mode 100644 projects/10/Square/SquareGame.ast delete mode 100644 projects/10/Square/SquareGame.jack delete mode 100644 projects/10/Square/SquareGame.xml delete mode 100644 projects/10/Square/SquareGameT.xml delete mode 100644 projects/10/Square/SquareT.xml (limited to 'projects/10/Square') diff --git a/projects/10/Square/Main.ast b/projects/10/Square/Main.ast deleted file mode 100644 index d314f03..0000000 --- a/projects/10/Square/Main.ast +++ /dev/null @@ -1 +0,0 @@ -Right (JClass "Main" [JClassVarDec "static" ("boolean","test")] [JSubroutineDec (JSubroutineHeader "function" ("void","main") []) (JSubroutineBody [("SquareGame","game")] [JLetStatment (JVarId "game" Nothing) (JExpCall (JSubroutineCall "SquareGame" (Just "new") [])),JDoStatement (JSubroutineCall "game" (Just "run") []),JDoStatement (JSubroutineCall "game" (Just "dispose") []),JReturnStatement Nothing]),JSubroutineDec (JSubroutineHeader "function" ("void","test") []) (JSubroutineBody [("int","i"),("int","j"),("String","s"),("Array","a")] [JIfStatement (JKeywordConst "false") [JLetStatment (JVarId "s" Nothing) (JStrConst "string constant"),JLetStatment (JVarId "s" Nothing) (JKeywordConst "null"),JLetStatment (JVarId "a" (Just (JIntConst 1))) (JExpVar (JVarId "a" (Just (JIntConst 2))))] (Just [JLetStatment (JVarId "i" Nothing) (JExpBin (JExpVar (JVarId "i" Nothing)) [('*',JExpUna '-' (JExpVar (JVarId "j" Nothing)))]),JLetStatment (JVarId "j" Nothing) (JExpBin (JExpVar (JVarId "j" Nothing)) [('/',JExpUna '-' (JIntConst 2))]),JLetStatment (JVarId "i" Nothing) (JExpBin (JExpVar (JVarId "i" Nothing)) [('|',JExpVar (JVarId "j" Nothing))])]),JReturnStatement Nothing])]) \ No newline at end of file diff --git a/projects/10/Square/Main.jack b/projects/10/Square/Main.jack deleted file mode 100644 index 0b9e4cb..0000000 --- a/projects/10/Square/Main.jack +++ /dev/null @@ -1,36 +0,0 @@ -// 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/Square/Main.jack - -// (derived from projects/09/Square/Main.jack, with testing additions) - -/** Initializes a new Square Dance game and starts running it. */ -class Main { - static boolean test; // Added for testing -- there is no static keyword - // in the Square files. - function void main() { - var SquareGame game; - let game = SquareGame.new(); - do game.run(); - do game.dispose(); - return; - } - - function void test() { // Added to test Jack syntax that is not use in - var int i, j; // the Square files. - var String s; - var Array a; - if (false) { - let s = "string constant"; - let s = null; - let a[1] = a[2]; - } - else { // There is no else keyword in the Square files. - let i = i * (-j); - let j = j / (-2); // note: unary negate constant 2 - let i = i | j; - } - return; - } -} diff --git a/projects/10/Square/Main.xml b/projects/10/Square/Main.xml deleted file mode 100644 index f6863c6..0000000 --- a/projects/10/Square/Main.xml +++ /dev/null @@ -1,244 +0,0 @@ - - class - Main - { - - static - boolean - test - ; - - - function - void - main - ( - - - ) - - { - - var - SquareGame - game - ; - - - - let - game - = - - - SquareGame - . - new - ( - - - ) - - - ; - - - do - game - . - run - ( - - - ) - ; - - - do - game - . - dispose - ( - - - ) - ; - - - return - ; - - - } - - - - function - void - test - ( - - - ) - - { - - var - int - i - , - j - ; - - - var - String - s - ; - - - var - Array - a - ; - - - - if - ( - - - false - - - ) - { - - - let - s - = - - - string constant - - - ; - - - let - s - = - - - null - - - ; - - - let - a - [ - - - 1 - - - ] - = - - - a - [ - - - 2 - - - ] - - - ; - - - } - else - { - - - let - i - = - - - i - - * - - ( - - - - - - j - - - - ) - - - ; - - - let - j - = - - - j - - / - - ( - - - - - - 2 - - - - ) - - - ; - - - let - i - = - - - i - - | - - j - - - ; - - - } - - - return - ; - - - } - - - } - diff --git a/projects/10/Square/MainT.xml b/projects/10/Square/MainT.xml deleted file mode 100644 index 950c050..0000000 --- a/projects/10/Square/MainT.xml +++ /dev/null @@ -1,126 +0,0 @@ - - class - Main - { - static - boolean - test - ; - function - void - main - ( - ) - { - var - SquareGame - game - ; - let - game - = - SquareGame - . - new - ( - ) - ; - do - game - . - run - ( - ) - ; - do - game - . - dispose - ( - ) - ; - return - ; - } - function - void - test - ( - ) - { - var - int - i - , - j - ; - var - String - s - ; - var - Array - a - ; - if - ( - false - ) - { - let - s - = - string constant - ; - let - s - = - null - ; - let - a - [ - 1 - ] - = - a - [ - 2 - ] - ; - } - else - { - let - i - = - i - * - ( - - - j - ) - ; - let - j - = - j - / - ( - - - 2 - ) - ; - let - i - = - i - | - j - ; - } - return - ; - } - } - diff --git a/projects/10/Square/Square.ast b/projects/10/Square/Square.ast deleted file mode 100644 index d360f5f..0000000 --- a/projects/10/Square/Square.ast +++ /dev/null @@ -1 +0,0 @@ -Right (JClass "Square" [JClassVarDec "field" ("int","x"),JClassVarDec "field" ("int","y"),JClassVarDec "field" ("int","size")] [JSubroutineDec (JSubroutineHeader "constructor" ("Square","new") [("int","Ax"),("int","Ay"),("int","Asize")]) (JSubroutineBody [] [JLetStatment (JVarId "x" Nothing) (JExpVar (JVarId "Ax" Nothing)),JLetStatment (JVarId "y" Nothing) (JExpVar (JVarId "Ay" Nothing)),JLetStatment (JVarId "size" Nothing) (JExpVar (JVarId "Asize" Nothing)),JDoStatement (JSubroutineCall "draw" Nothing []),JReturnStatement (Just (JKeywordConst "this"))]),JSubroutineDec (JSubroutineHeader "method" ("void","dispose") []) (JSubroutineBody [] [JDoStatement (JSubroutineCall "Memory" (Just "deAlloc") [JKeywordConst "this"]),JReturnStatement Nothing]),JSubroutineDec (JSubroutineHeader "method" ("void","draw") []) (JSubroutineBody [] [JDoStatement (JSubroutineCall "Screen" (Just "setColor") [JKeywordConst "true"]),JDoStatement (JSubroutineCall "Screen" (Just "drawRectangle") [JExpVar (JVarId "x" Nothing),JExpVar (JVarId "y" Nothing),JExpBin (JExpVar (JVarId "x" Nothing)) [('+',JExpVar (JVarId "size" Nothing))],JExpBin (JExpVar (JVarId "y" Nothing)) [('+',JExpVar (JVarId "size" Nothing))]]),JReturnStatement Nothing]),JSubroutineDec (JSubroutineHeader "method" ("void","erase") []) (JSubroutineBody [] [JDoStatement (JSubroutineCall "Screen" (Just "setColor") [JKeywordConst "false"]),JDoStatement (JSubroutineCall "Screen" (Just "drawRectangle") [JExpVar (JVarId "x" Nothing),JExpVar (JVarId "y" Nothing),JExpBin (JExpVar (JVarId "x" Nothing)) [('+',JExpVar (JVarId "size" Nothing))],JExpBin (JExpVar (JVarId "y" Nothing)) [('+',JExpVar (JVarId "size" Nothing))]]),JReturnStatement Nothing]),JSubroutineDec (JSubroutineHeader "method" ("void","incSize") []) (JSubroutineBody [] [JIfStatement (JExpBin (JExpBin (JExpBin (JExpVar (JVarId "y" Nothing)) [('+',JExpVar (JVarId "size" Nothing))]) [('<',JIntConst 254)]) [('&',JExpBin (JExpBin (JExpVar (JVarId "x" Nothing)) [('+',JExpVar (JVarId "size" Nothing))]) [('<',JIntConst 510)])]) [JDoStatement (JSubroutineCall "erase" Nothing []),JLetStatment (JVarId "size" Nothing) (JExpBin (JExpVar (JVarId "size" Nothing)) [('+',JIntConst 2)]),JDoStatement (JSubroutineCall "draw" Nothing [])] Nothing,JReturnStatement Nothing]),JSubroutineDec (JSubroutineHeader "method" ("void","decSize") []) (JSubroutineBody [] [JIfStatement (JExpBin (JExpVar (JVarId "size" Nothing)) [('>',JIntConst 2)]) [JDoStatement (JSubroutineCall "erase" Nothing []),JLetStatment (JVarId "size" Nothing) (JExpBin (JExpVar (JVarId "size" Nothing)) [('-',JIntConst 2)]),JDoStatement (JSubroutineCall "draw" Nothing [])] Nothing,JReturnStatement Nothing]),JSubroutineDec (JSubroutineHeader "method" ("void","moveUp") []) (JSubroutineBody [] [JIfStatement (JExpBin (JExpVar (JVarId "y" Nothing)) [('>',JIntConst 1)]) [JDoStatement (JSubroutineCall "Screen" (Just "setColor") [JKeywordConst "false"]),JDoStatement (JSubroutineCall "Screen" (Just "drawRectangle") [JExpVar (JVarId "x" Nothing),JExpBin (JExpBin (JExpVar (JVarId "y" Nothing)) [('+',JExpVar (JVarId "size" Nothing))]) [('-',JIntConst 1)],JExpBin (JExpVar (JVarId "x" Nothing)) [('+',JExpVar (JVarId "size" Nothing))],JExpBin (JExpVar (JVarId "y" Nothing)) [('+',JExpVar (JVarId "size" Nothing))]]),JLetStatment (JVarId "y" Nothing) (JExpBin (JExpVar (JVarId "y" Nothing)) [('-',JIntConst 2)]),JDoStatement (JSubroutineCall "Screen" (Just "setColor") [JKeywordConst "true"]),JDoStatement (JSubroutineCall "Screen" (Just "drawRectangle") [JExpVar (JVarId "x" Nothing),JExpVar (JVarId "y" Nothing),JExpBin (JExpVar (JVarId "x" Nothing)) [('+',JExpVar (JVarId "size" Nothing))],JExpBin (JExpVar (JVarId "y" Nothing)) [('+',JIntConst 1)]])] Nothing,JReturnStatement Nothing]),JSubroutineDec (JSubroutineHeader "method" ("void","moveDown") []) (JSubroutineBody [] [JIfStatement (JExpBin (JExpBin (JExpVar (JVarId "y" Nothing)) [('+',JExpVar (JVarId "size" Nothing))]) [('<',JIntConst 254)]) [JDoStatement (JSubroutineCall "Screen" (Just "setColor") [JKeywordConst "false"]),JDoStatement (JSubroutineCall "Screen" (Just "drawRectangle") [JExpVar (JVarId "x" Nothing),JExpVar (JVarId "y" Nothing),JExpBin (JExpVar (JVarId "x" Nothing)) [('+',JExpVar (JVarId "size" Nothing))],JExpBin (JExpVar (JVarId "y" Nothing)) [('+',JIntConst 1)]]),JLetStatment (JVarId "y" Nothing) (JExpBin (JExpVar (JVarId "y" Nothing)) [('+',JIntConst 2)]),JDoStatement (JSubroutineCall "Screen" (Just "setColor") [JKeywordConst "true"]),JDoStatement (JSubroutineCall "Screen" (Just "drawRectangle") [JExpVar (JVarId "x" Nothing),JExpBin (JExpBin (JExpVar (JVarId "y" Nothing)) [('+',JExpVar (JVarId "size" Nothing))]) [('-',JIntConst 1)],JExpBin (JExpVar (JVarId "x" Nothing)) [('+',JExpVar (JVarId "size" Nothing))],JExpBin (JExpVar (JVarId "y" Nothing)) [('+',JExpVar (JVarId "size" Nothing))]])] Nothing,JReturnStatement Nothing]),JSubroutineDec (JSubroutineHeader "method" ("void","moveLeft") []) (JSubroutineBody [] [JIfStatement (JExpBin (JExpVar (JVarId "x" Nothing)) [('>',JIntConst 1)]) [JDoStatement (JSubroutineCall "Screen" (Just "setColor") [JKeywordConst "false"]),JDoStatement (JSubroutineCall "Screen" (Just "drawRectangle") [JExpBin (JExpBin (JExpVar (JVarId "x" Nothing)) [('+',JExpVar (JVarId "size" Nothing))]) [('-',JIntConst 1)],JExpVar (JVarId "y" Nothing),JExpBin (JExpVar (JVarId "x" Nothing)) [('+',JExpVar (JVarId "size" Nothing))],JExpBin (JExpVar (JVarId "y" Nothing)) [('+',JExpVar (JVarId "size" Nothing))]]),JLetStatment (JVarId "x" Nothing) (JExpBin (JExpVar (JVarId "x" Nothing)) [('-',JIntConst 2)]),JDoStatement (JSubroutineCall "Screen" (Just "setColor") [JKeywordConst "true"]),JDoStatement (JSubroutineCall "Screen" (Just "drawRectangle") [JExpVar (JVarId "x" Nothing),JExpVar (JVarId "y" Nothing),JExpBin (JExpVar (JVarId "x" Nothing)) [('+',JIntConst 1)],JExpBin (JExpVar (JVarId "y" Nothing)) [('+',JExpVar (JVarId "size" Nothing))]])] Nothing,JReturnStatement Nothing]),JSubroutineDec (JSubroutineHeader "method" ("void","moveRight") []) (JSubroutineBody [] [JIfStatement (JExpBin (JExpBin (JExpVar (JVarId "x" Nothing)) [('+',JExpVar (JVarId "size" Nothing))]) [('<',JIntConst 510)]) [JDoStatement (JSubroutineCall "Screen" (Just "setColor") [JKeywordConst "false"]),JDoStatement (JSubroutineCall "Screen" (Just "drawRectangle") [JExpVar (JVarId "x" Nothing),JExpVar (JVarId "y" Nothing),JExpBin (JExpVar (JVarId "x" Nothing)) [('+',JIntConst 1)],JExpBin (JExpVar (JVarId "y" Nothing)) [('+',JExpVar (JVarId "size" Nothing))]]),JLetStatment (JVarId "x" Nothing) (JExpBin (JExpVar (JVarId "x" Nothing)) [('+',JIntConst 2)]),JDoStatement (JSubroutineCall "Screen" (Just "setColor") [JKeywordConst "true"]),JDoStatement (JSubroutineCall "Screen" (Just "drawRectangle") [JExpBin (JExpBin (JExpVar (JVarId "x" Nothing)) [('+',JExpVar (JVarId "size" Nothing))]) [('-',JIntConst 1)],JExpVar (JVarId "y" Nothing),JExpBin (JExpVar (JVarId "x" Nothing)) [('+',JExpVar (JVarId "size" Nothing))],JExpBin (JExpVar (JVarId "y" Nothing)) [('+',JExpVar (JVarId "size" Nothing))]])] Nothing,JReturnStatement Nothing])]) \ No newline at end of file diff --git a/projects/10/Square/Square.jack b/projects/10/Square/Square.jack deleted file mode 100644 index 3faf24f..0000000 --- a/projects/10/Square/Square.jack +++ /dev/null @@ -1,110 +0,0 @@ -// 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/Square/Square.jack - -// (same as projects/09/Square/Square.jack) - -/** Implements a graphical square. */ -class Square { - - field int x, y; // screen location of the square's top-left corner - field int size; // length of this square, in pixels - - /** Constructs a new square with a given location and size. */ - constructor Square new(int Ax, int Ay, int Asize) { - let x = Ax; - let y = Ay; - let size = Asize; - do draw(); - return this; - } - - /** Disposes this square. */ - method void dispose() { - do Memory.deAlloc(this); - return; - } - - /** Draws the square on the screen. */ - method void draw() { - do Screen.setColor(true); - do Screen.drawRectangle(x, y, x + size, y + size); - return; - } - - /** Erases the square from the screen. */ - method void erase() { - do Screen.setColor(false); - do Screen.drawRectangle(x, y, x + size, y + size); - return; - } - - /** Increments the square size by 2 pixels. */ - method void incSize() { - if (((y + size) < 254) & ((x + size) < 510)) { - do erase(); - let size = size + 2; - do draw(); - } - return; - } - - /** Decrements the square size by 2 pixels. */ - method void decSize() { - if (size > 2) { - do erase(); - let size = size - 2; - do draw(); - } - return; - } - - /** Moves the square up by 2 pixels. */ - method void moveUp() { - if (y > 1) { - do Screen.setColor(false); - do Screen.drawRectangle(x, (y + size) - 1, x + size, y + size); - let y = y - 2; - do Screen.setColor(true); - do Screen.drawRectangle(x, y, x + size, y + 1); - } - return; - } - - /** Moves the square down by 2 pixels. */ - method void moveDown() { - if ((y + size) < 254) { - do Screen.setColor(false); - do Screen.drawRectangle(x, y, x + size, y + 1); - let y = y + 2; - do Screen.setColor(true); - do Screen.drawRectangle(x, (y + size) - 1, x + size, y + size); - } - return; - } - - /** Moves the square left by 2 pixels. */ - method void moveLeft() { - if (x > 1) { - do Screen.setColor(false); - do Screen.drawRectangle((x + size) - 1, y, x + size, y + size); - let x = x - 2; - do Screen.setColor(true); - do Screen.drawRectangle(x, y, x + 1, y + size); - } - return; - } - - /** Moves the square right by 2 pixels. */ - method void moveRight() { - if ((x + size) < 510) { - do Screen.setColor(false); - do Screen.drawRectangle(x, y, x + 1, y + size); - let x = x + 2; - do Screen.setColor(true); - do Screen.drawRectangle((x + size) - 1, y, x + size, y + size); - } - return; - } -} diff --git a/projects/10/Square/Square.xml b/projects/10/Square/Square.xml deleted file mode 100644 index ff5f235..0000000 --- a/projects/10/Square/Square.xml +++ /dev/null @@ -1,1211 +0,0 @@ - - class - Square - { - - field - int - x - , - y - ; - - - field - int - size - ; - - - constructor - Square - new - ( - - int - Ax - , - int - Ay - , - int - Asize - - ) - - { - - - let - x - = - - - Ax - - - ; - - - let - y - = - - - Ay - - - ; - - - let - size - = - - - Asize - - - ; - - - do - draw - ( - - - ) - ; - - - return - - - this - - - ; - - - } - - - - method - void - dispose - ( - - - ) - - { - - - do - Memory - . - deAlloc - ( - - - - this - - - - ) - ; - - - return - ; - - - } - - - - method - void - draw - ( - - - ) - - { - - - do - Screen - . - setColor - ( - - - - true - - - - ) - ; - - - do - Screen - . - drawRectangle - ( - - - - x - - - , - - - y - - - , - - - x - - + - - size - - - , - - - y - - + - - size - - - - ) - ; - - - return - ; - - - } - - - - method - void - erase - ( - - - ) - - { - - - do - Screen - . - setColor - ( - - - - false - - - - ) - ; - - - do - Screen - . - drawRectangle - ( - - - - x - - - , - - - y - - - , - - - x - - + - - size - - - , - - - y - - + - - size - - - - ) - ; - - - return - ; - - - } - - - - method - void - incSize - ( - - - ) - - { - - - if - ( - - - ( - - - ( - - - y - - + - - size - - - ) - - < - - 254 - - - ) - - & - - ( - - - ( - - - x - - + - - size - - - ) - - < - - 510 - - - ) - - - ) - { - - - do - erase - ( - - - ) - ; - - - let - size - = - - - size - - + - - 2 - - - ; - - - do - draw - ( - - - ) - ; - - - } - - - return - ; - - - } - - - - method - void - decSize - ( - - - ) - - { - - - if - ( - - - size - - > - - 2 - - - ) - { - - - do - erase - ( - - - ) - ; - - - let - size - = - - - size - - - - - 2 - - - ; - - - do - draw - ( - - - ) - ; - - - } - - - return - ; - - - } - - - - method - void - moveUp - ( - - - ) - - { - - - if - ( - - - y - - > - - 1 - - - ) - { - - - do - Screen - . - setColor - ( - - - - false - - - - ) - ; - - - do - Screen - . - drawRectangle - ( - - - - x - - - , - - - ( - - - y - - + - - size - - - ) - - - - - 1 - - - , - - - x - - + - - size - - - , - - - y - - + - - size - - - - ) - ; - - - let - y - = - - - y - - - - - 2 - - - ; - - - do - Screen - . - setColor - ( - - - - true - - - - ) - ; - - - do - Screen - . - drawRectangle - ( - - - - x - - - , - - - y - - - , - - - x - - + - - size - - - , - - - y - - + - - 1 - - - - ) - ; - - - } - - - return - ; - - - } - - - - method - void - moveDown - ( - - - ) - - { - - - if - ( - - - ( - - - y - - + - - size - - - ) - - < - - 254 - - - ) - { - - - do - Screen - . - setColor - ( - - - - false - - - - ) - ; - - - do - Screen - . - drawRectangle - ( - - - - x - - - , - - - y - - - , - - - x - - + - - size - - - , - - - y - - + - - 1 - - - - ) - ; - - - let - y - = - - - y - - + - - 2 - - - ; - - - do - Screen - . - setColor - ( - - - - true - - - - ) - ; - - - do - Screen - . - drawRectangle - ( - - - - x - - - , - - - ( - - - y - - + - - size - - - ) - - - - - 1 - - - , - - - x - - + - - size - - - , - - - y - - + - - size - - - - ) - ; - - - } - - - return - ; - - - } - - - - method - void - moveLeft - ( - - - ) - - { - - - if - ( - - - x - - > - - 1 - - - ) - { - - - do - Screen - . - setColor - ( - - - - false - - - - ) - ; - - - do - Screen - . - drawRectangle - ( - - - - ( - - - x - - + - - size - - - ) - - - - - 1 - - - , - - - y - - - , - - - x - - + - - size - - - , - - - y - - + - - size - - - - ) - ; - - - let - x - = - - - x - - - - - 2 - - - ; - - - do - Screen - . - setColor - ( - - - - true - - - - ) - ; - - - do - Screen - . - drawRectangle - ( - - - - x - - - , - - - y - - - , - - - x - - + - - 1 - - - , - - - y - - + - - size - - - - ) - ; - - - } - - - return - ; - - - } - - - - method - void - moveRight - ( - - - ) - - { - - - if - ( - - - ( - - - x - - + - - size - - - ) - - < - - 510 - - - ) - { - - - do - Screen - . - setColor - ( - - - - false - - - - ) - ; - - - do - Screen - . - drawRectangle - ( - - - - x - - - , - - - y - - - , - - - x - - + - - 1 - - - , - - - y - - + - - size - - - - ) - ; - - - let - x - = - - - x - - + - - 2 - - - ; - - - do - Screen - . - setColor - ( - - - - true - - - - ) - ; - - - do - Screen - . - drawRectangle - ( - - - - ( - - - x - - + - - size - - - ) - - - - - 1 - - - , - - - y - - - , - - - x - - + - - size - - - , - - - y - - + - - size - - - - ) - ; - - - } - - - return - ; - - - } - - - } - diff --git a/projects/10/Square/SquareGame.ast b/projects/10/Square/SquareGame.ast deleted file mode 100644 index 55a9ff0..0000000 --- a/projects/10/Square/SquareGame.ast +++ /dev/null @@ -1 +0,0 @@ -Right (JClass "SquareGame" [JClassVarDec "field" ("Square","square"),JClassVarDec "field" ("int","direction")] [JSubroutineDec (JSubroutineHeader "constructor" ("SquareGame","new") []) (JSubroutineBody [] [JLetStatment (JVarId "square" Nothing) (JExpCall (JSubroutineCall "Square" (Just "new") [JIntConst 0,JIntConst 0,JIntConst 30])),JLetStatment (JVarId "direction" Nothing) (JIntConst 0),JReturnStatement (Just (JKeywordConst "this"))]),JSubroutineDec (JSubroutineHeader "method" ("void","dispose") []) (JSubroutineBody [] [JDoStatement (JSubroutineCall "square" (Just "dispose") []),JDoStatement (JSubroutineCall "Memory" (Just "deAlloc") [JKeywordConst "this"]),JReturnStatement Nothing]),JSubroutineDec (JSubroutineHeader "method" ("void","moveSquare") []) (JSubroutineBody [] [JIfStatement (JExpBin (JExpVar (JVarId "direction" Nothing)) [('=',JIntConst 1)]) [JDoStatement (JSubroutineCall "square" (Just "moveUp") [])] Nothing,JIfStatement (JExpBin (JExpVar (JVarId "direction" Nothing)) [('=',JIntConst 2)]) [JDoStatement (JSubroutineCall "square" (Just "moveDown") [])] Nothing,JIfStatement (JExpBin (JExpVar (JVarId "direction" Nothing)) [('=',JIntConst 3)]) [JDoStatement (JSubroutineCall "square" (Just "moveLeft") [])] Nothing,JIfStatement (JExpBin (JExpVar (JVarId "direction" Nothing)) [('=',JIntConst 4)]) [JDoStatement (JSubroutineCall "square" (Just "moveRight") [])] Nothing,JDoStatement (JSubroutineCall "Sys" (Just "wait") [JIntConst 5]),JReturnStatement Nothing]),JSubroutineDec (JSubroutineHeader "method" ("void","run") []) (JSubroutineBody [("char","key"),("boolean","exit")] [JLetStatment (JVarId "exit" Nothing) (JKeywordConst "false"),JWhileStatment (JExpUna '~' (JExpVar (JVarId "exit" Nothing))) [JWhileStatment (JExpBin (JExpVar (JVarId "key" Nothing)) [('=',JIntConst 0)]) [JLetStatment (JVarId "key" Nothing) (JExpCall (JSubroutineCall "Keyboard" (Just "keyPressed") [])),JDoStatement (JSubroutineCall "moveSquare" Nothing [])],JIfStatement (JExpBin (JExpVar (JVarId "key" Nothing)) [('=',JIntConst 81)]) [JLetStatment (JVarId "exit" Nothing) (JKeywordConst "true")] Nothing,JIfStatement (JExpBin (JExpVar (JVarId "key" Nothing)) [('=',JIntConst 90)]) [JDoStatement (JSubroutineCall "square" (Just "decSize") [])] Nothing,JIfStatement (JExpBin (JExpVar (JVarId "key" Nothing)) [('=',JIntConst 88)]) [JDoStatement (JSubroutineCall "square" (Just "incSize") [])] Nothing,JIfStatement (JExpBin (JExpVar (JVarId "key" Nothing)) [('=',JIntConst 131)]) [JLetStatment (JVarId "direction" Nothing) (JIntConst 1)] Nothing,JIfStatement (JExpBin (JExpVar (JVarId "key" Nothing)) [('=',JIntConst 133)]) [JLetStatment (JVarId "direction" Nothing) (JIntConst 2)] Nothing,JIfStatement (JExpBin (JExpVar (JVarId "key" Nothing)) [('=',JIntConst 130)]) [JLetStatment (JVarId "direction" Nothing) (JIntConst 3)] Nothing,JIfStatement (JExpBin (JExpVar (JVarId "key" Nothing)) [('=',JIntConst 132)]) [JLetStatment (JVarId "direction" Nothing) (JIntConst 4)] Nothing,JWhileStatment (JExpUna '~' (JExpBin (JExpVar (JVarId "key" Nothing)) [('=',JIntConst 0)])) [JLetStatment (JVarId "key" Nothing) (JExpCall (JSubroutineCall "Keyboard" (Just "keyPressed") [])),JDoStatement (JSubroutineCall "moveSquare" Nothing [])]],JReturnStatement Nothing])]) \ No newline at end of file diff --git a/projects/10/Square/SquareGame.jack b/projects/10/Square/SquareGame.jack deleted file mode 100644 index 4f71b16..0000000 --- a/projects/10/Square/SquareGame.jack +++ /dev/null @@ -1,81 +0,0 @@ -// 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/Square/SquareGame.jack - -// (same as projects/09/Square/SquareGame.jack) - -/** - * Implements the Square Dance game. - * This simple game allows the user to move a black square around - * the screen, and change the square's size during the movement. - * When the game starts, a square of 30 by 30 pixels is shown at the - * top-left corner of the screen. The user controls the square as follows. - * The 4 arrow keys are used to move the square up, down, left, and right. - * The 'z' and 'x' keys are used, respectively, to decrement and increment - * the square's size. The 'q' key is used to quit the game. - */ - -class SquareGame { - field Square square; // the square of this game - field int direction; // the square's current direction: - // 0=none, 1=up, 2=down, 3=left, 4=right - - /** Constructs a new Square Game. */ - constructor SquareGame new() { - // Creates a 30 by 30 pixels square and positions it at the top-left - // of the screen. - let square = Square.new(0, 0, 30); - let direction = 0; // initial state is no movement - return this; - } - - /** Disposes this game. */ - method void dispose() { - do square.dispose(); - do Memory.deAlloc(this); - return; - } - - /** Moves the square in the current direction. */ - method void moveSquare() { - if (direction = 1) { do square.moveUp(); } - if (direction = 2) { do square.moveDown(); } - if (direction = 3) { do square.moveLeft(); } - if (direction = 4) { do square.moveRight(); } - do Sys.wait(5); // delays the next movement - return; - } - - /** Runs the game: handles the user's inputs and moves the square accordingly */ - method void run() { - var char key; // the key currently pressed by the user - var boolean exit; - let exit = false; - - while (~exit) { - // waits for a key to be pressed - while (key = 0) { - let key = Keyboard.keyPressed(); - do moveSquare(); - } - if (key = 81) { let exit = true; } // q key - if (key = 90) { do square.decSize(); } // z key - if (key = 88) { do square.incSize(); } // x key - if (key = 131) { let direction = 1; } // up arrow - if (key = 133) { let direction = 2; } // down arrow - if (key = 130) { let direction = 3; } // left arrow - if (key = 132) { let direction = 4; } // right arrow - - // waits for the key to be released - while (~(key = 0)) { - let key = Keyboard.keyPressed(); - do moveSquare(); - } - } // while - return; - } -} - - - diff --git a/projects/10/Square/SquareGame.xml b/projects/10/Square/SquareGame.xml deleted file mode 100644 index ed3ab6e..0000000 --- a/projects/10/Square/SquareGame.xml +++ /dev/null @@ -1,643 +0,0 @@ - - class - SquareGame - { - - field - Square - square - ; - - - field - int - direction - ; - - - constructor - SquareGame - new - ( - - - ) - - { - - - let - square - = - - - Square - . - new - ( - - - - 0 - - - , - - - 0 - - - , - - - 30 - - - - ) - - - ; - - - let - direction - = - - - 0 - - - ; - - - return - - - this - - - ; - - - } - - - - method - void - dispose - ( - - - ) - - { - - - do - square - . - dispose - ( - - - ) - ; - - - do - Memory - . - deAlloc - ( - - - - this - - - - ) - ; - - - return - ; - - - } - - - - method - void - moveSquare - ( - - - ) - - { - - - if - ( - - - direction - - = - - 1 - - - ) - { - - - do - square - . - moveUp - ( - - - ) - ; - - - } - - - if - ( - - - direction - - = - - 2 - - - ) - { - - - do - square - . - moveDown - ( - - - ) - ; - - - } - - - if - ( - - - direction - - = - - 3 - - - ) - { - - - do - square - . - moveLeft - ( - - - ) - ; - - - } - - - if - ( - - - direction - - = - - 4 - - - ) - { - - - do - square - . - moveRight - ( - - - ) - ; - - - } - - - do - Sys - . - wait - ( - - - - 5 - - - - ) - ; - - - return - ; - - - } - - - - method - void - run - ( - - - ) - - { - - var - char - key - ; - - - var - boolean - exit - ; - - - - let - exit - = - - - false - - - ; - - - while - ( - - - ~ - - exit - - - - ) - { - - - while - ( - - - key - - = - - 0 - - - ) - { - - - let - key - = - - - Keyboard - . - keyPressed - ( - - - ) - - - ; - - - do - moveSquare - ( - - - ) - ; - - - } - - - if - ( - - - key - - = - - 81 - - - ) - { - - - let - exit - = - - - true - - - ; - - - } - - - if - ( - - - key - - = - - 90 - - - ) - { - - - do - square - . - decSize - ( - - - ) - ; - - - } - - - if - ( - - - key - - = - - 88 - - - ) - { - - - do - square - . - incSize - ( - - - ) - ; - - - } - - - if - ( - - - key - - = - - 131 - - - ) - { - - - let - direction - = - - - 1 - - - ; - - - } - - - if - ( - - - key - - = - - 133 - - - ) - { - - - let - direction - = - - - 2 - - - ; - - - } - - - if - ( - - - key - - = - - 130 - - - ) - { - - - let - direction - = - - - 3 - - - ; - - - } - - - if - ( - - - key - - = - - 132 - - - ) - { - - - let - direction - = - - - 4 - - - ; - - - } - - - while - ( - - - ~ - - ( - - - key - - = - - 0 - - - ) - - - - ) - { - - - let - key - = - - - Keyboard - . - keyPressed - ( - - - ) - - - ; - - - do - moveSquare - ( - - - ) - ; - - - } - - - } - - - return - ; - - - } - - - } - diff --git a/projects/10/Square/SquareGameT.xml b/projects/10/Square/SquareGameT.xml deleted file mode 100644 index 3136af2..0000000 --- a/projects/10/Square/SquareGameT.xml +++ /dev/null @@ -1,315 +0,0 @@ - - class - SquareGame - { - field - Square - square - ; - field - int - direction - ; - constructor - SquareGame - new - ( - ) - { - let - square - = - Square - . - new - ( - 0 - , - 0 - , - 30 - ) - ; - let - direction - = - 0 - ; - return - this - ; - } - method - void - dispose - ( - ) - { - do - square - . - dispose - ( - ) - ; - do - Memory - . - deAlloc - ( - this - ) - ; - return - ; - } - method - void - moveSquare - ( - ) - { - if - ( - direction - = - 1 - ) - { - do - square - . - moveUp - ( - ) - ; - } - if - ( - direction - = - 2 - ) - { - do - square - . - moveDown - ( - ) - ; - } - if - ( - direction - = - 3 - ) - { - do - square - . - moveLeft - ( - ) - ; - } - if - ( - direction - = - 4 - ) - { - do - square - . - moveRight - ( - ) - ; - } - do - Sys - . - wait - ( - 5 - ) - ; - return - ; - } - method - void - run - ( - ) - { - var - char - key - ; - var - boolean - exit - ; - let - exit - = - false - ; - while - ( - ~ - exit - ) - { - while - ( - key - = - 0 - ) - { - let - key - = - Keyboard - . - keyPressed - ( - ) - ; - do - moveSquare - ( - ) - ; - } - if - ( - key - = - 81 - ) - { - let - exit - = - true - ; - } - if - ( - key - = - 90 - ) - { - do - square - . - decSize - ( - ) - ; - } - if - ( - key - = - 88 - ) - { - do - square - . - incSize - ( - ) - ; - } - if - ( - key - = - 131 - ) - { - let - direction - = - 1 - ; - } - if - ( - key - = - 133 - ) - { - let - direction - = - 2 - ; - } - if - ( - key - = - 130 - ) - { - let - direction - = - 3 - ; - } - if - ( - key - = - 132 - ) - { - let - direction - = - 4 - ; - } - while - ( - ~ - ( - key - = - 0 - ) - ) - { - let - key - = - Keyboard - . - keyPressed - ( - ) - ; - do - moveSquare - ( - ) - ; - } - } - return - ; - } - } - diff --git a/projects/10/Square/SquareT.xml b/projects/10/Square/SquareT.xml deleted file mode 100644 index 69a8ca0..0000000 --- a/projects/10/Square/SquareT.xml +++ /dev/null @@ -1,561 +0,0 @@ - - class - Square - { - field - int - x - , - y - ; - field - int - size - ; - constructor - Square - new - ( - int - Ax - , - int - Ay - , - int - Asize - ) - { - let - x - = - Ax - ; - let - y - = - Ay - ; - let - size - = - Asize - ; - do - draw - ( - ) - ; - return - this - ; - } - method - void - dispose - ( - ) - { - do - Memory - . - deAlloc - ( - this - ) - ; - return - ; - } - method - void - draw - ( - ) - { - do - Screen - . - setColor - ( - true - ) - ; - do - Screen - . - drawRectangle - ( - x - , - y - , - x - + - size - , - y - + - size - ) - ; - return - ; - } - method - void - erase - ( - ) - { - do - Screen - . - setColor - ( - false - ) - ; - do - Screen - . - drawRectangle - ( - x - , - y - , - x - + - size - , - y - + - size - ) - ; - return - ; - } - method - void - incSize - ( - ) - { - if - ( - ( - ( - y - + - size - ) - < - 254 - ) - & - ( - ( - x - + - size - ) - < - 510 - ) - ) - { - do - erase - ( - ) - ; - let - size - = - size - + - 2 - ; - do - draw - ( - ) - ; - } - return - ; - } - method - void - decSize - ( - ) - { - if - ( - size - > - 2 - ) - { - do - erase - ( - ) - ; - let - size - = - size - - - 2 - ; - do - draw - ( - ) - ; - } - return - ; - } - method - void - moveUp - ( - ) - { - if - ( - y - > - 1 - ) - { - do - Screen - . - setColor - ( - false - ) - ; - do - Screen - . - drawRectangle - ( - x - , - ( - y - + - size - ) - - - 1 - , - x - + - size - , - y - + - size - ) - ; - let - y - = - y - - - 2 - ; - do - Screen - . - setColor - ( - true - ) - ; - do - Screen - . - drawRectangle - ( - x - , - y - , - x - + - size - , - y - + - 1 - ) - ; - } - return - ; - } - method - void - moveDown - ( - ) - { - if - ( - ( - y - + - size - ) - < - 254 - ) - { - do - Screen - . - setColor - ( - false - ) - ; - do - Screen - . - drawRectangle - ( - x - , - y - , - x - + - size - , - y - + - 1 - ) - ; - let - y - = - y - + - 2 - ; - do - Screen - . - setColor - ( - true - ) - ; - do - Screen - . - drawRectangle - ( - x - , - ( - y - + - size - ) - - - 1 - , - x - + - size - , - y - + - size - ) - ; - } - return - ; - } - method - void - moveLeft - ( - ) - { - if - ( - x - > - 1 - ) - { - do - Screen - . - setColor - ( - false - ) - ; - do - Screen - . - drawRectangle - ( - ( - x - + - size - ) - - - 1 - , - y - , - x - + - size - , - y - + - size - ) - ; - let - x - = - x - - - 2 - ; - do - Screen - . - setColor - ( - true - ) - ; - do - Screen - . - drawRectangle - ( - x - , - y - , - x - + - 1 - , - y - + - size - ) - ; - } - return - ; - } - method - void - moveRight - ( - ) - { - if - ( - ( - x - + - size - ) - < - 510 - ) - { - do - Screen - . - setColor - ( - false - ) - ; - do - Screen - . - drawRectangle - ( - x - , - y - , - x - + - 1 - , - y - + - size - ) - ; - let - x - = - x - + - 2 - ; - do - Screen - . - setColor - ( - true - ) - ; - do - Screen - . - drawRectangle - ( - ( - x - + - size - ) - - - 1 - , - y - , - x - + - size - , - y - + - size - ) - ; - } - return - ; - } - } - -- cgit v1.2.3