gegner zufällig erscheinen lassen
Übersicht

![]() |
sbrogBetreff: gegner zufällig erscheinen lassen |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() |
||
Bei fragen im GFX bereich jeder zeit an mich ![]() |
- Zuletzt bearbeitet von Buddha am Mo, Mai 03, 2004 17:11, insgesamt einmal bearbeitet
![]() |
sbrog |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke schonmal , aber mein größtes Problem ist, wie ich mehrere gegner erscheinen lassen soll.Sollte ich types verwanden ? | ||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jupp. Einmal verstanden wirst Du sie lieben ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
gut, danke ![]() |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() Edit: Schnelltipper, hä ![]() ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group