warum bewegt sich der schuss nicht??

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

mas93

Betreff: warum bewegt sich der schuss nicht??

BeitragSa, Dez 09, 2006 18:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

AppTitle "WORM HOLE EXTREME"

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

ClsColor 255,0,0

;SACHEN LADEN

Global links=LoadImage("links.bmp")
MaskImage links,0,0,255
Global rechts=LoadImage("rechts.bmp")
MaskImage rechts,0,0,255
Global hinten=LoadImage("hinten.bmp")
MaskImage hinten,0,0,255
Global vorne=LoadImage("vorne.bmp")
MaskImage vorne,0,0,255
Global spieler=links
Global schussa=LoadImage("schussa.bmp")

Global x#
Global y#




Repeat
Cls

laufen()

If KeyDown(57)=1 Then DrawImage schussa,x,y

Dim rak(100,2)

If KeyHit(57) Then
schuss=schuss +1
If schuss=21 Then schuss=1
rak(schuss,0)=1
rak(schuss,1) =x +10
rak(schuss,2) =y -19
EndIf


Flip
Until KeyHit(1)
End



Function laufen()

If spieler=hinten And KeyHit(57) Then schussoben()



If KeyDown(203) Then spieler=links : x#=x#-0.5
If KeyDown(205) Then spieler=rechts :x#=x#+0.5
If KeyDown(200) Then spieler=hinten :y#=y#-0.5
If KeyDown(208) Then spieler=vorne : y#=y#+0.5

If spieler=links  Then DrawImage links,x#,y#
If spieler=rechts Then DrawImage rechts,x#,y#
If spieler=hinten Then DrawImage hinten,x#,y#
If spieler=vorne  Then DrawImage vorne,x#,y#


End Function


Function schussoben()


For i=1 To 100
If rak(i,1)<0 Then rak(i,0)=0
If rak(i,0)=1 Then
DrawImage schussa,rak(i,1),rak(i,2)
rak(i,2)=rak(i,2)-10

EndIf
Next


End Function


hi,ich probier hier jetzt schon ne halbe ewigkeit rum,und komm nich drauf warum der schuss net angezeigt wird.

habt ihr ne idee???

mfg marius
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau]

ToeB

BeitragSa, Dez 09, 2006 18:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Den schuss must du mit Types machen...
Code: [AUSKLAPPEN]

Graphics 640,480,0,2
Type schuss
Field schuss_x
Field schuss_y
End Type
Global s.schuss
...
Repeat
If KeyHit(57) then
s.schuss = New schuss
s\schuss_x = PosXvonSpieler
s\schuss_y = PosYvonSpieler
EndIf

For s.schuss = Each schuss
Oval s\schuss_x,s\schuss_y,10,10
s\schuss_y = s\schuss_y - 10
If s\schuss_y < 0 then Delete s-schuss
Next
Flip
Cls
Until KeyHit(1)
End


so in etwa....
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Hagbard

BeitragSa, Dez 09, 2006 18:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, muss er nicht!
Schön wäre es allerdings, wenn du kopierte Codes auch versuchen würdest zu verstehen, wenn du sie verwendest!

+ Dim vor die Hauptschleife
+ player = hinten Bedingung aus der Funktion laufen() entfernt, da die Bedingung anscheinend nie wahr wird, feuert er nicht
+ If KeyDown(57) Then ... gelöscht, da dies schon in der Funktion abgefragt wird.


Code: [AUSKLAPPEN]

AppTitle "WORM HOLE EXTREME"

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

ClsColor 255,0,0

;SACHEN LADEN

Global links=LoadImage("links.bmp")
MaskImage links,0,0,255
Global rechts=LoadImage("rechts.bmp")
MaskImage rechts,0,0,255
Global hinten=LoadImage("hinten.bmp")
MaskImage hinten,0,0,255
Global vorne=LoadImage("vorne.bmp")
MaskImage vorne,0,0,255
Global spieler=links
Global schussa=LoadImage("schussa.bmp")

Global x#
Global y#


Dim rak(100,2)

Repeat
Cls

laufen()

;If KeyDown(57)=1 schuss = 1

;If schuss = 1 Then DrawImage schussa,x,y



If KeyHit(57) Then
schuss=schuss +1
If schuss=21 Then schuss=1
rak(schuss,0)=1
rak(schuss,1) =x +10
rak(schuss,2) =y -19
EndIf


Flip
Until KeyHit(1)
End



Function laufen()

;If spieler=hinten And KeyHit(57) Then
schussoben()



If KeyDown(203) Then spieler=links : x#=x#-0.5
If KeyDown(205) Then spieler=rechts :x#=x#+0.5
If KeyDown(200) Then spieler=hinten :y#=y#-0.5
If KeyDown(208) Then spieler=vorne : y#=y#+0.5

If spieler=links  Then DrawImage links,x#,y#
If spieler=rechts Then DrawImage rechts,x#,y#
If spieler=hinten Then DrawImage hinten,x#,y#
If spieler=vorne  Then DrawImage vorne,x#,y#


End Function


Function schussoben()


For i=1 To 100
If rak(i,1)<0 Then rak(i,0)=0
If rak(i,0)=1 Then
DrawImage schussa,rak(i,1),rak(i,2)
rak(i,2)=rak(i,2)+10

EndIf
Next


End Function

Hagbard

BeitragSa, Dez 09, 2006 18:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Doppelpost nur zur Übersicht!

Ich würde den ganzen Code allerdings so schreiben, wenn ich deiner Idee weitgehend treu bleibe.
Schau dir einfach mal an, an welchen Stellen ich anders vorgegangen bin und vergleiche die beiden Codes!

an Crack:
Dich meine ich nicht.
Der Code von Mas stammt von René bzw. aus dessen Buch und bevor er jetzt den Fehler macht, dass er mit etwas weiterarbeitet, das er nicht versteht, sollte er das vielleicht nochmal genauer verstehen.

Code: [AUSKLAPPEN]
AppTitle "WORM HOLE EXTREME"

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

;ClsColor 255,0,0

;SACHEN LADEN
Global x#
Global y#

Dim rak(100,2)

Repeat
Cls

Color 255, 255, 255
Rect x, y, 100, 50

move()





If KeyHit(57) Then
 schuss = schuss + 1
 
 If schuss=21 Then schuss=1
 
 rak(schuss,0)=1
 rak(schuss,1) = x + 10
 rak(schuss,2) = y + 50
EndIf


Flip
Until KeyHit(1)
End



Function move()

 schuss()

 If KeyDown(203) Then x = x -1
 If KeyDown(205) Then x = x +1
 If KeyDown(200) Then y = y -1
 If KeyDown(208) Then y = y +1

End Function


Function schuss()

 For i=1 To 100

  If rak(i,1)<0 Then rak(i,0)=0
  If rak(i,0)=1 Then
   Color 255, 0, 0
   Rect rak(i,1), rak(i,2), 10, 10
   rak(i,2) = rak(i,2) + 10
  EndIf

Next


End Function
  • Zuletzt bearbeitet von Hagbard am Sa, Dez 09, 2006 18:42, insgesamt einmal bearbeitet

ToeB

BeitragSa, Dez 09, 2006 18:40
Antworten mit Zitat
Benutzer-Profile anzeigen
meinst du mit verstehen mich?
den Code hab ich nich kopiert...
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Tornado11

BeitragSa, Dez 09, 2006 18:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Hagbard sagt :
Zitat:
Dich meine ich nicht.

Very Happy

ToeB

BeitragSa, Dez 09, 2006 19:12
Antworten mit Zitat
Benutzer-Profile anzeigen
ja weiß ich auch, aba als ich das angefangen hab zu schreiben, war dieses threat noch nich da... Shocked Surprised
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!
 

bruce85

BeitragSa, Dez 09, 2006 19:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab dir mal schnell den Schuss mit Types geschrieben die in 4 Richtungen fliegen, kommt drauf an in welcher richtung der spieler kuckt Very Happy

Code: [AUSKLAPPEN]
AppTitle "WORM HOLE EXTREME"

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

ClsColor 255,0,0

;SACHEN LADEN

Global links=LoadImage("links.bmp")
MaskImage links,0,0,255
Global rechts=LoadImage("rechts.bmp")
MaskImage rechts,0,0,255
Global hinten=LoadImage("hinten.bmp")
MaskImage hinten,0,0,255
Global vorne=LoadImage("vorne.bmp")
MaskImage vorne,0,0,255
Global richtung=1

Global schuss=LoadImage("schussa.bmp")

Global x#
Global y#

;Type für den Schuss
Type schuss
  Field schuss_x
  Field schuss_y
  Field schuss_richtung
  Field schuss_speed
End Type

Repeat
Cls

laufen()

;Zum schießen auf Leertaste drücken
If KeyHit(57) Then
  ;Ein neuer schuss erstellen
  s.schuss = New schuss
  ;Den schuss an dieser Position setzen wo der spieler ist
  s\schuss_x = x+15
  s\schuss_y = y+5
  ;Den schuss richtung übergeben
  s\schuss_richtung = richtung
  ;Schuss speed setzen
  s\schuss_speed=3
EndIf

;Alle schüsse abfragen
For s.schuss = Each schuss
  ;Den schuss zeichnen
  DrawImage schuss,s\schuss_x,s\schuss_y
  ;Schuss nach links fliegen lassen
  If s\schuss_richtung = 1 Then s\schuss_x = s\schuss_x - s\schuss_speed
  ;Schuss nach rechts fliegen lassen
  If s\schuss_richtung = 2 Then s\schuss_x = s\schuss_x + s\schuss_speed
  ;Schuss nach oben fliegen lassen
  If s\schuss_richtung = 3 Then s\schuss_y = s\schuss_y - s\schuss_speed
  ;Schuss nach unten fliegen lassen
  If s\schuss_richtung = 4 Then s\schuss_y = s\schuss_y + s\schuss_speed
Next

Flip
Until KeyHit(1)
End

Function laufen()

  ;Richtung links
  If KeyDown(203) Then richtung=1 : x#=x#-.50
  ;Richtung rechts
  If KeyDown(205) Then richtung=2 : x#=x#+.50
  ;Richtung oben
  If KeyDown(200) Then richtung=3 : y#=y#-.50
  ;Richtung unten
  If KeyDown(208) Then richtung=4 : y#=y#+.50

  If richtung = 1 Then DrawImage links,x#,y#
  If richtung = 2 Then DrawImage rechts,x#,y#
  If richtung = 3 Then DrawImage hinten,x#,y#
  If richtung = 4 Then DrawImage vorne,x#,y#

End Function


MfG Andreas
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250

mas93

BeitragSa, Dez 09, 2006 19:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die vielen antworten.

ich hab das mit absicht nich mit types gemacht,weil ich noch nich richtig weiß wie das geht.
WERDE DAS aba jetzt lernen.
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau]

ToeB

BeitragSa, Dez 09, 2006 19:25
Antworten mit Zitat
Benutzer-Profile anzeigen
is eigl. nich soo schwer....
ist soger besser weil man das dann besser löschen kann...
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group