Compiled pre-programs
This commit is contained in:
parent
e1a278f4d9
commit
23324814bd
|
@ -0,0 +1,149 @@
|
||||||
|
function Main.main 4
|
||||||
|
push constant 18
|
||||||
|
call String.new 1
|
||||||
|
push constant 72
|
||||||
|
call String.appendChar 2
|
||||||
|
push constant 111
|
||||||
|
call String.appendChar 2
|
||||||
|
push constant 119
|
||||||
|
call String.appendChar 2
|
||||||
|
push constant 32
|
||||||
|
call String.appendChar 2
|
||||||
|
push constant 109
|
||||||
|
call String.appendChar 2
|
||||||
|
push constant 97
|
||||||
|
call String.appendChar 2
|
||||||
|
push constant 110
|
||||||
|
call String.appendChar 2
|
||||||
|
push constant 121
|
||||||
|
call String.appendChar 2
|
||||||
|
push constant 32
|
||||||
|
call String.appendChar 2
|
||||||
|
push constant 110
|
||||||
|
call String.appendChar 2
|
||||||
|
push constant 117
|
||||||
|
call String.appendChar 2
|
||||||
|
push constant 109
|
||||||
|
call String.appendChar 2
|
||||||
|
push constant 98
|
||||||
|
call String.appendChar 2
|
||||||
|
push constant 101
|
||||||
|
call String.appendChar 2
|
||||||
|
push constant 114
|
||||||
|
call String.appendChar 2
|
||||||
|
push constant 115
|
||||||
|
call String.appendChar 2
|
||||||
|
push constant 63
|
||||||
|
call String.appendChar 2
|
||||||
|
push constant 32
|
||||||
|
call String.appendChar 2
|
||||||
|
call Keyboard.readInt 1
|
||||||
|
pop local 1
|
||||||
|
push local 1
|
||||||
|
call Array.new 1
|
||||||
|
pop local 0
|
||||||
|
push constant 0
|
||||||
|
pop local 2
|
||||||
|
label WHILE_EXP0
|
||||||
|
push local 2
|
||||||
|
push local 1
|
||||||
|
lt
|
||||||
|
not
|
||||||
|
if-goto WHILE_END0
|
||||||
|
push local 2
|
||||||
|
push local 0
|
||||||
|
add
|
||||||
|
push constant 16
|
||||||
|
call String.new 1
|
||||||
|
push constant 69
|
||||||
|
call String.appendChar 2
|
||||||
|
push constant 110
|
||||||
|
call String.appendChar 2
|
||||||
|
push constant 116
|
||||||
|
call String.appendChar 2
|
||||||
|
push constant 101
|
||||||
|
call String.appendChar 2
|
||||||
|
push constant 114
|
||||||
|
call String.appendChar 2
|
||||||
|
push constant 32
|
||||||
|
call String.appendChar 2
|
||||||
|
push constant 97
|
||||||
|
call String.appendChar 2
|
||||||
|
push constant 32
|
||||||
|
call String.appendChar 2
|
||||||
|
push constant 110
|
||||||
|
call String.appendChar 2
|
||||||
|
push constant 117
|
||||||
|
call String.appendChar 2
|
||||||
|
push constant 109
|
||||||
|
call String.appendChar 2
|
||||||
|
push constant 98
|
||||||
|
call String.appendChar 2
|
||||||
|
push constant 101
|
||||||
|
call String.appendChar 2
|
||||||
|
push constant 114
|
||||||
|
call String.appendChar 2
|
||||||
|
push constant 58
|
||||||
|
call String.appendChar 2
|
||||||
|
push constant 32
|
||||||
|
call String.appendChar 2
|
||||||
|
call Keyboard.readInt 1
|
||||||
|
pop temp 0
|
||||||
|
pop pointer 1
|
||||||
|
push temp 0
|
||||||
|
pop that 0
|
||||||
|
push local 3
|
||||||
|
push local 2
|
||||||
|
push local 0
|
||||||
|
add
|
||||||
|
pop pointer 1
|
||||||
|
push that 0
|
||||||
|
add
|
||||||
|
pop local 3
|
||||||
|
push local 2
|
||||||
|
push constant 1
|
||||||
|
add
|
||||||
|
pop local 2
|
||||||
|
goto WHILE_EXP0
|
||||||
|
label WHILE_END0
|
||||||
|
push constant 15
|
||||||
|
call String.new 1
|
||||||
|
push constant 84
|
||||||
|
call String.appendChar 2
|
||||||
|
push constant 104
|
||||||
|
call String.appendChar 2
|
||||||
|
push constant 101
|
||||||
|
call String.appendChar 2
|
||||||
|
push constant 32
|
||||||
|
call String.appendChar 2
|
||||||
|
push constant 97
|
||||||
|
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
|
||||||
|
push constant 97
|
||||||
|
call String.appendChar 2
|
||||||
|
push constant 103
|
||||||
|
call String.appendChar 2
|
||||||
|
push constant 101
|
||||||
|
call String.appendChar 2
|
||||||
|
push constant 32
|
||||||
|
call String.appendChar 2
|
||||||
|
push constant 105
|
||||||
|
call String.appendChar 2
|
||||||
|
push constant 115
|
||||||
|
call String.appendChar 2
|
||||||
|
push constant 32
|
||||||
|
call String.appendChar 2
|
||||||
|
call Output.printString 1
|
||||||
|
pop temp 0
|
||||||
|
push local 3
|
||||||
|
push local 1
|
||||||
|
call Math.divide 2
|
||||||
|
call Output.printInt 1
|
||||||
|
pop temp 0
|
||||||
|
push constant 0
|
||||||
|
return
|
|
@ -0,0 +1,116 @@
|
||||||
|
function Fraction.new 0
|
||||||
|
push constant 2
|
||||||
|
call Memory.alloc 1
|
||||||
|
pop pointer 0
|
||||||
|
push argument 0
|
||||||
|
pop this 0
|
||||||
|
push argument 1
|
||||||
|
pop this 1
|
||||||
|
push pointer 0
|
||||||
|
call Fraction.reduce 1
|
||||||
|
pop temp 0
|
||||||
|
push pointer 0
|
||||||
|
return
|
||||||
|
function Fraction.reduce 1
|
||||||
|
push argument 0
|
||||||
|
pop pointer 0
|
||||||
|
push this 0
|
||||||
|
push this 1
|
||||||
|
call Fraction.gcd 2
|
||||||
|
pop local 0
|
||||||
|
push local 0
|
||||||
|
push constant 1
|
||||||
|
gt
|
||||||
|
if-goto IF_TRUE0
|
||||||
|
goto IF_FALSE0
|
||||||
|
label IF_TRUE0
|
||||||
|
push this 0
|
||||||
|
push local 0
|
||||||
|
call Math.divide 2
|
||||||
|
pop this 0
|
||||||
|
push this 1
|
||||||
|
push local 0
|
||||||
|
call Math.divide 2
|
||||||
|
pop this 1
|
||||||
|
label IF_FALSE0
|
||||||
|
push constant 0
|
||||||
|
return
|
||||||
|
function Fraction.getNumerator 0
|
||||||
|
push argument 0
|
||||||
|
pop pointer 0
|
||||||
|
push this 0
|
||||||
|
return
|
||||||
|
function Fraction.getDenominator 0
|
||||||
|
push argument 0
|
||||||
|
pop pointer 0
|
||||||
|
push this 1
|
||||||
|
return
|
||||||
|
function Fraction.plus 1
|
||||||
|
push argument 0
|
||||||
|
pop pointer 0
|
||||||
|
push this 0
|
||||||
|
push argument 1
|
||||||
|
call Fraction.getDenominator 1
|
||||||
|
call Math.multiply 2
|
||||||
|
push argument 1
|
||||||
|
call Fraction.getNumerator 1
|
||||||
|
push this 1
|
||||||
|
call Math.multiply 2
|
||||||
|
add
|
||||||
|
pop local 0
|
||||||
|
push local 0
|
||||||
|
push this 1
|
||||||
|
push argument 1
|
||||||
|
call Fraction.getDenominator 1
|
||||||
|
call Math.multiply 2
|
||||||
|
call Fraction.new 2
|
||||||
|
return
|
||||||
|
function Fraction.dispose 0
|
||||||
|
push argument 0
|
||||||
|
pop pointer 0
|
||||||
|
push pointer 0
|
||||||
|
call Memory.deAlloc 1
|
||||||
|
pop temp 0
|
||||||
|
push constant 0
|
||||||
|
return
|
||||||
|
function Fraction.print 0
|
||||||
|
push argument 0
|
||||||
|
pop pointer 0
|
||||||
|
push this 0
|
||||||
|
call Output.printInt 1
|
||||||
|
pop temp 0
|
||||||
|
push constant 1
|
||||||
|
call String.new 1
|
||||||
|
push constant 47
|
||||||
|
call String.appendChar 2
|
||||||
|
call Output.printString 1
|
||||||
|
pop temp 0
|
||||||
|
push this 1
|
||||||
|
call Output.printInt 1
|
||||||
|
pop temp 0
|
||||||
|
push constant 0
|
||||||
|
return
|
||||||
|
function Fraction.gcd 1
|
||||||
|
label WHILE_EXP0
|
||||||
|
push argument 1
|
||||||
|
push constant 0
|
||||||
|
eq
|
||||||
|
not
|
||||||
|
not
|
||||||
|
if-goto WHILE_END0
|
||||||
|
push argument 0
|
||||||
|
push argument 1
|
||||||
|
push argument 0
|
||||||
|
push argument 1
|
||||||
|
call Math.divide 2
|
||||||
|
call Math.multiply 2
|
||||||
|
sub
|
||||||
|
pop local 0
|
||||||
|
push argument 1
|
||||||
|
pop argument 0
|
||||||
|
push local 0
|
||||||
|
pop argument 1
|
||||||
|
goto WHILE_EXP0
|
||||||
|
label WHILE_END0
|
||||||
|
push argument 0
|
||||||
|
return
|
|
@ -0,0 +1,18 @@
|
||||||
|
function Main.main 3
|
||||||
|
push constant 2
|
||||||
|
push constant 3
|
||||||
|
call Fraction.new 2
|
||||||
|
pop local 0
|
||||||
|
push constant 1
|
||||||
|
push constant 5
|
||||||
|
call Fraction.new 2
|
||||||
|
pop local 1
|
||||||
|
push local 0
|
||||||
|
push local 1
|
||||||
|
call Fraction.plus 2
|
||||||
|
pop local 2
|
||||||
|
push local 2
|
||||||
|
call Fraction.print 1
|
||||||
|
pop temp 0
|
||||||
|
push constant 0
|
||||||
|
return
|
|
@ -0,0 +1,65 @@
|
||||||
|
function List.new 0
|
||||||
|
push constant 2
|
||||||
|
call Memory.alloc 1
|
||||||
|
pop pointer 0
|
||||||
|
push argument 0
|
||||||
|
pop this 0
|
||||||
|
push argument 1
|
||||||
|
pop this 1
|
||||||
|
push pointer 0
|
||||||
|
return
|
||||||
|
function List.getData 0
|
||||||
|
push argument 0
|
||||||
|
pop pointer 0
|
||||||
|
push this 0
|
||||||
|
return
|
||||||
|
function List.getNext 0
|
||||||
|
push argument 0
|
||||||
|
pop pointer 0
|
||||||
|
push this 1
|
||||||
|
return
|
||||||
|
function List.print 1
|
||||||
|
push argument 0
|
||||||
|
pop pointer 0
|
||||||
|
push pointer 0
|
||||||
|
pop local 0
|
||||||
|
label WHILE_EXP0
|
||||||
|
push local 0
|
||||||
|
push constant 0
|
||||||
|
eq
|
||||||
|
not
|
||||||
|
not
|
||||||
|
if-goto WHILE_END0
|
||||||
|
push local 0
|
||||||
|
call List.getData 1
|
||||||
|
call Output.printInt 1
|
||||||
|
pop temp 0
|
||||||
|
push constant 32
|
||||||
|
call Output.printChar 1
|
||||||
|
pop temp 0
|
||||||
|
push local 0
|
||||||
|
call List.getNext 1
|
||||||
|
pop local 0
|
||||||
|
goto WHILE_EXP0
|
||||||
|
label WHILE_END0
|
||||||
|
push constant 0
|
||||||
|
return
|
||||||
|
function List.dispose 0
|
||||||
|
push argument 0
|
||||||
|
pop pointer 0
|
||||||
|
push this 1
|
||||||
|
push constant 0
|
||||||
|
eq
|
||||||
|
not
|
||||||
|
if-goto IF_TRUE0
|
||||||
|
goto IF_FALSE0
|
||||||
|
label IF_TRUE0
|
||||||
|
push this 1
|
||||||
|
call List.dispose 1
|
||||||
|
pop temp 0
|
||||||
|
label IF_FALSE0
|
||||||
|
push pointer 0
|
||||||
|
call Memory.deAlloc 1
|
||||||
|
pop temp 0
|
||||||
|
push constant 0
|
||||||
|
return
|
|
@ -0,0 +1,19 @@
|
||||||
|
function Main.main 1
|
||||||
|
push constant 5
|
||||||
|
push constant 0
|
||||||
|
call List.new 2
|
||||||
|
pop local 0
|
||||||
|
push constant 2
|
||||||
|
push constant 3
|
||||||
|
push local 0
|
||||||
|
call List.new 2
|
||||||
|
call List.new 2
|
||||||
|
pop local 0
|
||||||
|
push local 0
|
||||||
|
call List.print 1
|
||||||
|
pop temp 0
|
||||||
|
push local 0
|
||||||
|
call List.dispose 1
|
||||||
|
pop temp 0
|
||||||
|
push constant 0
|
||||||
|
return
|
|
@ -0,0 +1,11 @@
|
||||||
|
function Main.main 1
|
||||||
|
call SquareGame.new 0
|
||||||
|
pop local 0
|
||||||
|
push local 0
|
||||||
|
call SquareGame.run 1
|
||||||
|
pop temp 0
|
||||||
|
push local 0
|
||||||
|
call SquareGame.dispose 1
|
||||||
|
pop temp 0
|
||||||
|
push constant 0
|
||||||
|
return
|
|
@ -0,0 +1,304 @@
|
||||||
|
function Square.new 0
|
||||||
|
push constant 3
|
||||||
|
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 pointer 0
|
||||||
|
call Square.draw 1
|
||||||
|
pop temp 0
|
||||||
|
push pointer 0
|
||||||
|
return
|
||||||
|
function Square.dispose 0
|
||||||
|
push argument 0
|
||||||
|
pop pointer 0
|
||||||
|
push pointer 0
|
||||||
|
call Memory.deAlloc 1
|
||||||
|
pop temp 0
|
||||||
|
push constant 0
|
||||||
|
return
|
||||||
|
function Square.draw 0
|
||||||
|
push argument 0
|
||||||
|
pop pointer 0
|
||||||
|
push constant 0
|
||||||
|
not
|
||||||
|
call Screen.setColor 1
|
||||||
|
pop temp 0
|
||||||
|
push this 0
|
||||||
|
push this 1
|
||||||
|
push this 0
|
||||||
|
push this 2
|
||||||
|
add
|
||||||
|
push this 1
|
||||||
|
push this 2
|
||||||
|
add
|
||||||
|
call Screen.drawRectangle 4
|
||||||
|
pop temp 0
|
||||||
|
push constant 0
|
||||||
|
return
|
||||||
|
function Square.erase 0
|
||||||
|
push argument 0
|
||||||
|
pop pointer 0
|
||||||
|
push constant 0
|
||||||
|
call Screen.setColor 1
|
||||||
|
pop temp 0
|
||||||
|
push this 0
|
||||||
|
push this 1
|
||||||
|
push this 0
|
||||||
|
push this 2
|
||||||
|
add
|
||||||
|
push this 1
|
||||||
|
push this 2
|
||||||
|
add
|
||||||
|
call Screen.drawRectangle 4
|
||||||
|
pop temp 0
|
||||||
|
push constant 0
|
||||||
|
return
|
||||||
|
function Square.incSize 0
|
||||||
|
push argument 0
|
||||||
|
pop pointer 0
|
||||||
|
push this 1
|
||||||
|
push this 2
|
||||||
|
add
|
||||||
|
push constant 254
|
||||||
|
lt
|
||||||
|
push this 0
|
||||||
|
push this 2
|
||||||
|
add
|
||||||
|
push constant 510
|
||||||
|
lt
|
||||||
|
and
|
||||||
|
if-goto IF_TRUE0
|
||||||
|
goto IF_FALSE0
|
||||||
|
label IF_TRUE0
|
||||||
|
push pointer 0
|
||||||
|
call Square.erase 1
|
||||||
|
pop temp 0
|
||||||
|
push this 2
|
||||||
|
push constant 2
|
||||||
|
add
|
||||||
|
pop this 2
|
||||||
|
push pointer 0
|
||||||
|
call Square.draw 1
|
||||||
|
pop temp 0
|
||||||
|
label IF_FALSE0
|
||||||
|
push constant 0
|
||||||
|
return
|
||||||
|
function Square.decSize 0
|
||||||
|
push argument 0
|
||||||
|
pop pointer 0
|
||||||
|
push this 2
|
||||||
|
push constant 2
|
||||||
|
gt
|
||||||
|
if-goto IF_TRUE0
|
||||||
|
goto IF_FALSE0
|
||||||
|
label IF_TRUE0
|
||||||
|
push pointer 0
|
||||||
|
call Square.erase 1
|
||||||
|
pop temp 0
|
||||||
|
push this 2
|
||||||
|
push constant 2
|
||||||
|
sub
|
||||||
|
pop this 2
|
||||||
|
push pointer 0
|
||||||
|
call Square.draw 1
|
||||||
|
pop temp 0
|
||||||
|
label IF_FALSE0
|
||||||
|
push constant 0
|
||||||
|
return
|
||||||
|
function Square.moveUp 0
|
||||||
|
push argument 0
|
||||||
|
pop pointer 0
|
||||||
|
push this 1
|
||||||
|
push constant 1
|
||||||
|
gt
|
||||||
|
if-goto IF_TRUE0
|
||||||
|
goto IF_FALSE0
|
||||||
|
label IF_TRUE0
|
||||||
|
push constant 0
|
||||||
|
call Screen.setColor 1
|
||||||
|
pop temp 0
|
||||||
|
push this 0
|
||||||
|
push this 1
|
||||||
|
push this 2
|
||||||
|
add
|
||||||
|
push constant 1
|
||||||
|
sub
|
||||||
|
push this 0
|
||||||
|
push this 2
|
||||||
|
add
|
||||||
|
push this 1
|
||||||
|
push this 2
|
||||||
|
add
|
||||||
|
call Screen.drawRectangle 4
|
||||||
|
pop temp 0
|
||||||
|
push this 1
|
||||||
|
push constant 2
|
||||||
|
sub
|
||||||
|
pop this 1
|
||||||
|
push constant 0
|
||||||
|
not
|
||||||
|
call Screen.setColor 1
|
||||||
|
pop temp 0
|
||||||
|
push this 0
|
||||||
|
push this 1
|
||||||
|
push this 0
|
||||||
|
push this 2
|
||||||
|
add
|
||||||
|
push this 1
|
||||||
|
push constant 1
|
||||||
|
add
|
||||||
|
call Screen.drawRectangle 4
|
||||||
|
pop temp 0
|
||||||
|
label IF_FALSE0
|
||||||
|
push constant 0
|
||||||
|
return
|
||||||
|
function Square.moveDown 0
|
||||||
|
push argument 0
|
||||||
|
pop pointer 0
|
||||||
|
push this 1
|
||||||
|
push this 2
|
||||||
|
add
|
||||||
|
push constant 254
|
||||||
|
lt
|
||||||
|
if-goto IF_TRUE0
|
||||||
|
goto IF_FALSE0
|
||||||
|
label IF_TRUE0
|
||||||
|
push constant 0
|
||||||
|
call Screen.setColor 1
|
||||||
|
pop temp 0
|
||||||
|
push this 0
|
||||||
|
push this 1
|
||||||
|
push this 0
|
||||||
|
push this 2
|
||||||
|
add
|
||||||
|
push this 1
|
||||||
|
push constant 1
|
||||||
|
add
|
||||||
|
call Screen.drawRectangle 4
|
||||||
|
pop temp 0
|
||||||
|
push this 1
|
||||||
|
push constant 2
|
||||||
|
add
|
||||||
|
pop this 1
|
||||||
|
push constant 0
|
||||||
|
not
|
||||||
|
call Screen.setColor 1
|
||||||
|
pop temp 0
|
||||||
|
push this 0
|
||||||
|
push this 1
|
||||||
|
push this 2
|
||||||
|
add
|
||||||
|
push constant 1
|
||||||
|
sub
|
||||||
|
push this 0
|
||||||
|
push this 2
|
||||||
|
add
|
||||||
|
push this 1
|
||||||
|
push this 2
|
||||||
|
add
|
||||||
|
call Screen.drawRectangle 4
|
||||||
|
pop temp 0
|
||||||
|
label IF_FALSE0
|
||||||
|
push constant 0
|
||||||
|
return
|
||||||
|
function Square.moveLeft 0
|
||||||
|
push argument 0
|
||||||
|
pop pointer 0
|
||||||
|
push this 0
|
||||||
|
push constant 1
|
||||||
|
gt
|
||||||
|
if-goto IF_TRUE0
|
||||||
|
goto IF_FALSE0
|
||||||
|
label IF_TRUE0
|
||||||
|
push constant 0
|
||||||
|
call Screen.setColor 1
|
||||||
|
pop temp 0
|
||||||
|
push this 0
|
||||||
|
push this 2
|
||||||
|
add
|
||||||
|
push constant 1
|
||||||
|
sub
|
||||||
|
push this 1
|
||||||
|
push this 0
|
||||||
|
push this 2
|
||||||
|
add
|
||||||
|
push this 1
|
||||||
|
push this 2
|
||||||
|
add
|
||||||
|
call Screen.drawRectangle 4
|
||||||
|
pop temp 0
|
||||||
|
push this 0
|
||||||
|
push constant 2
|
||||||
|
sub
|
||||||
|
pop this 0
|
||||||
|
push constant 0
|
||||||
|
not
|
||||||
|
call Screen.setColor 1
|
||||||
|
pop temp 0
|
||||||
|
push this 0
|
||||||
|
push this 1
|
||||||
|
push this 0
|
||||||
|
push constant 1
|
||||||
|
add
|
||||||
|
push this 1
|
||||||
|
push this 2
|
||||||
|
add
|
||||||
|
call Screen.drawRectangle 4
|
||||||
|
pop temp 0
|
||||||
|
label IF_FALSE0
|
||||||
|
push constant 0
|
||||||
|
return
|
||||||
|
function Square.moveRight 0
|
||||||
|
push argument 0
|
||||||
|
pop pointer 0
|
||||||
|
push this 0
|
||||||
|
push this 2
|
||||||
|
add
|
||||||
|
push constant 510
|
||||||
|
lt
|
||||||
|
if-goto IF_TRUE0
|
||||||
|
goto IF_FALSE0
|
||||||
|
label IF_TRUE0
|
||||||
|
push constant 0
|
||||||
|
call Screen.setColor 1
|
||||||
|
pop temp 0
|
||||||
|
push this 0
|
||||||
|
push this 1
|
||||||
|
push this 0
|
||||||
|
push constant 1
|
||||||
|
add
|
||||||
|
push this 1
|
||||||
|
push this 2
|
||||||
|
add
|
||||||
|
call Screen.drawRectangle 4
|
||||||
|
pop temp 0
|
||||||
|
push this 0
|
||||||
|
push constant 2
|
||||||
|
add
|
||||||
|
pop this 0
|
||||||
|
push constant 0
|
||||||
|
not
|
||||||
|
call Screen.setColor 1
|
||||||
|
pop temp 0
|
||||||
|
push this 0
|
||||||
|
push this 2
|
||||||
|
add
|
||||||
|
push constant 1
|
||||||
|
sub
|
||||||
|
push this 1
|
||||||
|
push this 0
|
||||||
|
push this 2
|
||||||
|
add
|
||||||
|
push this 1
|
||||||
|
push this 2
|
||||||
|
add
|
||||||
|
call Screen.drawRectangle 4
|
||||||
|
pop temp 0
|
||||||
|
label IF_FALSE0
|
||||||
|
push constant 0
|
||||||
|
return
|
|
@ -16,7 +16,7 @@
|
||||||
|
|
||||||
class SquareGame {
|
class SquareGame {
|
||||||
field Square square; // the square of this game
|
field Square square; // the square of this game
|
||||||
field int direction; // the square's current direction:
|
field int direction; // the square's current direction:
|
||||||
// 0=none, 1=up, 2=down, 3=left, 4=right
|
// 0=none, 1=up, 2=down, 3=left, 4=right
|
||||||
|
|
||||||
/** Constructs a new Square Game. */
|
/** Constructs a new Square Game. */
|
||||||
|
@ -50,7 +50,7 @@ class SquareGame {
|
||||||
var char key; // the key currently pressed by the user
|
var char key; // the key currently pressed by the user
|
||||||
var boolean exit;
|
var boolean exit;
|
||||||
let exit = false;
|
let exit = false;
|
||||||
|
|
||||||
while (~exit) {
|
while (~exit) {
|
||||||
// waits for a key to be pressed
|
// waits for a key to be pressed
|
||||||
while (key = 0) {
|
while (key = 0) {
|
||||||
|
|
|
@ -0,0 +1,179 @@
|
||||||
|
function SquareGame.new 0
|
||||||
|
push constant 2
|
||||||
|
call Memory.alloc 1
|
||||||
|
pop pointer 0
|
||||||
|
push constant 0
|
||||||
|
push constant 0
|
||||||
|
push constant 30
|
||||||
|
call Square.new 3
|
||||||
|
pop this 0
|
||||||
|
push constant 0
|
||||||
|
pop this 1
|
||||||
|
push pointer 0
|
||||||
|
return
|
||||||
|
function SquareGame.dispose 0
|
||||||
|
push argument 0
|
||||||
|
pop pointer 0
|
||||||
|
push this 0
|
||||||
|
call Square.dispose 1
|
||||||
|
pop temp 0
|
||||||
|
push pointer 0
|
||||||
|
call Memory.deAlloc 1
|
||||||
|
pop temp 0
|
||||||
|
push constant 0
|
||||||
|
return
|
||||||
|
function SquareGame.moveSquare 0
|
||||||
|
push argument 0
|
||||||
|
pop pointer 0
|
||||||
|
push this 1
|
||||||
|
push constant 1
|
||||||
|
eq
|
||||||
|
if-goto IF_TRUE0
|
||||||
|
goto IF_FALSE0
|
||||||
|
label IF_TRUE0
|
||||||
|
push this 0
|
||||||
|
call Square.moveUp 1
|
||||||
|
pop temp 0
|
||||||
|
label IF_FALSE0
|
||||||
|
push this 1
|
||||||
|
push constant 2
|
||||||
|
eq
|
||||||
|
if-goto IF_TRUE1
|
||||||
|
goto IF_FALSE1
|
||||||
|
label IF_TRUE1
|
||||||
|
push this 0
|
||||||
|
call Square.moveDown 1
|
||||||
|
pop temp 0
|
||||||
|
label IF_FALSE1
|
||||||
|
push this 1
|
||||||
|
push constant 3
|
||||||
|
eq
|
||||||
|
if-goto IF_TRUE2
|
||||||
|
goto IF_FALSE2
|
||||||
|
label IF_TRUE2
|
||||||
|
push this 0
|
||||||
|
call Square.moveLeft 1
|
||||||
|
pop temp 0
|
||||||
|
label IF_FALSE2
|
||||||
|
push this 1
|
||||||
|
push constant 4
|
||||||
|
eq
|
||||||
|
if-goto IF_TRUE3
|
||||||
|
goto IF_FALSE3
|
||||||
|
label IF_TRUE3
|
||||||
|
push this 0
|
||||||
|
call Square.moveRight 1
|
||||||
|
pop temp 0
|
||||||
|
label IF_FALSE3
|
||||||
|
push constant 5
|
||||||
|
call Sys.wait 1
|
||||||
|
pop temp 0
|
||||||
|
push constant 0
|
||||||
|
return
|
||||||
|
function SquareGame.run 2
|
||||||
|
push argument 0
|
||||||
|
pop pointer 0
|
||||||
|
push constant 0
|
||||||
|
pop local 1
|
||||||
|
label WHILE_EXP0
|
||||||
|
push local 1
|
||||||
|
not
|
||||||
|
not
|
||||||
|
if-goto WHILE_END0
|
||||||
|
label WHILE_EXP1
|
||||||
|
push local 0
|
||||||
|
push constant 0
|
||||||
|
eq
|
||||||
|
not
|
||||||
|
if-goto WHILE_END1
|
||||||
|
call Keyboard.keyPressed 0
|
||||||
|
pop local 0
|
||||||
|
push pointer 0
|
||||||
|
call SquareGame.moveSquare 1
|
||||||
|
pop temp 0
|
||||||
|
goto WHILE_EXP1
|
||||||
|
label WHILE_END1
|
||||||
|
push local 0
|
||||||
|
push constant 81
|
||||||
|
eq
|
||||||
|
if-goto IF_TRUE0
|
||||||
|
goto IF_FALSE0
|
||||||
|
label IF_TRUE0
|
||||||
|
push constant 0
|
||||||
|
not
|
||||||
|
pop local 1
|
||||||
|
label IF_FALSE0
|
||||||
|
push local 0
|
||||||
|
push constant 90
|
||||||
|
eq
|
||||||
|
if-goto IF_TRUE1
|
||||||
|
goto IF_FALSE1
|
||||||
|
label IF_TRUE1
|
||||||
|
push this 0
|
||||||
|
call Square.decSize 1
|
||||||
|
pop temp 0
|
||||||
|
label IF_FALSE1
|
||||||
|
push local 0
|
||||||
|
push constant 88
|
||||||
|
eq
|
||||||
|
if-goto IF_TRUE2
|
||||||
|
goto IF_FALSE2
|
||||||
|
label IF_TRUE2
|
||||||
|
push this 0
|
||||||
|
call Square.incSize 1
|
||||||
|
pop temp 0
|
||||||
|
label IF_FALSE2
|
||||||
|
push local 0
|
||||||
|
push constant 131
|
||||||
|
eq
|
||||||
|
if-goto IF_TRUE3
|
||||||
|
goto IF_FALSE3
|
||||||
|
label IF_TRUE3
|
||||||
|
push constant 1
|
||||||
|
pop this 1
|
||||||
|
label IF_FALSE3
|
||||||
|
push local 0
|
||||||
|
push constant 133
|
||||||
|
eq
|
||||||
|
if-goto IF_TRUE4
|
||||||
|
goto IF_FALSE4
|
||||||
|
label IF_TRUE4
|
||||||
|
push constant 2
|
||||||
|
pop this 1
|
||||||
|
label IF_FALSE4
|
||||||
|
push local 0
|
||||||
|
push constant 130
|
||||||
|
eq
|
||||||
|
if-goto IF_TRUE5
|
||||||
|
goto IF_FALSE5
|
||||||
|
label IF_TRUE5
|
||||||
|
push constant 3
|
||||||
|
pop this 1
|
||||||
|
label IF_FALSE5
|
||||||
|
push local 0
|
||||||
|
push constant 132
|
||||||
|
eq
|
||||||
|
if-goto IF_TRUE6
|
||||||
|
goto IF_FALSE6
|
||||||
|
label IF_TRUE6
|
||||||
|
push constant 4
|
||||||
|
pop this 1
|
||||||
|
label IF_FALSE6
|
||||||
|
label WHILE_EXP2
|
||||||
|
push local 0
|
||||||
|
push constant 0
|
||||||
|
eq
|
||||||
|
not
|
||||||
|
not
|
||||||
|
if-goto WHILE_END2
|
||||||
|
call Keyboard.keyPressed 0
|
||||||
|
pop local 0
|
||||||
|
push pointer 0
|
||||||
|
call SquareGame.moveSquare 1
|
||||||
|
pop temp 0
|
||||||
|
goto WHILE_EXP2
|
||||||
|
label WHILE_END2
|
||||||
|
goto WHILE_EXP0
|
||||||
|
label WHILE_END0
|
||||||
|
push constant 0
|
||||||
|
return
|
Loading…
Reference in New Issue