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/Bat.vm | 204 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 204 insertions(+) create mode 100644 projects/11/Pong/Bat.vm (limited to 'projects/11/Pong/Bat.vm') diff --git a/projects/11/Pong/Bat.vm b/projects/11/Pong/Bat.vm new file mode 100644 index 0000000..23b4033 --- /dev/null +++ b/projects/11/Pong/Bat.vm @@ -0,0 +1,204 @@ +function Bat.new 0 +push constant 5 +call Memory.alloc 1 +pop pointer 0 +push argument 0 +pop this 0 +push argument 1 +pop this 1 +push argument 2 +pop this 2 +push argument 3 +pop this 3 +push constant 2 +pop this 4 +push pointer 0 +call Bat.show 1 +pop temp 0 +push pointer 0 +return +function Bat.dispose 0 +push argument 0 +pop pointer 0 +push pointer 0 +call Memory.deAlloc 1 +pop temp 0 +push constant 0 +return +function Bat.show 0 +push argument 0 +pop pointer 0 +push constant 1 +neg +call Screen.setColor 1 +pop temp 0 +push pointer 0 +call Bat.draw 1 +pop temp 0 +push constant 0 +return +function Bat.hide 0 +push argument 0 +pop pointer 0 +push constant 0 +call Screen.setColor 1 +pop temp 0 +push pointer 0 +call Bat.draw 1 +pop temp 0 +push constant 0 +return +function Bat.draw 0 +push argument 0 +pop pointer 0 +push this 0 +push this 1 +push this 0 +push this 2 +add +push this 1 +push this 3 +add +call Screen.drawRectangle 4 +pop temp 0 +push constant 0 +return +function Bat.setDirection 0 +push argument 0 +pop pointer 0 +push argument 0 +pop this 4 +push constant 0 +return +function Bat.getLeft 0 +push argument 0 +pop pointer 0 +push this 0 +return +function Bat.getRight 0 +push argument 0 +pop pointer 0 +push this 0 +push this 2 +add +return +function Bat.setWidth 0 +push argument 0 +pop pointer 0 +push pointer 0 +call Bat.hide 1 +pop temp 0 +push argument 0 +pop this 2 +push pointer 0 +call Bat.show 1 +pop temp 0 +push constant 0 +return +function Bat.move 0 +push argument 0 +pop pointer 0 +push this 4 +push constant 1 +eq +not +if-goto move.Else0 +push this 0 +push constant 4 +sub +pop this 0 +push this 0 +push constant 0 +lt +not +if-goto move.Else0.Else0 +push constant 0 +pop this 0 +label move.Else0.Else0 +push constant 0 +call Screen.setColor 1 +pop temp 0 +push this 0 +push this 2 +add +push constant 1 +add +push this 1 +push this 0 +push this 2 +add +push constant 4 +add +push this 1 +push this 3 +add +call Screen.drawRectangle 4 +pop temp 0 +push constant 1 +neg +call Screen.setColor 1 +pop temp 0 +push this 0 +push this 1 +push this 0 +push constant 3 +add +push this 1 +push this 3 +add +call Screen.drawRectangle 4 +pop temp 0 +goto move.Endif0 +label move.Else0 +push this 0 +push constant 4 +add +pop this 0 +push this 0 +push this 2 +add +push constant 511 +gt +not +if-goto move.If0.Else0 +push constant 511 +push this 2 +sub +pop this 0 +label move.If0.Else0 +push constant 0 +call Screen.setColor 1 +pop temp 0 +push this 0 +push constant 4 +sub +push this 1 +push this 0 +push constant 1 +sub +push this 1 +push this 3 +add +call Screen.drawRectangle 4 +pop temp 0 +push constant 1 +neg +call Screen.setColor 1 +pop temp 0 +push this 0 +push this 2 +add +push constant 3 +sub +push this 1 +push this 0 +push this 2 +add +push this 1 +push this 3 +add +call Screen.drawRectangle 4 +pop temp 0 +label move.Endif0 +push constant 0 +return -- cgit v1.2.3