Figur mit der Maus steuern

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Yankee

Betreff: Figur mit der Maus steuern

BeitragDi, Jun 20, 2006 14:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

ich bin gerade dabei ein boot spiel zu machen, wo man die Kanonen mit der Maus steuern kann. Nur weis ich nicht wie...
Könnt ihr mir zeigen, wie ich das ungefähr machen könnte?


Danke für eure Antworten,



Yankee
Um so kleiner der code, um so schwieriger den Fehler zu finden:


Siehst du den Fehler?
Klick mal hier drauf... hehehe

Hellfront

BeitragDi, Jun 20, 2006 15:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Also das klingt jetzt stark nach : "Macht ma leute!! Yankee ruht sich heute aus!" Confused

Na ja jedenfalls solltest du genauer deine Frage erklären: hast du schon Ansätze oder was? Oder fällt dir einfdach nciht ein wie du anfangen sollst?

Im jedenfall hoffe ich, dass du keinen Code erwartest.

Hier mal ideen:

Ich würde erstma (nachdem du den Weltenaufbau fertig hast) machen, dass die Boote schießen. Für die Richtung benutzt du MouseX(), MouseY(). Dann fragst du die Maus ab ob geklickt wurde und dann machst du einen Schuss. den Schuss solltest du erstma ruhig gerade verlaufend machen mit konstanter geschwindigkjeit. Danach musst du gucken wie du Schwerkraft einbringst.

Hoffe das hilft dir ein wenig.

Yankee

BeitragDi, Jun 20, 2006 15:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein so war das net gemeint.^^
Ich wollte nur wissen, wie man das am besten machen sollte. Also ich habe eine Kanone, unten in der mitte, ok? Dann soll sich die Kanone immer der Maus nach ausrichten(wenn unten 0° ist dann 90°-180°)

ähm... weis jetzt jmd was ich meine? ich wollte nur ein ganz kleines bsp. wo ich sehe, wie soetwas funktioniert.


Danke,



Yankee
Um so kleiner der code, um so schwieriger den Fehler zu finden:


Siehst du den Fehler?
Klick mal hier drauf... hehehe
 

icestorm

BeitragDi, Jun 20, 2006 15:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du meinst, dass es schräge Schüsse sein sollen, dann verweise ich dich hierhin: https://www.blitzforum.de/foru...hp?t=18100

Vincent hat da etwas ganz gutes dazu gepostet, du musst halt statt den zwei Spielern, einmal dein Boot nehmen und dann von der Maus. (also koordinaten)

Mit dem Beitrag von Vincent solltest du es schaffen!

*EDIT* Ok, dein Problem ist was anderes, wie ich die Antwort angefangen hab, war dein Beitrag noch nicht da^^

Thorsten

BeitragDi, Jun 20, 2006 16:11
Antworten mit Zitat
Benutzer-Profile anzeigen
https://www.blitzforum.de/foru...hp?t=18274
letzter post.

nur noch ankathete und gegenkathete angeben und fertig!

cya,
BlindGuy

Yankee

BeitragMi, Jun 21, 2006 14:23
Antworten mit Zitat
Benutzer-Profile anzeigen
also ich hab mir da jetzt schon was zusammengebastelt, aber jetzt habe ich zwei probleme:
1. Die Schüsse fliegen um so schneller, um so weit ich die maus von der kanone weg tue.
2. Die Schüsse fliegen immer in die entgegengesetzte richtung, wo die maus gerade ist(x)
(y_speed soll immer gleich schnell sein)

hier der code:
Code: [AUSKLAPPEN]

Graphics 640,480,16
SetBuffer BackBuffer()

Global x_speedo, y_speedo
Global kanone_x = 305, kanone_y = 450
Global kanone = LoadImage("kanone.bmp")
Global schuss_b = LoadImage("schuss.bmp")

While Not KeyHit(1)
   Cls
   ueberpruefe()
   verfolgung
   Flip
Wend

Function ueberpruefe()
   x_speedo = 0
   y_speedo = 0
   If MouseHit(1) Then
      s.schuss = New schuss
      s\x = kanone_x + 13
      s\y = 443
      x_speedo = (MouseX()-s\x)
      y_speedo = (MouseY()-s\y)
      s\x_speed = -x_speedo
      s\y_speed = -y_speedo
   EndIf
   If KeyDown(203) Then kanone_x = kanone_x - 1
   If KeyDown(205) Then kanone_x = kanone_x + 1
   If kanone_x < 0 Then kanone_x = 0
   If kanone_x > 630 Then kanone_x = 630
End Function

Function verfolgung()
   For s.schuss = Each schuss
      weiter = 0
      s\y_speed = s\y_speed - 0.5
      s\y = s\y - s\y_speed
      s\x = s\x + s\x_speed
      If s\y < -6 Then
         Delete s.schuss
         weiter = 1
      EndIf
      If weiter = 0 Then DrawImage schuss_b,s\x,s\y
   Next
   DrawImage kanone,kanone_x,kanone_y
End Function      
      
Type schuss
   Field x
   Field y
   Field x_speed
   Field y_speed
End Type



Kann jmd helfen?



Yankee
Um so kleiner der code, um so schwieriger den Fehler zu finden:


Siehst du den Fehler?
Klick mal hier drauf... hehehe

Thorsten

BeitragMi, Jun 21, 2006 15:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:

x_speedo = (MouseX()-s\x)
y_speedo = (MouseY()-s\y)


wenn du das so machst muss es ja mausabhängig sein!

und was soll das werden ? :

Code: [AUSKLAPPEN]

s\x_speed = -x_speedo
s\y_speed = -y_speedo

so ist es doch immer entgegengesetzt.

??

ich glaube dir nicht wirklich das du das "zusammengebastelt" hast...

cya,
BlindGuy

Rone

BeitragMi, Jun 21, 2006 15:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

habe zwar nicht wirklich verstanden was du da gemacht hast...
...aber habe deinen quelltext mal so abgeändert, dass es geht.

Code: [AUSKLAPPEN]

Graphics 640,480,16
SetBuffer BackBuffer()
Global kanone_x = 305, kanone_y = 450


While Not KeyHit(1)
     Cls
     ueberpruefe()
     verfolgung ()
Print Angle( kanone_x + 13,443,MouseX(),MouseY())
Flip
Wend
End

Function  Angle#(fX1#, fY1#, fX2#, fY2#)
      Return (ATan2(fY2 - fY1, fX2 - fX1) + 450.0) Mod 360.0
End Function

Function ueberpruefe()
   If MouseHit(1) Then
      s.schuss = New schuss
      s\x = kanone_x + 13
      s\y = 443
      s\win = Angle( kanone_x + 13,443,MouseX(),MouseY())
      s\speed =5
   EndIf
   If KeyDown(203) Then kanone_x = kanone_x - 1
   If KeyDown(205) Then kanone_x = kanone_x + 1
   If kanone_x < 0 Then kanone_x = 0
   If kanone_x > 630 Then kanone_x = 630
End Function

Function verfolgung()
   For s.schuss = Each schuss
      weiter = 0
      s\x =  s\x + s\speed*Sin(s\win)
      s\y=    s\y  - s\speed*Cos(s\win)
      x=s\x
      y=s\y
      Rect s\x,s\y,10,10,1
      If y < -6 Or x <-8 Then
         Delete s.schuss
         weiter = 1
      EndIf
   Next
   Rect  kanone_x ,450,20,20,1
End Function

Type schuss
   Field x
   Field y
   Field speed
   Field win#
End Type


mfg

Yankee

BeitragMi, Jun 21, 2006 15:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Äh danke vielmals.....



Yankee
Um so kleiner der code, um so schwieriger den Fehler zu finden:


Siehst du den Fehler?
Klick mal hier drauf... hehehe

Thorsten

BeitragMi, Jun 21, 2006 15:34
Antworten mit Zitat
Benutzer-Profile anzeigen
alles total sinnlos!
geh deinen code durch, bevor du hier nocheinmal eine frage stellst

cya,
BlindGuy

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group