Ziel verlangsamen
Übersicht

BudikotchBetreff: Ziel verlangsamen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hey Leute.
Vielleicht ist die Überschrift nicht ganz so passend,aber momentan wollt ich mal die Mausabfrage testen und dazu wollte ich ein kleines Klick-Spiel coden.Nun hab ich das Problem,dass das "Ziel" viel zu schnell ist um es zu erwischen. Ich denke das man da MilliSecs() braucht,doch wie sollte ich es einsetzen ? Der Code BlitzBasic: [AUSKLAPPEN] Graphics 800,600,16,2 |
||
![]() |
Thunder |
![]() Antworten mit Zitat ![]() |
---|---|---|
- Gib dem Ziel Positionsvariablen (z.B. ziel_x und ziel_y).
- Mit Millisecs ist es sicherlich möglich. Das ginge dann so: Setze für ziel_x und ziel_y zufällige Werte, speichere dann die aktuelle Zeit in eine Variable (z.B. letztezeit). Ab jetzt ändere ziel_x und ziel_y nur, wenn zwischen Millisecs() und letztezeit ein Unterschied von z.B. 1000 ist. Dann würde das Ziel jede Sekunde wechseln. BlitzBasic: [AUSKLAPPEN] If MilliSecs()>letztezeit+1000 Then Du musst dann natürlich das Bild auch an den Positionen ziel_x und ziel_y zeichnen. mfg Thunder |
||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
Budikotch |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das Ziel ist deutlich langsamer geworden ![]() Die Punkte werden weiterhin rasend schnell abgezogen ohne das ich was machen kann. |
||
![]() |
Thunder |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das hab ich ganz übersehen. Du hast da einen falschen Parameter bei MouseDown![]() MouseDown prüft nur, ob eine Maustaste gedrückt wurde. Um zu prüfen ob die Maus im Ziel ist, verwende MouseX ![]() ![]() mfg Thunder |
||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
![]() |
M2M |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also,
Code: [AUSKLAPPEN] If MouseX() > ziel_x And MouseX() < ziel_x + ImageWidth(Ziel) And MouseY() > ziel_y And MouseY() < ziel_y + ImageHeight(Ziel)
If MouseDown(1) ;ziel getroffen EndIf EndIf Die Abfragen überprüfen ob MouseX() (x-Koordinate der Maus) größer als ziel_x (x-Koordinate des Ziels) Und MouseX() kleiner als ziel_x + die Breite (Width) des Bildes (Image) Ziel ist. Also falls dein Bild aktuell an x-Position 32 gezeichnet wird, dann befindet sich der linke Rand des Bildes eben an Position 32 und der rechte Rand eben x-Pixel weiter rechts, wobei x die Breite (ImageWidth) des Bildes Ziel ist. Anschließend wird das selbe Spiel für die y-Koordinate der Maus geprüft. .. Und MouseY() (y-Koordinate der Maus) ist größer als ziel_y (y-Koordinate des Ziels) Und MouseY() ist kleiner als ziel_y + die Höhe des Bildes Ziel (ImageHeight) Falls alle 4 Bedingungen zutreffen (Pflicht, da sie mit Und miteinerander verknüpft wurden!), wird der nachfolgende Code ausgeführt. In diesem Fall: If MouseDown(1) MouseDown prüft ob eine Maustaste gedrückt wird (also auch über einen längeren Zeitraum). Dabei sind folgende Tasten prüfbar: MouseDown(1) - linke Maustaste gedrückt MouseDown(2) - rechte Maustaste gedrückt MouseDown(3) - mittlere Maustaste gedrückt Es wird also geprüft, ob die linke Maustaste gedrückt wird. Falls diese Bedingung eintritt, gilt das Ziel als getroffen. |
||
Budikotch |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich habe mal Mousdown(1) umgetauscht zu MouseHit(1) weil sonst bekommt man zuviele Punkte wenn man mit der Maus auf dem Ziel bleibt.
Aber leider ist das so,dass man wenn man öfter auf das Ziel klickt auch die Punkte dafür bekommt. Es soll aber nur 1 Klick pro Ziel erlaubt sein und dann auch nur 1 Punkt dafür zu bekommen |
||
Lapiz |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
machs doch so:
Code: [AUSKLAPPEN] If MouseX() > ziel_x And MouseX() < ziel_x + ImageWidth(Ziel) And MouseY() > ziel_y And MouseY() < ziel_y + ImageHeight(Ziel)
If Mousehit(1) ;ziel getroffen ziel_x=Rand(0,800) ziel_y=Rand(0,600) letztezeit=MilliSecs() EndIf EndIf |
||
Budikotch |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Oh ja.Danke ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group