Probleme beim Frosch-Frisst-Fliege-Spiel
Übersicht

1989Moni1989Betreff: Probleme beim Frosch-Frisst-Fliege-Spiel |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Jetzt arbeite ich gerade an einem Frosch-frisst-Fliege-Spiel. Also unten der Frosch, oben die Fliege (oder in meinem Fall Schmetterling) und er schießt etwas in die Höhe und wenn er die Fliege getroffen hat, dann bekommt man einen Punkt. Perfekt, geht alles soweit. 1. Problem: Nur ist die Fliege so eingestellt, dass sie von den Begrenzungen Abprallt und das tut sie auch, aber nicht immer. Auf den Seiten klappt alles, weil da ich nur programmiert hab, dass sie nicht weiter hinaus darf. Aber oben hab ich die Begrenzung mit einem Bild gemacht. Und manchmal fliegt die fliege einfach durch und manchmal prallt sie richtig ab, was könnte da nicht stimmen? 2. Problem: Ich hab versucht die Zeit auf eine Minute einzustellen und in der Hauptschleife mit delay gearbeitet, sodass die Zeit immer um eine Sekunde weniger wird. Aber bei delay wartet der Computer ja immer diese Sekunde, erst dann macht er auch mit dem übrigen weiter. Also das kann man nicht verwenden. Wie könnte man sonst einen Countdown erstellen? Er sollte im oberen rechten Eck angebracht sein. Lg Moni So, hier ist noch der Code: Code: [AUSKLAPPEN] Graphics 1024, 768, 16, 1 SetBuffer BackBuffer() ;Globale Daten SeedRnd(MilliSecs()) Global time = 61 Global punkte = 0 Global yfrog = 768 - 84 Global xfrog = 1024/2 Global xschme = Rand(0, 1024) Global yschme = Rand(0, 600) Global winkel Global yzunge = 680 Global abweichung Global schmetterlinge = 0 Global Frosch = LoadImage("images\Frosch.bmp") MidHandle Frosch Global Schmetterling = LoadImage("images\Schmetterlinge.bmp") MidHandle Schmetterling MaskImage Schmetterling, 255, 255, 255 Global Zunge = LoadImage("images\Zunge.bmp") MaskImage Zunge, 255, 255, 255 Global Wando = LoadImage("images\oben.bmp") MidHandle Wando Global Wandu = LoadImage("images\unten.bmp") MidHandle Wandu Flip neuerschmetterling ;Hauptschleife Repeat Cls If KeyHit(57) Then yzunge = 680 EndIf If KeyDown(57) Then DrawImage Zunge, xfrog, yzunge yzunge = yzunge - 5 EndIf DrawBlock Frosch, xfrog, yfrog DrawImage Wando, 512, 23 DrawImage Wandu, 512, 745 If KeyDown(203) Then xfrog = xfrog - 2 If KeyDown(205) Then xfrog = xfrog + 2 xschme = xschme + Cos(winkel)*5 yschme = yschme - Sin(winkel)*5 If xschme < 30 Then winkel = 180 - winkel EndIf If xschme > 1024 - 30 Then winkel = 180 - winkel EndIf If ImagesCollide(Wando, 512, 23, 0, Schmetterling, xschme, yschme, 0) Then winkel = 360 - winkel abweichung = 2 * (0 - xschme) winkel = winkel + abweichung EndIf If yschme > 500 Then winkel = 360 - winkel EndIf If KeyHit(157) Then neuerschmetterling EndIf If winkel > 360 Then winkel = winkel - 360 If winkel < 0 Then winkel = winkel + 360 DrawImage Schmetterling, xschme, yschme If ImagesCollide(Schmetterling, xschme, yschme, 0, Zunge, xfrog, yzunge, 0) Then punkte = punkte + 1 Delay(1000) WaitKey neuerschmetterling EndIf Color 0, 0, 0 Text 30, 742, (punkte + " Punkte!") Flip Forever ;Ende des Spiels Color 0, 0, 0 Print "Sorry, die Zeit ist um! Du hast " + punkte + " Punkt(e)!" Delay (2000) WaitKey End ; Funktionen Function neuerschmetterling() xschme=1024/2:yschme=768/2 If Rand(0,1) = 1 Then winkel = Rand(105,45) Else winkel = Rand(315, 255) End Function |
||
![]() |
Goodjee |
![]() Antworten mit Zitat ![]() |
---|---|---|
statt delay benutze einen milisecs timer | ||
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/ |
1989Moni1989 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Goodjee hat Folgendes geschrieben: statt delay benutze einen milisecs timer
Wie mach ich denn einen Milisecs timer??? |
||
![]() |
Goodjee |
![]() Antworten mit Zitat ![]() |
---|---|---|
benutze mal die suche, aber so ungefähr funzts: einmal die zeit mit milisecs nehmen, dann jedes mal testen ob die jetzige zeit z.B 100 mehr ist als die erste...wenn ja diese zeit wieder speichern | ||
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/ |
1989Moni1989 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Goodjee hat Folgendes geschrieben: benutze mal die suche, aber so ungefähr funzts: einmal die zeit mit milisecs nehmen, dann jedes mal testen ob die jetzige zeit z.B 100 mehr ist als die erste...wenn ja diese zeit wieder speichern
Danke, ich werds gleich mal probieren!!!!!! ![]() |
||
![]() |
KabelbinderSieger des WM-Contest 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi
Wegen dem 'durchdasbildfliegen' Wenn ein Objekt zu schnell (und/oder zu klein) ist, kann es sein, dass es durch ein ganzes Hindernis hindurch fliegt. In Diesem Fall berührt es das Hindernis auch überhaupt nicht und so wird keine Kollision festgestellt. Da kann man sich mit einer Line-Kollision helfen: Du überprüfst statt dem Punkt , an dem die Fliege gerade ist allein, eine ganze Linie zwischen dem Punkt, an dem die Fliege zuvor war und dem Punkt, an dem sie jetzt ist. Wenn diese Line durch die Wand geht, gab es eine Kollision. Kannst du damit was anfangen? Wenn du es gern einfacher hättest, kannst du auch einfach die Wand oder die Fliege dicker zeichnen, oder die Fliege verlangsamen. Dann müsste es auch gehen... |
||
<Wing Avenger Download> ◊◊◊ <Macrophage Download> |
![]() |
x-pressive |
![]() Antworten mit Zitat ![]() |
---|---|---|
Iwo, das geht auch viel simpler (wenn deine "Bregrenzungen" quasi rechteckig sind und z.B. den Bildschirmrand markieren). Um abzufragen, ob die Fliege den oberen Rand überschritten hat (ganz egal, wie schnell sie ist), musst du nur ihre Geschwindigkeit mit einbeziehen, z.B. so:
Code: [AUSKLAPPEN] Global flySpeedY# = 5.0 ; Y-Geschwindigkeit der Fliege
Global flyY% ; Aktuelle Y-Position der Fliege Global flyMinY% ; Oberer Rand, an dem die Fliege umkehren soll Abfrage (vereinfacht): Code: [AUSKLAPPEN] ; Fliege hat den Rand überschritten?
If (flyY- flySpeed) < flyMinY Then flyY = flyMinY : flySpeed = flySpeed * (-1) |
||
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group