Unabhängige Bewegung von Geschossen (Space Impact ähnlich)

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Klaus

Betreff: Unabhängige Bewegung von Geschossen (Space Impact ähnlich)

BeitragFr, Okt 21, 2005 15:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo erstmal...Ich bin neu hier^^
Ich programmiere noch nicht sehr lange... Rolling Eyes

Also Ich habe folgendes Problem:
Ich versuche gerade ein Space Impact ähnliches Spiel zu entwickeln.
Die Steuerung hab ich per Cursor Tasten.

Aber ich will jetzt das man zb. wenn man (einmal) auf "Strg rechts" klickt,
dass sich ein Geschoss von dem aktuellem Punkt des Raumschiffes nach vorne bewegt, ohne das man "Strg rechts" gedrückt halten muss.

Ich habe es schon versucht, aber ich habe es nur geschafft,
dass sich das Geschoss nach vorne bewegt wenn man die Taste gedrückt hält, jedoch erscheint das Geschoss dann am Ausgangspunktes des Raumschiffes und bewegt sich gerade nach vorne.

Ein Freund von mir meinte das ich das mit "Dim" machen soll, er hatte aber derzeit noch keine Zeit mir das genauer zu erklären

Deshalb frage ich hier^^

Hier der komplette Code:
BlitzBasic: [AUSKLAPPEN]
Graphics 640,480,16,3

Raumschiff = LoadImage(\"Mauszeiger_Raumschiff.png\")
Düsen = LoadAnimImage(\"Düsen.png\", 50,52,0,3)
Sterne = LoadImage(\"Sterne.png\")
Umgebung = LoadImage(\"Umgebung.png\")

MidHandle Raumschiff
MaskImage Raumschiff, 255,255,255
MaskImage Umgebung, 0,0,0

.Anfang
UmgebungX = 200
CursorY=240


WaitKey
; Darstellungs-Schleife
Repeat
TileImage Sterne, Sternenposition
DrawImage Umgebung, UmgebungX, 0
DrawImage Düsen, CursorX-80, CursorY-26, Düsenframe
DrawImage Raumschiff, CursorX ,CursorY
Delay 20
Cls

; Die Steuerung
If KeyDown(200) Then CursorY = CursorY - 5
If KeyDown(208) Then CursorY = CursorY + 5
If KeyDown(203) Then CursorX = CursorX - 5
If KeyDown(205) Then CursorX = CursorX + 5


; Die Sternen-Bewegung
If Sternenposition < 200 Then
Sternenposition = Sternenposition -2
Else
Sternenposition = 0
EndIf

; Die Düsen-Bewegung
If Düsenframe <2 Then
Düsenframe = Düsenframe + 1
Else
Düsenframe = 0
EndIf

; Die Umgebungs-Bewegung
UmgebungX = UmgebungX - 2

; Kollisions-Überprüfung
If ImagesCollide(Raumschiff,CursorX,CursorY,0,Umgebung,UmgebungX,0,0) Then
Cls
Print \"GAME OVER!\"
Print \"Neues Spiel?\"
Print \"(j)=Ja (n)=Nein
.Beenden
WaitKey
If KeyHit(36) Then
Goto Anfang
ElseIf KeyHit(49) Then
End
Else
Goto Beenden
EndIf
EndIf

Forever


Falls etwas unverständlich erklärt wurde, bitte melden...


MfG Klaus

Klip

BeitragFr, Okt 21, 2005 16:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Klaus,

Dims sind dafür zwar auch zu gebrauchen, aber noch einfacher geht es mit Types. Tutorials dafür findest du auf Blitzbase.de

Wenn dir das zu viel Recherche ist:
BlitzBasic: [AUSKLAPPEN]

Graphics 640,480,32,2

SetBuffer BackBuffer()

Type schuss
Field x#
Field y#
Field schussspeed#
Field reichweite#
End Type

x#=100
y#=240

Repeat
Cls

If KeyDown(203) x = x - 3
If KeyDown(205) x = x + 3

If KeyHit(57) Then
;SCHUSS ERSTELLEN
schuss_eins.schuss = New schuss
;koordinaten einstellen
schuss_eins\x = x
schuss_eins\y = y
schuss_eins\schussspeed = 5
schuss_eins\reichweite = 40
EndIf

;Jeden Schuss durchgehen
For schuss_eins.schuss = Each schuss
;die x-koordinate verändern
schuss_eins\y = schuss_eins\y - schuss_eins\schussspeed
schuss_eins\reichweite = schuss_eins\reichweite - 1

;rechteck als Rakete zeichnen
Rect schuss_eins\x,schuss_eins\y,1,3

;falls es den bildschirm überschreitet löschen
If schuss_eins\reichweite < 0 Then
Delete schuss_eins.schuss
EndIf

Next

;\"raumschiff\" zeichnen
Oval x,y,10,10

Flip
Until KeyHit(1)
End

Hellfront

Betreff: Goto???

BeitragFr, Okt 21, 2005 22:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Goto ist sehr sehr böse da sich so sehr schnell ein Spaghetti Code entwickelt lass das also lieber gleich stecken irgendwann wenn du größere Projekte schreibs blickst du nicht mehr durch!!!
verwend doch lieber functions (Tuts dazu im ganzen web am besten auf robsite.de oda blitzbase.de)

P.S.: Der Thread gehört in den Anfänger Teil des Forums!!!

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group