From ac0b05010df8f676fd12240073e5417ae865a686 Mon Sep 17 00:00:00 2001 From: Yuchen Pei Date: Mon, 15 Jan 2018 12:12:48 +0100 Subject: checkpoint - all but pong works - pong: exception in rectangle drawing --- projects/11/Pong/PongGame.vm | 309 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 309 insertions(+) create mode 100644 projects/11/Pong/PongGame.vm (limited to 'projects/11/Pong/PongGame.vm') diff --git a/projects/11/Pong/PongGame.vm b/projects/11/Pong/PongGame.vm new file mode 100644 index 0000000..5521919 --- /dev/null +++ b/projects/11/Pong/PongGame.vm @@ -0,0 +1,309 @@ +function PongGame.new 0 +push constant 7 +call Memory.alloc 1 +pop pointer 0 +call Screen.clearScreen 0 +pop temp 0 +push constant 50 +pop this 6 +push constant 230 +push constant 229 +push this 6 +push constant 7 +call Bat.new 4 +pop this 0 +push constant 253 +push constant 222 +push constant 0 +push constant 511 +push constant 0 +push constant 229 +call Ball.new 6 +pop this 1 +push this 1 +push constant 400 +push constant 0 +call Ball.setDestination 3 +pop temp 0 +push constant 0 +push constant 238 +push constant 511 +push constant 240 +call Screen.drawRectangle 4 +pop temp 0 +push constant 22 +push constant 0 +call Output.moveCursor 2 +pop temp 0 +push constant 8 +call String.new 1 +push constant 83 +call String.appendChar 2 +push constant 99 +call String.appendChar 2 +push constant 111 +call String.appendChar 2 +push constant 114 +call String.appendChar 2 +push constant 101 +call String.appendChar 2 +push constant 58 +call String.appendChar 2 +push constant 32 +call String.appendChar 2 +push constant 48 +call String.appendChar 2 +call Output.printString 1 +pop temp 0 +push constant 0 +pop this 3 +push constant 0 +pop this 4 +push constant 0 +pop this 2 +push constant 0 +pop this 5 +push pointer 0 +return +function PongGame.dispose 0 +push argument 0 +pop pointer 0 +push this 0 +call Bat.dispose 1 +pop temp 0 +push this 1 +call Ball.dispose 1 +pop temp 0 +push pointer 0 +call Memory.deAlloc 1 +pop temp 0 +push constant 0 +return +function PongGame.newInstance 0 +call PongGame.new 0 +pop static 0 +push constant 0 +return +function PongGame.getInstance 0 +push static 0 +return +function PongGame.run 1 +push argument 0 +pop pointer 0 +label run.While0 +push this 3 +not +not +if-goto run.EndWhile0 +label run.While0.While0 +push local 0 +push constant 0 +eq +push this 3 +not +and +not +if-goto run.While0.EndWhile0 +call Keyboard.keyPressed 0 +pop local 0 +push this 0 +call Bat.move 1 +pop temp 0 +push pointer 0 +call PongGame.moveBall 1 +pop temp 0 +push constant 50 +call Sys.wait 1 +pop temp 0 +goto run.While0.While0 +label run.While0.EndWhile0 +push local 0 +push constant 130 +eq +not +if-goto run.While0.Else1 +push this 0 +push constant 1 +call Bat.setDirection 2 +pop temp 0 +goto run.While0.Endif1 +label run.While0.Else1 +push local 0 +push constant 132 +eq +not +if-goto run.While0.If1.Else0 +push this 0 +push constant 2 +call Bat.setDirection 2 +pop temp 0 +goto run.While0.If1.Endif0 +label run.While0.If1.Else0 +push local 0 +push constant 140 +eq +not +if-goto run.While0.If1.If0.Else0 +push constant 1 +neg +pop this 3 +label run.While0.If1.If0.Else0 +label run.While0.If1.Endif0 +label run.While0.Endif1 +label run.While0.While2 +push local 0 +push constant 0 +eq +not +push this 3 +not +and +not +if-goto run.While0.EndWhile2 +call Keyboard.keyPressed 0 +pop local 0 +push this 0 +call Bat.move 1 +pop temp 0 +push pointer 0 +call PongGame.moveBall 1 +pop temp 0 +push constant 50 +call Sys.wait 1 +pop temp 0 +goto run.While0.While2 +label run.While0.EndWhile2 +goto run.While0 +label run.EndWhile0 +push this 3 +not +if-goto run.Else1 +push constant 10 +push constant 27 +call Output.moveCursor 2 +pop temp 0 +push constant 9 +call String.new 1 +push constant 71 +call String.appendChar 2 +push constant 97 +call String.appendChar 2 +push constant 109 +call String.appendChar 2 +push constant 101 +call String.appendChar 2 +push constant 32 +call String.appendChar 2 +push constant 79 +call String.appendChar 2 +push constant 118 +call String.appendChar 2 +push constant 101 +call String.appendChar 2 +push constant 114 +call String.appendChar 2 +call Output.printString 1 +pop temp 0 +label run.Else1 +push constant 0 +return +function PongGame.moveBall 5 +push argument 0 +pop pointer 0 +push this 1 +call Ball.move 1 +pop this 2 +push this 2 +push constant 0 +gt +push this 2 +push this 5 +eq +not +and +not +if-goto moveBall.Else0 +push this 2 +pop this 5 +push constant 0 +pop local 0 +push this 0 +call Bat.getLeft 1 +pop local 1 +push this 0 +call Bat.getRight 1 +pop local 2 +push this 1 +call Ball.getLeft 1 +pop local 3 +push this 1 +call Ball.getRight 1 +pop local 4 +push this 2 +push constant 4 +eq +not +if-goto moveBall.Else0.Else0 +push local 1 +push local 4 +gt +push local 2 +push local 3 +lt +or +pop this 3 +push this 3 +not +not +if-goto moveBall.Else0.Else0.Else0 +push local 4 +push local 1 +push constant 10 +add +lt +not +if-goto moveBall.Else0.Else0.Else0.Else0 +push constant 1 +neg +pop local 0 +goto moveBall.Else0.Else0.Else0.Endif0 +label moveBall.Else0.Else0.Else0.Else0 +push local 3 +push local 2 +push constant 10 +sub +gt +not +if-goto moveBall.Else0.Else0.Else0.If0.Else0 +push constant 1 +pop local 0 +label moveBall.Else0.Else0.Else0.If0.Else0 +label moveBall.Else0.Else0.Else0.Endif0 +push this 6 +push constant 2 +sub +pop this 6 +push this 0 +push this 6 +call Bat.setWidth 2 +pop temp 0 +push this 4 +push constant 1 +add +pop this 4 +push constant 22 +push constant 7 +call Output.moveCursor 2 +pop temp 0 +push this 4 +call Output.printInt 1 +pop temp 0 +label moveBall.Else0.Else0.Else0 +label moveBall.Else0.Else0 +push this 1 +push local 0 +call Ball.bounce 2 +pop temp 0 +label moveBall.Else0 +push constant 0 +return -- cgit v1.2.3