diff options
Diffstat (limited to 'projects/09/K/KGame.vm')
-rw-r--r-- | projects/09/K/KGame.vm | 129 |
1 files changed, 112 insertions, 17 deletions
diff --git a/projects/09/K/KGame.vm b/projects/09/K/KGame.vm index 767c14a..57fc333 100644 --- a/projects/09/K/KGame.vm +++ b/projects/09/K/KGame.vm @@ -20,26 +20,25 @@ call Memory.deAlloc 1 pop temp 0 push constant 0 return -function KGame.run 3 +function KGame.run 5 push argument 0 pop pointer 0 push constant 0 -pop local 0 -push constant 0 -pop local 2 +pop local 4 label WHILE_EXP0 -push local 2 +push local 4 not not if-goto WHILE_END0 +push this 0 +call Board.getStatus 1 +pop local 3 +push constant 0 +pop local 0 label WHILE_EXP1 push local 0 -push constant 130 -lt -push local 0 -push constant 133 -gt -or +push constant 0 +eq not if-goto WHILE_END1 call Keyboard.keyPressed 0 @@ -47,27 +46,123 @@ pop local 0 goto WHILE_EXP1 label WHILE_END1 push local 0 -push constant 130 -sub -pop local 1 +pop local 2 label WHILE_EXP2 -push local 0 +push local 2 push constant 0 eq not not if-goto WHILE_END2 call Keyboard.keyPressed 0 -pop local 0 +pop local 2 goto WHILE_EXP2 label WHILE_END2 +push local 0 +push constant 81 +eq +if-goto IF_TRUE0 +goto IF_FALSE0 +label IF_TRUE0 +push constant 0 +not +pop local 4 +goto IF_END0 +label IF_FALSE0 +push local 3 +push constant 0 +eq +if-goto IF_TRUE1 +goto IF_FALSE1 +label IF_TRUE1 +call Screen.clearScreen 0 +pop temp 0 +push this 0 +push constant 1 +call Board.setStatus 2 +pop temp 0 push this 0 -push local 1 +call Board.draw 1 +pop temp 0 +goto IF_END1 +label IF_FALSE1 +push local 3 +push constant 2 +eq +push local 3 +push constant 3 +eq +or +if-goto IF_TRUE2 +goto IF_FALSE2 +label IF_TRUE2 +call Screen.clearScreen 0 +pop temp 0 +push this 0 +push constant 0 +call Board.setStatus 2 +pop temp 0 +push this 0 +call Board.draw 1 +pop temp 0 +push this 0 +call Board.initBoard 1 +pop temp 0 +goto IF_END2 +label IF_FALSE2 +push local 0 +push constant 82 +eq +if-goto IF_TRUE3 +goto IF_FALSE3 +label IF_TRUE3 +call Screen.clearScreen 0 +pop temp 0 +push this 0 +call Board.initBoard 1 +pop temp 0 +push this 0 +call Board.draw 1 +pop temp 0 +goto IF_END3 +label IF_FALSE3 +push local 0 +push constant 129 +gt +push local 0 +push constant 134 +lt +and +if-goto IF_TRUE4 +goto IF_FALSE4 +label IF_TRUE4 +call Screen.clearScreen 0 +pop temp 0 +push this 0 +push local 0 +push constant 130 +sub call Board.next 2 pop temp 0 push this 0 call Board.draw 1 pop temp 0 +push constant 300 +call Sys.wait 1 +pop temp 0 +call Screen.clearScreen 0 +pop temp 0 +push this 0 +call Board.addTile 1 +pop temp 0 +push this 0 +call Board.draw 1 +pop temp 0 +label IF_FALSE4 +label IF_END3 +label IF_END2 +label IF_END1 +label IF_END0 goto WHILE_EXP0 label WHILE_END0 push constant 0 |