Schüsse mit einem DIM(Array) erstellen

Previous topic - Next topic

Schranz0r

Hier der Code, wenns noch Fragen gibt, nicht zögern! :

Code (glbasic) Select
// --------------------------------- //
// Project: Dim Shots Tutorial
// Start: Tuesday, July 10, 2007
// IDE Version: 4.237

SYSTEMPOINTER TRUE // System-Mauszeiger im Spiel verwenden !

// X und Y sind NULL, da nicht Deklariert!
// Es dient rein fürs verständnis!
DIM shotX[X]
DIM shotY[Y]



WHILE TRUE
LOCAL mx,my,b1,b2
MOUSESTATE mx,my,b1,b2 // mousekoordinaten abfragen

//---------------------------------------------------------------
// Schüsse erstellen ...........................................
//---------------------------------------------------------------
IF b1 AND Timer < GETTIMERALL() // wenn linke-Maustaste gedrückt, und Timer kleiner Gesammttimer ist
INC Schuss,1 // die Variable um die Schüsse zu Zählen

REDIM shotX[Schuss] // \
// > erhöht die DIM's um die Anzahl der Schüsse
REDIM shotY[Schuss] // /

// Dem shot die aktuelle Mausposition übergeben
shotX[Schuss-1] = mx // Schuss-1 da es beim aufrufen von DIM ab 0 gezählt wird ( 0 - 9 = 10 Felder!)
shotY[Schuss-1] = my

Timer = GETTIMERALL()+200 // Timer auf 200 ms mehr setzen als der Gesammttimer
ENDIF

//---------------------------------------------------------------
// Schüsse anzeigen, und auf Position prüfen, oder löschen......
//---------------------------------------------------------------
// alle Schüsse Abfragen!
FOR num = 0 TO BOUNDS(shotX[],0)-1  // für BOUNDS(shotX[],0)-1 würde auch BOUNDS(shotX[],0)-1  gehen
// da die Arrays immer die gleiche größe haben.

DEC shotY[num],1 // Schuss pro durchlauf eins nach oben setzen

PRINT "|", shotX[num], shotY[num] // Gib einen Schuss auf den gespeicherten Koordinaten wieder


IF shotY[num] < 0 // Wenn der schuss den oberen Rand erreicht
DIMDEL shotX[], num // Lösche den X-Eintrag
DIMDEL shotY[], num // Lösche den Y-Eintrag
DEC Schuss,1 // Setze die Schussanzahl nach unten
ENDIF

NEXT


PRINT Schuss, 10, 10  // Anzeige, wieviele Schüsse unterwegs sind ;)

SHOWSCREEN
WEND
END
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

Shogun

Hallo Schranzor, habe mir dein Beispiel mal angeschaut. Ich wollte statt der Maus eine Taste nutzen und die Grafik des Schusses ändern, komme aber nicht wirklich weiter.
Ob du mir nochmal ein bischen helfen kannst? Ich habe noch viel zu wenig Erfahrung um es wirklich zu verstehen. Meine nächsten Ziele sind wie oben beschrieben Schüsse und Lebenspunkte einer Einheit zum Beispiel.

Schranz0r

Hi Shogun.

Wenn du fragen hast, hier meine ICQ: 286862111

Melde dich einfach bin noch etwas online!

Grüße
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

jasper111

Hallo,

wie sieht es mit Type aus. Kann ich mit den auch wie in BB arbeiten?

Gruß Jasper111
Rechtschreibfehler sind pure Absicht und dienen der allgemeinen Belustigung.
_____________________________________________________________

Schranz0r

Hi, klar kannste das.
Nur musst du einiges anders machen, und die Types in GLBasic sind 100x schneller als die in BB ;)

siehe da:
http://www.glbasic.com/forum/viewtopic.php?id=790
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

jasper111

Hi,

sieht aber irgendwie  schwieriger aus, mag aber auch daran liegen das ich mit mühe Type in BB verstanden habe.

Gibt es ein ausführliches Tut für den Type in GLBasic ?

Gruß Jasper
Rechtschreibfehler sind pure Absicht und dienen der allgemeinen Belustigung.
_____________________________________________________________

Schranz0r

Nein.

Types kannst du dir so vorstellen:

Beim Arzt gibt es ein Formular, das man immer aussenfüllen muss wenn man das erste mal bei ihm ist, ich nenne es jetzt mal Standartformular, in GLBasic ist es so, dass das Standartformular die Decleration des Types und der Felder ist.

TYPE Patient
    Name$
    Alter
    Geburtsjahr
ENDTYPE

Jetzt brauch der Arzt aber noch einen Ordner, wo er die Standartformulare ablegen kann, die schon ausgefüllt worden sind.
(Ordner ist hier ein offenes Array)

LOCAL Patienten[] AS Patient

So, nun kommt ein Patient zum ersten mal zum Arzt, und die Nette Artzhelferen(mit ordentlich Holz vor der hütt'n) fragt den Patienten:
Waren sie den schonmal hier
NEIN, natürlich nicht, und deshalb muss man das Formular ausfüllen!

Da der Arzt alles schön sortiert haben will geht er nach Krankenkassen:

LOCAL AOK AS Patient
AOK.Name$ = "Max Musterman"
AOK.Alter = 30
AOK.Geburtsjahr = 1977
DIMPUSH Patienten[], AOK  // Fügt das Formular in den Ordner ein

So jetzt will der Arzt natürlich mal alle Durchgehen, um was zu Prüfen:

LOCAL Anzahl
FOREACH Check IN Patienten[]
     IF Check.Alter = 30
          INC Anzahl,1
     ENDIF
     PRINT "Es gibt "+Anzahl+" Patienten die 30 Jahre alt sind",10,10
NEXT


Also nochmal zusammengefast:

Alles bis auf die FOREACH-Schleife kommt vor der Hauptschleife, die FOREACH kommt in die Hauptschleife rein!
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

jasper111

Hallo und danke für die schnelle Antwort.

gefält mir gut die erklärung(Holz vor der Hütte(haste auch Bilder :)  ))

Werde direkt mal probiern ob ich es begriffen habe.

Danke und Gruß Jasper
Rechtschreibfehler sind pure Absicht und dienen der allgemeinen Belustigung.
_____________________________________________________________

Schranz0r

Bilder von ihr gibts auf einschlägigen Seiten, die ich hier nich namentlich nennen will :D

Und nochmal.... kein Problem, wir Helfen gerne ;)
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

Kitty Hello


für den anschaulichsten Vergleich von Holz + Types.

Schranz0r

WOHOOOOOOOOOOOOOO :D

Das Bundes-Verdienst-Kreuz......
*Niederknie und entgegennimm" :)
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard