Monkey is a programming language created in 2011 by Anthony Diamond.
#623on PLDB | 13Years Old | 254Repos |
git clone https://github.com/Regal-Internet-Brothers/webcc-monkey
Monkey X is a high-level programming language designed for video game development for many different platforms, including desktop and laptop computers, mobile phones, tablets, and video game consoles. The language itself is an object-oriented dialect of BASIC, which the compiler translates into native source code for several target platforms. The resulting code is then compiled normally. Read more on Wikipedia...
puts("Hello World")
'Showcases use of Lambda functions and Generics.
#Import "<std>"
Using std..
Function Main()
Local testStack := New Stack< MyObject >
For Local n := 1 To 20
Local newItem := New MyObject
newItem.depth = Rnd( 0, 100 )
testStack.Push( newItem )
Next
testStack.Sort( Lambda:Int( x:MyObject,y:MyObject )
Return x.depth<=>y.depth
End )
For Local n := Eachin testStack
Print( n.depth )
Next
End
Struct MyObject
Field depth := 0
End
' The 'Player' class, as referenced previously (Placement does not matter):
Class Player
' Declare all of our fields (Class-local variables):
' These two variables will act as our position on the screen.
' (Alternatively, an 'Array or third-party class could be used)
Field x:Float, y:Float
' This will be a reference to an 'Image' object we'll specify.
Field image:Image
' Constructor(s):
' Overloading 'New' mainly works the same way as constructors in other languages.
' Returning is generally not recommended for constructors.
Method New(img:Image, x:Float=100, y:Float=100)
' Due to the arguments using the same names, 'Self'
' is required to resolve our fields' names:
Self.image = img
Self.x = x
Self.y = y
End
' Methods:
' This will be our main render-method for this object:
Method Draw:Void()
' Draw the 'image' object to the screen using our 'x' and 'y' fields.
DrawImage(image, x, y)
' Returning in a 'Void' function is not required. (Some still recommend it)
Return
End
End
Feature | Supported | Example | Token |
---|---|---|---|
MultiLine Comments | ✓ | ||
Binary Literals | ✓ | ' \%[10]+ | |
Integers | ✓ | ' [0-9]+ | |
Floats | ✓ | ' [0-9]+\.[0-9]*(?!\.) | |
Hexadecimals | ✓ | ' \$[0-9a-fA-Z]+ | |
Strings | ✓ | "Hello world" | " |
Print() Debugging | ✓ | puts | |
Comments | ✓ | ' A comment | |
Line Comments | ✓ | ' A comment | ' |
Semantic Indentation | X |