schuss

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Thoth

Betreff: schuss

BeitragMi, Okt 19, 2005 21:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Huhu,

BlitzBasic: [AUSKLAPPEN]

Graphics 640,480,16,2
SetBuffer BackBuffer()

TFormFilter 0

spielerschiff = LoadImage(\"gfx/playership.bmp\")
asteroid_01 = LoadImage(\"gfx/asteroid_01.png\")
schussbild = LoadImage(\"gfx/shot.bmp\")
ResizeImage spielerschiff,30,40

;spieler dreh-effekt
Dim spieler(359)
For winkel_spieler = 0 To 359
spieler(winkel_spieler) = CopyImage(spielerschiff)
RotateImage spieler(winkel_spieler), winkel_spieler - 90
MidHandle spieler(winkel_spieler)
Next

speed = 6
speed_schuss = 10
spieler_x# = 300
spieler_y# = 220
schuss = 0
energie = 50

Dim schuss_drehen(359)
For winkel_schuss = 0 To 359
schuss_drehen(winkel_schuss) = CopyImage(schussbild)
RotateImage schuss_drehen(winkel_schuss), winkel_schuss - 90
MidHandle schuss_drehen(winkel_schuss)
Next

Dim shot(100,2)

;timer
takt = CreateTimer(30)

Repeat
;Anfang Hauptschleife
;
Cls

Color 255,0,0
Text 0,0,energie
Color 255,255,255

If KeyHit(57) Then
schuss = schuss + 1
If schuss = 21 Then schuss = 1
shot(schuss,0) = 1
shot(schuss,1) = spieler_x# + 10
shot(schuss,2) = spieler_y# - 19
EndIf

For I = 1 To 100
If shot(I,1) < 0 Then shot(I,0) = 0
If shot(I,0) = 1 Then
DrawImage schuss_drehen(winkel_schuss), shot(I,1), shot(I,2)
shot(I,2) = shot(I,2) - 10
EndIf
Next

If KeyDown(200) Then
spieler_x# = spieler_x# - Cos(winkel_spieler) * speed
spieler_y# = spieler_y# - Sin(winkel_spieler) * speed
EndIf

If KeyDown(208) Then
spieler_x# = spieler_x# + Cos(winkel_spieler) * speed
spieler_y# = spieler_y# + Sin(winkel_spieler) * speed
EndIf

If KeyDown(205) Then
winkel_spieler = winkel_spieler + 5
EndIf

If KeyDown(203) Then
winkel_spieler = winkel_spieler - 5
EndIf

If winkel_spieler > 359 Then winkel_spieler = 0
If winkel_spieler < 0 Then winkel_spieler = 355

If KeyDown(15) Then
Repeat
speed = speed + 2
energie = energie + 1
Until energie = 0
EndIf

If spieler_x# < 5 Then spieler_x# = 5
If spieler_x# > 635 Then spieler_x# = 635
If spieler_y# < 5 Then spieler_y# = 5
If spieler_y# > 475 Then spieler_y# = 475

DrawImage spieler(winkel_spieler),spieler_x#,spieler_y#

WaitTimer takt
Flip
;
;Ende Hauptschleife


mein problem ist:
wie soll ich es anstellen dass sich das schussbild mitdreht, und der schuss in die dementsprechende richtung fliegt ??

danke schonmal.

cu

Firstdeathmaker

BeitragMi, Okt 19, 2005 21:47
Antworten mit Zitat
Benutzer-Profile anzeigen
So?

Der Trick: Du legst für die Schüsse eine weitere Dimension im Dimfeld an in der du die Rotation des Schiffes am Zeitpunkt des Abfeuerns festhältst. Dann hast du schonmal die Richtung des Schusses festgehalten. Die Flugbahnberechnung erfolgt dann mit sin und cos:

BlitzBasic: [AUSKLAPPEN]

Graphics 640,480,16,2
SetBuffer BackBuffer()

TFormFilter 0

spielerschiff = LoadImage(\"gfx/playership.bmp\")
asteroid_01 = LoadImage(\"gfx/asteroid_01.png\")
schussbild = LoadImage(\"gfx/shot.bmp\")
ResizeImage spielerschiff,30,40

;spieler dreh-effekt
Dim spieler(359)
For winkel_spieler = 0 To 359
spieler(winkel_spieler) = CopyImage(spielerschiff)
RotateImage spieler(winkel_spieler), winkel_spieler - 90
MidHandle spieler(winkel_spieler)
Next

speed = 6
speed_schuss = 10
spieler_x# = 300
spieler_y# = 220
schuss = 0
energie = 50

Dim schuss_drehen(359)
For winkel_schuss = 0 To 359
schuss_drehen(winkel_schuss) = CopyImage(schussbild)
RotateImage schuss_drehen(winkel_schuss), winkel_schuss - 90
MidHandle schuss_drehen(winkel_schuss)
Next

Dim shot(100,3)

;timer
takt = CreateTimer(30)

Repeat
;Anfang Hauptschleife
;
Cls

Color 255,0,0
Text 0,0,energie
Color 255,255,255

If KeyHit(57) Then
schuss = schuss + 1
If schuss = 21 Then schuss = 1
shot(schuss,0) = 1
shot(schuss,1) = spieler_x# + 10
shot(schuss,2) = spieler_y# - 19
shot(schuss,3) = winkel_spieler
EndIf

For I = 1 To 100
If shot(I,1) < 0 Then shot(I,0) = 0
If shot(I,0) = 1 Then
DrawImage schuss_drehen(shot(I,3)), shot(I,1), shot(I,2)
shot(I,2) = shot(I,2) - Sin(shot(I,3))*10
shot(I,1) = shot(I,1) - Cos(shot(I,3))*10
EndIf
Next

If KeyDown(200) Then
spieler_x# = spieler_x# - Cos(winkel_spieler) * speed
spieler_y# = spieler_y# - Sin(winkel_spieler) * speed
EndIf

If KeyDown(208) Then
spieler_x# = spieler_x# + Cos(winkel_spieler) * speed
spieler_y# = spieler_y# + Sin(winkel_spieler) * speed
EndIf

If KeyDown(205) Then
winkel_spieler = winkel_spieler + 5
EndIf

If KeyDown(203) Then
winkel_spieler = winkel_spieler - 5
EndIf

If winkel_spieler > 359 Then winkel_spieler = 0
If winkel_spieler < 0 Then winkel_spieler = 355

If KeyDown(15) Then
Repeat
speed = speed + 2
energie = energie + 1
Until energie = 0
EndIf

If spieler_x# < 5 Then spieler_x# = 5
If spieler_x# > 635 Then spieler_x# = 635
If spieler_y# < 5 Then spieler_y# = 5
If spieler_y# > 475 Then spieler_y# = 475

DrawImage spieler(winkel_spieler),spieler_x#,spieler_y#

WaitTimer takt
Flip
;
;Ende Hauptschleife
Until KeyHit(1)



Edit: Ach ja, schau dir mal auf meiner Website das Spaceshooter-Tutorial an: Link
Da erkläre ich wie du am besten Schüsse machst, nämlich mit Types!
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image
 

Thoth

BeitragFr, Okt 21, 2005 16:42
Antworten mit Zitat
Benutzer-Profile anzeigen
thx funktioniert.
 

Thoth

BeitragFr, Okt 21, 2005 17:13
Antworten mit Zitat
Benutzer-Profile anzeigen
sorry für doppelpost, aber ich habe ein neues problem:

BlitzBasic: [AUSKLAPPEN]

For f = 0 To 19
Cls
DrawImage asteroid_01,100,100,f
Flip
Next


Wenn ich eine asteroiden animation in der hauptschleife habe kann ich ja in die for schleife kein cls reinsetzen, weil sonst ja alles flackert, aber wie soll ich das sonst machen ??

EDIT: außerdem läuft dann alles extrem langsam ab.. :/

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragFr, Okt 21, 2005 17:46
Antworten mit Zitat
Benutzer-Profile anzeigen
einfach in jedem Schleifendurchgang erhöhen
BlitzBasic: [AUSKLAPPEN]
f = f + 1
If f > 19 Then f = 0
DrawImage asteroid_01,100,100,f
[BB2D | BB3D | BB+]

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group