gegner zufällig erscheinen lassen

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

sbrog

Betreff: gegner zufällig erscheinen lassen

BeitragMo, Mai 03, 2004 17:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich will so was ähnliches proggen wie space impact.
Wie schaffe ich es,dass in bestimmten zeitabständen von rechts an zufälligen Stellen gegner ins bild fliegen ,und der Zeitabstand sich immer mehr verkleinert ?
 

Ensign Joe

BeitragMo, Mai 03, 2004 17:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
GegnerPosX = Rand(0,Graphicswidth()) oder halt die Breite

Global WarteZeit = 200
Global AltesMillisecs = Millisecs()

if AltesMillisecs + WarteZeit = Millisecs() then
Gegnererscheinen lassen <--
AltesMillisecs = Millisecs()
WarteZeit = WarteZeit -1
end if

Buddha

BeitragMo, Mai 03, 2004 17:11
Antworten mit Zitat
Benutzer-Profile anzeigen
das musst du mit datenfeldern lösen und du vergrößerst mit der zeit die anzahl der gegner in dem feld

also:

dim monster(x,positionx,positiony)


x steht für die anzahl der monster und wenn deine punkte = 1000
dann x +10


Edit: mist ich bin immer ne sekunde zu spät Confused
Bei fragen im GFX bereich jeder zeit an mich Wink
  • Zuletzt bearbeitet von Buddha am Mo, Mai 03, 2004 17:11, insgesamt einmal bearbeitet

sbrog

BeitragMo, Mai 03, 2004 17:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke schonmal , aber mein größtes Problem ist, wie ich mehrere gegner erscheinen lassen soll.Sollte ich types verwanden ?

Hubsi

BeitragMo, Mai 03, 2004 18:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Jupp. Einmal verstanden wirst Du sie lieben Wink
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Markus2

BeitragMo, Mai 03, 2004 18:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja , benutzte Types aber denke dran das du immer eine Collection
pro Type hast .

Und wenn du in einer Schleife (For Each) die Types durch gehst nicht
wieder in dieser eine neue Schleife anfangen mit der gleichen
Variable die du z.B. global gemacht hast .

Beispiel wie man das dann umgeht :

Type mGadget
Field xxx
End Type

Global Gadget.mGadget

Function GadgetHitEvent()
Local GadgetX.mGadget
GadgetX=Gadget
For GadgetX.mGadget =Each mGadget

Gadget ist in dem Fall die gesamte Sammlung (global).
GadgetX ist auch die gesamte Sammlung ,
die man mit For Each druch laufen kann ohne die Pos. von der
anderen zu verändern .
mGadget ist ein Benutzer definierter Type .


Ein gelöschtes Type kann man später mit <>NULL testen
ob es noch da ist .

sbrog

BeitragMo, Mai 03, 2004 19:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Ensign Joe hat Folgendes geschrieben:
Code: [AUSKLAPPEN]
GegnerPosX = Rand(0,Graphicswidth()) oder halt die Breite

Global WarteZeit = 200
Global AltesMillisecs = Millisecs()

if AltesMillisecs + WarteZeit = Millisecs() then
Gegnererscheinen lassen <--
AltesMillisecs = Millisecs()
WarteZeit = WarteZeit -1
end if


dieses Wartezeit=wartezeit-1 bewirkt, dass die gegner in kürzeren abständen kommen ?

Hubsi

BeitragMo, Mai 03, 2004 19:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Prinzipiell ja. Aber nur 1 Millisekunde. Besser wäre hier vielleicht 100 oder so. Hat übrigens einen Bug. DasCode: [AUSKLAPPEN]
AltesMillisecs + WarteZeit = Millisecs()
sollte so aussehen:Code: [AUSKLAPPEN]
Millisecs() > AltesMillisecs + WarteZeit
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

sbrog

BeitragMo, Mai 17, 2004 18:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich hab das jetzt gecodet.
Ziel davon ist es, dass alle 2 Sekeunden ein Rechteck erscheint und nach unten wandert. Die x-position des Rechtecks ist zufällig.

Code: [AUSKLAPPEN]

Graphics 800,600

Type gegner
 Field x
 Field y
End Type


SetBuffer BackBuffer()



Global WarteZeit = 1000
Global AltesMillisecs = MilliSecs()

Repeat

Cls
If AltesMillisecs + WarteZeit = MilliSecs()
   schiff.gegner = New gegner
   schiff\x=100
   schiff\y= 0
   AltesMillisecs = MilliSecs()
EndIf

For schiff.gegner = Each gegner
Rect schiff\x,schiff\y,100,100
schiff\y=schiff\y+1
Next

Flip 

Until KeyHit(1)


leider tut es das nicht,aber ich entdecke keinen Fehler[/code]
 

Edlothiol

BeitragMo, Mai 17, 2004 18:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
If AltesMillisecs + WarteZeit <= MilliSecs()
Beachte das <=. Denn sonst dürfte dein Mainloop höchstens eine Millisekunde dauern, damit du sicher sein kannst dass dieser Punkt genau erreicht wird.

sbrog

BeitragMo, Mai 17, 2004 18:39
Antworten mit Zitat
Benutzer-Profile anzeigen
gut, danke Very Happy

Hubsi

BeitragMo, Mai 17, 2004 18:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Hatte ich zwar schonmal erwähnt, aber ich sags gern nochmal.

Das ist falsch:Code: [AUSKLAPPEN]
If AltesMillisecs + WarteZeit = MilliSecs()
Es ist mehr als unwahrscheinlich das der errechnete Wert genau MilliSecs() entspricht.
Das geht:Code: [AUSKLAPPEN]
If MilliSecs()>AltesMillisecs + WarteZeit
Wink

Edit: Schnelltipper, hä Question Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group