Minispiel Tut 4 noops ;)
Übersicht

D²OBetreff: Minispiel Tut 4 noops ;) |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Sodele, das ist mein erstes BB/Max Tut, also seit nicht all zu streng.
Hier wird im grunde ein simpler Moorhuhnclon gemacht. Der Grund? Immer wieder wird gefragt wie ein spiel aufgebaut ist oder wie mach ich ein Menü... daher hab ich mir gedacht, mach einfach ein Simples spiel ohne viel Code das lauffähig ist , ein Menü, eigene Kollisionsabfrage und einen Punkte zähle hat. Es kommen nur Integer(Ganzahlen) Variablen vor, keine Array und Type. Die meisten Tuts, find ich, sind für viele Anfänger zu Kompliziert. Ps: nehmt mir meine rechtschreibfehler nicht so übel ![]() Code: [AUSKLAPPEN] 'Initialisieren des Graphic modus Graphics 800,600,16,60 Rem 1. und 2. Wert: Es wird ein Vollbild erstellt, 800 pixel Breit und 600 Hoch. 3. Wert: Der dritte wert, "16", steht für die Farbtiefe, hier also 16 bit. Man kann auch 32 bit wählen. Nimmt man hier eine "0", läuft das ganze in einem Fenster Modus, die Farbtiefe wird von den Systemeinstellungen übernommen. 4. Wert Hier wird die bildwiederholfrequenz eingestellt. 60 -> 60HZ 75 -> 75HZ .... .. Wird hier nichts eingetragen, läuft das Programm Standartmässig mit 60HZ Trägt man "-1" ein, so ist der VSync ausgeschaltet und das Programm läuft mit vollem Speed ;) EndRem 'Globale Variabelen deklarieren die für die Mouseabfrage 'notwendig sind Global mx:Int,my:Int,mh1:Int 'Variabel zum Spielbeenden Global spielende:Int = 0 'variable für die punkteanzeige Global point:Int = 0 ' Variablen für die grafiken Global Hintergrund:TImage Global Gegner:TImage 'Grafiken laden hintergrund = LoadImage("star1.jpg") gegner = LoadImage("gegner.png") 'Variablen für den Gegner, damit er sich bewegen kann,Startposition '10,10. Global gegnerx:Int = 10, gegnery:Int = 10 Global bewegungy:Int = 2, bewegungx:Int = 3 'Hier wird erstmal das Menü aufgerufen 'die Menüfunktion ist unter der Hauptschleife deklariert spielende = f_menu() 'die Hauptschleife, 'sie läuft solange bis "spielende" einen Wert > 0 hat While Not spielende 'mh1, mx und my = Mousekoordinaten 'zuweisen mx = MouseX() my = MouseY() mh1 = MouseHit(1) 'Berechnungen 'bewegung des gegners erstellen 'es ist eine einfache bewegung von links 'nach rechts, 'oben nach unten und zurück If gegnerx > 768 Then bewegungx = -3 If gegnerx < 0 Then bewegungx = 3 If gegnery > 568 Then bewegungy = -2 If gegnery < 0 Then bewegungy = 2 gegnerx = gegnerx + bewegungx gegnery = gegnery + bewegungy Rem Mouse/Gegner koordinaten abfrage und treffer abfrage EndRem If mh1 If mx > gegnerx And mx < gegnerx + 32.. And my > gegnery And my < gegnery + 32 point = point + 1 EndIf EndIf 'Bildschirm ausgabe 'das hintergrundbild zeichnen DrawImage hintergrund,0,0 'den Gegener zeichnen DrawImage gegner,gegnerx,gegnery 'beschreibung wie man ins Menü gelangt DrawText "Space Druecken um das Menue aufzurufen",10,10 'punkteanzeige DrawText point+" Punkte",600,10 'wenn Space gedrückt wird, öffnet sich das Menü If KeyHit(key_space) spielende = f_menu()'f_menu hat einen Rückgabewert der 'an spielend übergeben wird EndIf Flip'bildschirm Buffer flipen/wechsel 'Standart mässig wird in den backbuffer gezeichnet Cls 'Löscht den Aktuellen Backbuffer Wend End 'Funktions deklaration Function f_menu:Int() 'locale variablen erzeugen, sind nur in der Funktion gültig Local muenuend:Int = 0 Local output:Int = 0 Rem Löscht den tastatur speicher, das ist wichtig damit vorher gedrückte Tastatur ereigenise sich nicht auf das menü auswirken EndRem FlushKeys() SetClsColor 10,200,10 'Menü hintergrundfarbe auf Grün umstellen While Not menuend If KeyHit(key_escape) output = 1 menuend = 1 EndIf If KeyHit(key_space) Then menuend = 1 DrawText "Menue",200,200 DrawText "Escape beendet das Programm",200,250 DrawText "Space beendet das Meneu",200,300 Flip Cls Wend FlushKeys() SetClsColor 0,0,0 'schwarze hintergrund Return output 'hier wird ein wert nach "aussen" zurückgegeben End Function star1.jpg ![]() gegner.png ![]() ![]() |
||
Blitz+; Blitz3d; BlitzMax; GLBasic; Purebasic;
GameMaker Studio 1.4xx; AGK; |
![]() |
DivineDominion |
![]() Antworten mit Zitat ![]() |
---|---|---|
Persönlich fänd ichs schön, wenn du den Code konsequent richtig einrücken würdest ![]() |
||
christian.tietze@gmail.com - https://christiantietze.de
macOS |
D²O |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ist zwar schon wieder ne weiler her, aber Danke ![]() Ich finde es sollten mehr solcher "kleinen" tuts her und nicht immer so Monstermässig auf geblähte ![]() So al'a Figur hupfen lassen, Schräge laufen lassen, ... .. Vieleicht, wenn ich wieder mehr zeit habe beschäftige ich mehr damit. |
||
Blitz+; Blitz3d; BlitzMax; GLBasic; Purebasic;
GameMaker Studio 1.4xx; AGK; |
![]() |
SonGoku |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab da was nicht verstanden :
Wofür sind die Variablen "minuend" und "output" da ? |
||
Projekt "BlitzPong" --> 100%
BRL Account mit Blitz3D und BlitzMax für nur 67€!!! Das Buch "Spiele programmieren mit Blitz Basic" für nur 15€!!! |
D²O |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Mit der Lokalen Variable Menuend wird die While schleife im menü gesteuert.
So lange Sie "0" ist läuft die schleife weiter mit dem wert "1" wird sie beendet. Wenn Du nun aber die ESC Taste im menü drückst wird menuend und output eine "1" zugewiesen. Jetzt passiert folgendes, da menuend nun 1 ist wird das menü beendet, output hat aber nun auch denn wert 1 zugewiesen bekommen. Da die Funktion einen wert, den von output, zurück gibt kann nun die variable "spielende" in der Hauptschleife diesen wert übernehmen. Solange der wert für spielend nicht "1" ist, läuft die schleife weiter, da sie nun aber den wert von output aus der funktion bekommt, der ja jetzt "1" ist, wird die auch die ganze Hauptschleife beendet und das programm wird geschlossen. |
||
Blitz+; Blitz3d; BlitzMax; GLBasic; Purebasic;
GameMaker Studio 1.4xx; AGK; |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group