[Monkey] Flip?

Übersicht Andere Programmiersprachen Beginners-Corner

Neue Antwort erstellen

Badudel

Betreff: Flip?

BeitragSa, März 12, 2011 18:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

gerade Monkey entdeckt und mich gefreut, dass die Dokumentation seit BMax noch weiter abgenommen hat (streng genommen gibt es gar keine mehr).
Da es auf der Hauptseite auch keine Quelltexte gibt, poste ich meinen Anfängerfehler mal hier rein:

Code: [AUSKLAPPEN]
Import mojo

Function Main%()
   Cls
   SetColor 255,0,0
   DrawText "HIII",0,0
End Function


Mmh. Funzt nicht. In BMax bräuchte ich hier ein Flip, aber das gibt es scheinbar nicht.
Was fehlt?

Danke für Rückmeldungen!
Wir werden dem Schwein schon schlachten, auch wenn ihm quiekt.
Zum Teufel mit das Grammatik!

Lord Stweccys

BeitragSa, März 12, 2011 18:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Du brauchst etwas, wie:

Code: [AUSKLAPPEN]
Class MyApp extends App
 Function OnCreate()
  SetUpdateRate 60
 End
 Function OnRender()
  SetColor 255,0,0
  DrawText "HIII",0,0
 End
End


Äh.. Es gibt eine Dokumentation und sogar zwei Tutorials ô_O

Badudel

BeitragSa, März 12, 2011 18:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke.

Ich habe jetzt die Dokumentation gefunden, ich hatte nur erwartet, dass sie unter "Nav" rechts angezeigt wird.

Gruß
Wir werden dem Schwein schon schlachten, auch wenn ihm quiekt.
Zum Teufel mit das Grammatik!

Midimaster

BeitragSa, März 12, 2011 20:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier das minimalste Programm, dass man mit Monkey schreiben kann: Das "Hello World":


BlitzMax: [AUSKLAPPEN]
Strict
Import mojo
Class ErstesSpiel Extends App
Method OnCreate% ()
Return 0
End
Method OnUpdate% ()
Return 0
End

Method OnRender% ()
DrawText "Hello World",100,100
Return 0
End
End

Function Main% ()
New ErstesSpiel
Return 0
End

Verwende diese Struktur, um mit einem neuen MONKEY-Programme zu beginnen. Anders als in BlitzMax, sollte bei MONKEY die Main-Schleife nur eine Zeile enthalten, die Dein neues Spiel aktiviert.

Das Spiel selbst ist eine sog. "Klasse", die 3 Methoden kennt:

In die Method OnRender() schreibst Du alles rein, was zum Bildschirmaufbau beiträgt. In unserem Fall hier nur ein DrawText-Befehl. Beachte die Schreibweise DrawText ist nicht das gleiche die drawtext.

Method OnCreate() und Method OnUpdate() benötigen wir erst im nächsten Beispiel:


Variablen definieren und wie man erreicht, dass die Method OnUpdate() ausgeführt wird:
BlitzMax: [AUSKLAPPEN]
Import mojo

Class ErstesSpiel Extends App

Field a%

Method OnCreate ()
SetUpdateRate 60
End

Method OnUpdate ()
a= MouseX()
End

Method OnRender ()
DrawText a,100,100
End
End

Function Main ()
New ErstesSpiel
End


Eine "globale" Variable a% wird als Field a% definiert. Damit ist sie in der gesamten Klasse Deines Spiels erreichbar.

In der Startup-Routine Method OnCreate() wird die Refresh-Rate Deines Spiels auf 60 Refreshes pro Sekunde festgelegt. Das kannst du mit dem CreateTimer() aus dem früheren BlitzBasic vergleichen. In die Method OnCreate() gehört auch das Laden von Bilder, etc. und auch das Vorbelegen der Variablen mit Werten.

In die Method OnUpdate() gehören alle die Dinge, die Du regelmäßig "erneuet haben willst. z.b. Bewegung von Objekten, Abfragen von Tastatur und Maus. Niemals gehören dort Grafikbefehle hinein.

Noobody

BeitragSa, März 12, 2011 21:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Nur als kleinen Tipp: Ihr könnte im Strict-Modus Funktionen auch mit dem Typ :Void kennzeichnen, damit ihr euch bei Funktionen ohne Rückgabewert das Return 0 am Ende sparen könnt.

Hat mit der Fragestellung direkt nichts zu tun, aber das fiel mir nur grade an Midimasters Code auf.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

Midimaster

BeitragSo, März 13, 2011 10:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich hatte irgendwo im engl. Forum gelesen, dass Funktionen mit VOID statt mit einem echten RETURN auf einem Target eine Fehlermeldung hervorriefen. Ich wäre da mal vorsichtig und verwende

BlitzBasic: [AUSKLAPPEN]
Function Main:Int ()
New ErstesSpiel
Return 0
End

Noobody

BeitragSo, März 13, 2011 12:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Main muss natürlich als :Int deklariert werden, aber das steht auch so in der Dokumentation Wink Die meisten anderen Funktionen kann man als :Void deklarieren, wie man lustig ist. Verwendete ich bisher ohne Probleme.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

Neue Antwort erstellen


Übersicht Andere Programmiersprachen Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group