Schussproblem

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

mpcool

Betreff: Schussproblem

BeitragSo, Jan 13, 2008 4:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey leute, hab ein Problem mit meinem Schuss._.

hier ersteinmal der Code:

Code: [AUSKLAPPEN]
AppTitle "AutoSpeed"

Global xmax = 800, ymax = 600, aufloesung = 16, bildschirm = 2

Graphics xmax, ymax, aufloesung, bildschirm
SetBuffer BackBuffer()

schuss = LoadImage("bilder/schuss.png")
schussx = 10
schussy = ymax/2

Repeat
Cls

DrawImage schuss, schussx, schussy

If MouseHit(1) Then
   While schussx < 600
      schussx = schussx + 1
   Wend
EndIf

Flip
Until KeyHit(1)

End


Mein Problem ist das der Schuss wenn ich auf die Linke Maustaste drücke, direkt an 600 angezeigt wird, und nicht dorthin fliegt. Könnte mir jemand meinen Code bitte so erweitern das es geht? Sry falls es einen solchen Thread schon gibt^^

Abrexxes

BeitragSo, Jan 13, 2008 4:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Deine While Schleife läuft solange bis 600 erreicht ist und bis dahin wird auch nichts neues gezeichnet.
Oder anders gesagt:
Code: [AUSKLAPPEN]

While schussx < 600
      schussx = schussx + 1
Wend

ist das selbe wie
Code: [AUSKLAPPEN]
schussx = 600


Aber das ganze Prinzip da wird nicht funktionieren.

cu

The_Nici

BeitragSo, Jan 13, 2008 10:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Types sind die Lösung!

Code: [AUSKLAPPEN]

Type schuss      ;Ein Type. Das ist ein Typ von etwas. z.B. Apfel und Birnen gehören zu den Früchten.
   Field x#   ;Wir sagen, der Type hat ein x-Feld
   Field y#   ;Ebenfalls hat er ein y-Feld
   Field w#   ;Und noch was für den Winkel
End Type      ;Hier ist unser Type zu Ende.

;Ich habe Floats (#) benutzt, wegen ihrer Genauigkeit.

Graphics 800,600   ;Grafikmodus initialisieren.
SetBuffer BackBuffer()   ;Buffer setzen.

Global player_x#=400   ;Playerkoordinaten
Global player_y#=300
Global player_w#=0      ;Winkel

While Not KeyDown(1)   ;Während nicht Taste Escape runter...
   If KeyHit(57) Then      
      s.schuss=New schuss      ;Neuen Schuss erstellen. Also z.B. "in die Kategorie 'schuss' gehört nun 's'". Es können beliebig viele "s" vorhanden sein.
      s\x=player_x         ;Die x-Variable von 's' wird zu der vom Player
      s\y=player_y         ;Y auch
      s\w=player_w         ;Und schlussendlich noch der Winkel.
   EndIf
   If KeyDown(203) Then player_w=player_w-1   ;Player drehen
   If KeyDown(205) Then player_w=player_w+1   ;Player drehen
   If KeyDown(200) Then
      player_x=player_x+Cos(player_w)         ;Fahren. Jetzt kommt etwas Mathe ins Spiel. Kurz: Cosinus und Sinus können aus einem Winkel eine Koordinate errechnen.
      player_y=player_y+Sin(player_w)         ;Cos für x und Sin für y
   EndIf
   Color 255,0,0
   For s.schuss=Each schuss   ;Jeden Schuss abfragen
      s\x=s\x+Cos(s\w)   ;Den Cosinus ihres Winkels zur X-Koordinate addieren...
      s\y=s\y+Sin(s\w)   ;Und den Sinus zu Y.
      Plot s\x, s\y      ;Noch ein Punkt zeichnen
   Next               ;Hurra.
   Color 255,255,255
   Oval player_x-16,player_y-16,32,32,1      ;Oval an der Spielerposition zeichnen. (-16 damit es in der Mitte ist)
   Color 255,0,0 Line player_x,player_y,player_x+Cos(player_w)*10,player_y+Sin(player_w)*10 ;Ne Linie zeichnen um die Rotation sichtbar zu machen beim Player
   Flip
   Cls
Wend
End


Wenn du was nicht verstehst, dann frag einfach.
 

mpcool

BeitragSo, Jan 13, 2008 15:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Boah, danke Leute ich habe es verstanden^^

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group