Maus mit Objekt kollidieren

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

MikeDee

Betreff: Maus mit Objekt kollidieren

BeitragDi, Mai 13, 2008 14:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei diesem Code muss man noch ganz genau in die Ecke gehen damit sich das blaue Viereck auflöst, wie muss ich den Code ändern damit die Maus mit dem ganzen Viereck kollidiert?
Code: [AUSKLAPPEN]

Graphics 1024,768,16,1
SetBuffer BackBuffer()
SeedRnd MilliSecs()

zx = Rand(0,1023)
zy = Rand(0,767)

;Hauptschleife
Repeat
   Cls
HidePointer

;Norden?
If KeyDown(17) Then
   hy = hy - 2
EndIf

;Osten?
If KeyDown(32) Then
   hx = hx + 2
EndIf

;Süden?
If KeyDown(31) Then
   hy = hy + 2
EndIf

;Westen?
If KeyDown(30) Then
   hx = hx - 2
EndIf

;Auf der anderen Seite auftauchen.
If hx < 0 Then hx = 1023
If hx > 1023 Then hx = 0
If hy < 0 Then hy = 767
If hy > 767 Then hy = 0

;Spieler zeichnen
Color 255,255,255
Rect hx,hy,10,10,1

;Maus zeichnen
mx = MouseX()
my = MouseY()
Color 255,0,0
Oval mx,my,5,5,1

;Ziel zeichnen
Color 0,0,225
Rect zx,zy,20,20,1

;Zielkolission
If mx = zx And my = zy Then
   zx = Rand(0,1023) : zy = Rand(0,767)
   Punkte = Punkte + 1
EndIf

;Punkte schreiben
Color 255,255,255
Text 512,0,"Punkte"+Punkte

Flip
Until KeyHit(1)
End


Ich weiß das das Problem hier liegt, weiß aber nicht wie es verändert gehört
Code: [AUSKLAPPEN]

;Zielkolission
If mx = zx And my = zy Then
   zx = Rand(0,1023) : zy = Rand(0,767)
   Punkte = Punkte + 1
EndIf


ps. den weißen Viereck kann man mit den WASD-Tasten steuern.
  • Zuletzt bearbeitet von MikeDee am Di, Mai 13, 2008 15:48, insgesamt einmal bearbeitet

hamZta

Administrator

BeitragDi, Mai 13, 2008 15:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Du fragst im Moment ja auch nur einen Punkt ab, nämlich zx und zy. Da dein Quadrat allerdings eine Breite von 20 Pixeln hat müsstest du abfragen, ob die Maus im Bereich zx bis zx+20 und zy bis zy+20 liegt.

hamZta
Blog.

MikeDee

BeitragDi, Mai 13, 2008 15:50
Antworten mit Zitat
Benutzer-Profile anzeigen
habs so ausprobiert
Code: [AUSKLAPPEN]

;Zielkolission
If mx = zx,zx+20 And my = zy,zy+20 Then
   zx = Rand(0,1023) : zy = Rand(0,767)
   Punkte = Punkte + 1
EndIf


Jetzt kommt aber die Fehlermeldung "Expecting end-of-line"
bestimmt habe ich's komplett falsch gemacht -.-

BladeRunner

Moderator

BeitragDi, Mai 13, 2008 16:14
Antworten mit Zitat
Benutzer-Profile anzeigen
~VERSCHOBEN~
Dieser Thread passte nicht in das Forum, in dem er ursprünglich gepostet wurde.


..if mx >=zx and mx <=zx+20 and...
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

The_Nici

BeitragDi, Mai 13, 2008 17:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Du könntest ja die Funktion RectsOverlap benutzen.

MikeDee

BeitragDi, Mai 13, 2008 17:31
Antworten mit Zitat
Benutzer-Profile anzeigen
klappt schon alles so, bin schon zum nächsten Problem übergelaufen^^

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group