Minispiel Tut 4 noops ;)

Übersicht BlitzMax, BlitzMax NG FAQs und Tutorials

Neue Antwort erstellen

 

D²O

Betreff: Minispiel Tut 4 noops ;)

BeitragSa, Jan 15, 2005 16:15
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Wink

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
user posted image

gegner.png Wink
user posted image
Blitz+; Blitz3d; BlitzMax; GLBasic; Purebasic;
GameMaker Studio 1.4xx; AGK;

DivineDominion

BeitragSo, Feb 27, 2005 18:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Persönlich fänd ichs schön, wenn du den Code konsequent richtig einrücken würdest Smile Ansonsten siehts ja ganz fein aus
christian.tietze@gmail.com - https://christiantietze.de
macOS
 

D²O

BeitragSo, Feb 27, 2005 20:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist zwar schon wieder ne weiler her, aber Danke Smile

Ich finde es sollten mehr solcher "kleinen" tuts her und nicht immer so Monstermässig auf geblähte Wink

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

BeitragDo, März 03, 2005 19:13
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, März 04, 2005 15:27
Antworten mit Zitat
Benutzer-Profile anzeigen
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;

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG FAQs und Tutorials

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group