summaryrefslogtreecommitdiff
path: root/tests/examplefiles/example.monkey
blob: facd3a731cf25622eea467e0170c69d3bb6cfbad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
Strict

' single line comment

#rem
multi
line
comment
#end

#rem
nested
#rem
multi
line
#end
comment
#end

Import mojo

Const ONECONST:Int = 1
Const TWOCONST := 2
Const THREECONST := 3, FOURCONST:Int = 4

Global someVariable:Int = 4

' sample class from the documentation
Class Game Extends App

    Function New()
    End

    Function DrawSpiral(clock)
        Local w=DeviceWidth/2
        For Local i#=0 Until w*1.5 Step .2
            Local x#,y#
            x=w+i*Sin(i*3+clock)
            y=w+i*Cos(i*2+clock)
            DrawRect  x,y,1,1
        Next
        hitbox.Collide(event.pos)
    End

    Field updateCount

    Method OnCreate()
        Print "spiral"

        SetUpdateRate 60
    End

    Method OnUpdate()
        updateCount+=1
    End

    Method OnRender()
        Cls
        DrawSpiral updateCount
        DrawSpiral updateCount*1.1
    End

End

Class Enemy
  Method Die () Abstract
End

' extending
Class Hoodlum Extends Enemy
    ' field
    Field testField:Bool = True

    ' naming class with modulepath
    Local currentNode:list.Node<Vector2D>

    Method Die ()
        Print "B'oss, he-- he killed me, b'oss!"
    End
End

' extending with generics
Class VectorNode Extends Node<Vector2D>
End

' interfaces
Interface Computer
  Method Boot ()
  Method Process ()
  Method Display ()
End

Class PC Implements Computer
End

' array syntax
Global listOfStuff:String[42]
Global lessStuff:String[5] = listOfStuff[4..8]
Global oneStuff:String = listOfStuff[23]

'a comma separated sequence
Global scores:Int[]=[10,20,30]
'a comma separated sequence
Global text:String[]=["Hello","There","World"]
Global worstCase:worst.List<String[]>

' string type
Global string1:String = "Hello world"
Global string2$ = "Hello world"

' escape characers in strings
Global string3 := "Hello~zWorld"
Global string4 := "~qHello World~q"
Global string5 := "~tIndented~n"
Global string6 := "tilda is wavey... ~~"

' string pseudofunctions
Print "  Hello World  ~n".Trim()    ' prints "Hello World"
Print "Hello World".ToUpper()       ' prints "HELLO WORLD"

' Boolean shorttype
Global boolVariable1:Bool = True
Global boolVariable2? = False

' number formats
Global hexNum1:Int = $3d0dead
Global hexNum2% = $CAFEBABE

Global floatNum1:Float = 3.141516
Global floatNum2# = 3.141516
Global floatNum3 := .141516

' preprocessor keywords
#If TARGET = "android"
DoStuff()
#ElseIf TARGET = "ios"
DoOtherStuff()
#End

' preprocessor variable
#SOMETHING = True
#Print SOMETHING
#If SOMETHING
#End

' operators
Global a = 32
Global b = 32 ~ 0
b ~= 16
b |= 16
b &= 16
Global c = a | b