Bin ich blöd? O_o

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Ninja

Betreff: Bin ich blöd? O_o

BeitragSo, Sep 12, 2004 15:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich kann schon seit ner weile programmieren (Blitzbasic & 3D) und ich wusste nicht wie man mehrere gegner macht die alle das selbe machen. dan hab ich mir mal irgendwo folgendes abgeguckt,
also so etwa sieht das aus:

Dim gegner(9999,2)

Hauptschleife

for I = 1 to anzahl
if gegner(I,1) = 0 then
gegner(I,1) = gegnerX
gegner(I,2) = gegnerY
endif

;hier komm was der gegner machen soll, also laufen usw
next

....und zu dem dim gegner(9999,2) ich mach immer 9999 weil ich noch nicht weis wiviele gegner ich insgesam haben will (macht das was?)


tja, ich versteh die ganze for schleife (besonders das if gegner(I,1) = 0 )nicht aber bis jetzt hat das immer so geklakpt O_o. die ganze DIM sache versteh ich nicht richtig. ich verwende dims eigentlich immer nur in dem oben genannten beipiel.
kann mir das mal jemand erklären wieso das so ist, und überhaupt Rolling Eyes ???

hoffentlich habt ihr verstanden Very Happy

simi

BeitragSo, Sep 12, 2004 15:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

also zuerst ist da eine For-Schleife, die bei allen Gegner schaut, ober nicht mehr existiert (if gegner(i,0)=0 then).
Wenn das der Fall ist, wird ein ein Gegner erstellt. Zuerst wird gesagt, das dieser Gegner wieder existiert(gegner(i,0)=1) dann wird die X und Y Position dieser Gegner gesetzt...

Wenn du jetzt einen Gegner ins Jenseits beförderst, wird gegner(i,0) wieder auf 0 gesezt, das der PC weiss, das er nun wieder einen neuen Gegner erstellen muss...

Ich hoffe du checkst, was ich meine...


cu simi
 

Dreamora

BeitragSo, Sep 12, 2004 15:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Jopp haben wir verstanden.
Du solltest dringend nochma in die Hilfe und totallen Anfängertutorials schauen, wenn dir das verständnis für Schleifen als auch Arrays fehlen.

Solange das Verständnis nicht da ist, empfehle ich dir, dich von jeglichem anderen fern zu halten, da sie zusammen mit IF die elementarsten Dinge von programmieren darstellen.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Holzchopf

Meisterpacker

BeitragSo, Sep 12, 2004 15:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Dims sind indizierte Variablen.
Mit Code: [AUSKLAPPEN]
Dim test(9)
würdest du die Variable test erstellen (dimensionieren), welche dann einen Index erhält. Dieser Index kann 10 Werte annhemen (0 bis 9), also die Menge, die du in der Klammer angibst + 1.
MitCode: [AUSKLAPPEN]
Dim gegner(9999,2)
erstellst du ein zweidimensionales Dim-Feld. Die erste Dimension oder auch der Index ist hier 10000Felder gross. Da du ein zweidimensionales Dim-Feld erstellst, hat jedes dieser 10000Felder noch drei weitere Indizen (zB: gegner(10,0) & gegner(10,1) & gegner(10,2) )

In deinem konkreten Fall bedeutet das, dass du 10000 Gegner erstellen kannst, alle diese Gegner haben 3 Parameter. Du brauchst hier aber offenbar nur die Parameter 1 und 2, für X- und Y-Position.

Das mit dem If gegner(I,1) = 0 ist, vermute ich mal, dazu da, dass die Gegner, deren X-Position 0 ist, also links am Rande, neu positioniert werden (Code: [AUSKLAPPEN]

gegner(I,1) = gegnerX
gegner(I,2) = gegnerY
)

Was für Werte haben eigentlich gegnerX und gegnerY ? (Ist ja die Position, an dem ein "neuer" Gegner erstellt wird. )

Ausserdem, da du ja nicht weisst, wieviele Gegner du brauchst, sind eher Types zu empfehlen, die benötigen nämlich nur soviel Speicher wie nötig, mit Dim hingegen reservierst du den maximalen zu benötigen Speicher (hier 10000 * 3 Einträge = 30000 à 4 Bytes (da du gegner als Integer dimensionierst, Ints benötigen 4 Bytes), das sind dann immerhin 12000Bytes, also rund 117,2kB (nagut, zugegeben, es gibt schlimmere Fehler).

Alles über types erfährst du auf:
www.blitzbase.de
www.robsite.de (das Type-Tutorial)
und die Forumsuche wird dir auch nen Hauffen dazu ausspucken.

MfG
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

Jolinah

BeitragSo, Sep 12, 2004 16:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Für solche dynamischen Sachen kann ich wie immer nur Types vorschlagen Wink

Ist doch sinnlos so viel Speicher zu reservieren wenn man nichtmal weiss ob man ihn dann voll ausnutzt. Ich vermute in diesem Fall ist 10000 Gegner viel zu viel. Wenn dann würde ich erstmal 100 - 200 machen oder so.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group