Schussproblem
Übersicht

mpcoolBetreff: Schussproblem |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Boah, danke Leute ich habe es verstanden^^ | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group