Geht das leichter?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Surat

Betreff: Geht das leichter?

BeitragSo, März 27, 2005 14:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi@all,
Jump'n'run war mir vorerst doch zu kompliziert und deswegen bleibe
ich noch bei den guten einfachen 2D-Weltraumshootern. Das einzige
was daran kompliziert ist: Die Raketen (bzw: die Geschosse).
In RM's Buch ist das ja schön beschrieben mit Schusstest und so,
aber irgendwie kapier ich das nicht. Gibt es keinen einfacheren Weg
um Geschosse zu programmieren?
Ich bin für jede Hilfe dankbar Wink
"DER GRÖßTE FEIND IST IN DEN EIGENEN REIHEN" (Trygonia-Xen's Quest)

AZUON-Beyond the dark life (2%)
SOULS OF DESTINY (23%)

diGGa

GruppenKaspar

BeitragSo, März 27, 2005 14:46
Antworten mit Zitat
Benutzer-Profile anzeigen
statt dim kannste types verwenden.. aber die muss man genauso verstehen (ich zB versteh (endlich xD) dim aber types noch nich)
Gestern Nacht Schlug der Regen an mein Fenster
Ich ging durch das dunkle Zimmer und
glaubte im Licht der Straßenlampe
Den Geist unseres jahrhunderts auf der
Straße zu sehen
Der uns sagte, daß wir alle am Rande
des Abgrunds stehen.
- Al Steward


Athlon 64 3000+ / Radeon 9600 / 1024mb ddram

Spikespine

BeitragSo, März 27, 2005 14:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Mach das mit Types.
Bei Druck auf die Schusstaste wird ein neues Schuss-Type erstellt. Dann müssen alle Schüsse aktualisiert werden (indem du die Y-Koordinate veränderst). Wenn der Schuss den Bildschirm verlässt, löscht du ihn.
Das geht wohl einfacher (und meiner Meinung nach schneller) als mit dem Dim Feld.
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax
 

#pointer#

Gast

BeitragSo, März 27, 2005 16:03
Antworten mit Zitat
naja, für uns vielleicht, aber für ihn nicht. Confused
ich rate dir dir mal die Types anzuschauen, und wenn du sie net kapierst, dann kannste ja bei dims bleiben.
 

Doni

BeitragSo, März 27, 2005 16:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit Types is es wirklich einfacher,schau dir einfach mal die OH an.
Doni
Verzeit mir meine Rechtschreibfehler!

Surat

BeitragMo, März 28, 2005 13:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für eure Hilfe Very Happy
Na dann werde ich mich mal in die Types einlesen
"DER GRÖßTE FEIND IST IN DEN EIGENEN REIHEN" (Trygonia-Xen's Quest)

AZUON-Beyond the dark life (2%)
SOULS OF DESTINY (23%)
 

Bigfreddy

BeitragMo, März 28, 2005 13:40
Antworten mit Zitat
Benutzer-Profile anzeigen
@Surat: les diesen Post nicht unbedingt, wenn du Types selber lösen willst....natürlich kannst des lesen, wenn du willst



@all others: Ich hab vorgestern mal des mit Types probiert und, bin mir nicht sicher, ob das nicht leichter geht...nicht im sinnevon keine Types benutzen, sondern ob der Code vereinfacht werden kann.

BlitzBasic: [AUSKLAPPEN]
Graphics 800,600,16,2
SetBuffer BackBuffer()

Type Personen
Field x
Field y
Field Groesse
Field Speed
Field Sprung
End Type

Type Schuesse
Field x
Field y
Field Speed
Field richtung
Field laenge
End Type

Global Spieler.Personen=New Personen

Global springen=0,pause=15,speed=5,alty,doppelsprung,speed_kugel=10,laengenmax=40
;sprungmodus an/aus
;verzoegerung beim springen
;Spieler
;\"0-Ebene\"
;un-/möglich

Spieler\Groesse=30
Spieler\x=200
Spieler\y=300-(Spieler\groesse/2)
Spieler\Speed=0
Spieler\Sprung=15
alty=spieler\y
doppelsprung=0
anzahl=0
richtung=1


Color 0,255,0

Repeat
Cls


If MouseHit(1) Then
anzahl=anzahl+1
schuss.schuesse=New schuesse
If richtung=-1 Then schuss\x=spieler\x
If richtung=1 Then schuss\x=spieler\x+spieler\groesse
schuss\y=spieler\y+(spieler\groesse/2)
schuss\speed=speed_kugel
schuss\richtung=richtung
schuss\laenge=1
EndIf

For schuss=Each schuesse ;Schuesse updaten
schuss\x=schuss\x+(schuss\richtung*schuss\speed)
schuss\laenge=schuss\laenge+1
If schuss\laenge>laengenmax Then schuss\laenge=laengenmax
Line schuss\x,schuss\y,schuss\x-schuss\laenge,schuss\y
If(schuss\x-schuss\laenge)>=800 Or (schuss\x<=0) Then Delete schuss
Next

Oval Spieler\x,Spieler\y,Spieler\groesse,Spieler\groesse

Spieler\x=(Spieler\x)+Spieler\Speed
If Spieler\x>GraphicsWidth() Then Spieler\x=1-Spieler\Groesse
If Spieler\x<(0-Spieler\groesse) Then Spieler\x=800

spieler\speed=0 ;Bewegung stoppen

If KeyDown(203) Then
spieler\speed=-speed ;Spieler bewegt sich nach links
richtung=-1
EndIf

If KeyDown(205) Then
spieler\speed=speed ; \"\" \" \" \" rechts
richtung=1
EndIf

If (KeyHit(200))And (doppelsprung=0)Then ;Sprung
If springen=1 Then doppelsprung=1
springen=1
sprunghilfs=-1 ;Richtung die Spieler springt -= hoch
EndIf

If (springen=1)And(startpause+pause<MilliSecs())then;Falls Sprung u.Verzögerung
spieler\y=spieler\y+sprunghilfs ;Spieler hüpft
If sprunghilfs<0 Then sprunghilfs=sprunghilfs-1 ;springt weiter
If sprunghilfs=-spieler\sprung Then sprunghilfs=1 ;kehrt zurück

If sprunghilfs>0 Then sprunghilfs=sprunghilfs+1 ;geht runter
If spieler\y>=alty Then
spieler\y=alty
springen=0
doppelsprung=0
EndIf

startpause=MilliSecs()

EndIf

Flip
Until KeyDown(1)
End


Zur Steuerung: Pfeiltasten: links rechts
nach oben: Sprung/Doppelsprung
Maus:linke Maustaste

Also kann man den Code vereinfachen?

MfG

simi

BeitragMo, März 28, 2005 16:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, man kann schon ein bisschen verändern...:
BlitzBasic: [AUSKLAPPEN]
Graphics 800,600,16,2
SetBuffer BackBuffer()

Type Personen
Field x
Field y
Field Groesse
;Field Speed
Field Sprung
End Type

Type Schuesse
Field x
Field y
;Field Speed
Field richtung
Field laenge
End Type

Global Spieler.Personen=New Personen

Global springen=0,pause=15,speed=5,alty,doppelsprung,speed_kugel=10,laengenmax=40
;sprungmodus an/aus
;verzoegerung beim springen
;Spieler
;\"0-Ebene\"
;un-/möglich

Spieler\Groesse=30
Spieler\x=200
Spieler\y=300-(Spieler\groesse/2)
;Spieler\Speed=0
Spieler\Sprung=15
alty=spieler\y
doppelsprung=0
anzahl=0
richtung=1


Color 0,255,0

Repeat
Cls


If MouseHit(1) Then
;anzahl=anzahl+1 <-- Was bringt das??
schuss.schuesse=New schuesse
schuss\x=spieler\x+(spieler\groesse*(richtung=1)) ;<----
schuss\y=spieler\y+(spieler\groesse/2)
;schuss\speed=speed_kugel <--- Hier nicht notwendig
schuss\richtung=richtung
schuss\laenge=1
EndIf

For schuss=Each schuesse ;Schuesse updaten
schuss\x=schuss\x+(schuss\richtung*speed_kugel)
If schuss\laenge<laengenmax Then schuss\laenge=schuss\laenge+1 ;<---
Rect schuss\x,schuss\y,schuss\laenge,1 ;Rect ist schnell Wink
If(schuss\x-schuss\laenge)>=800 Or (schuss\x<=0) Then Delete schuss
Next

Oval Spieler\x,Spieler\y,Spieler\groesse,Spieler\groesse

;Die Steuerung würde ich anders machen....
If KeyDown(203) And spieler\x>0 Then
spieler\x=spieler\x-speed ;Spieler bewegt sich nach links
richtung=-1
EndIf

If KeyDown(205) And Spieler\x<GraphicsWidth() Then
spieler\x=spieler\x+speed
richtung=1
EndIf

If (KeyHit(200))And (doppelsprung=0)Then ;Sprung
If springen=1 Then doppelsprung=1
springen=1
sprunghilfs=-1 ;Richtung die Spieler springt -= hoch
EndIf

If (springen=1)And(startpause+pause<MilliSecs())Then;Falls Sprung u.Verzögerung
spieler\y=spieler\y+sprunghilfs ;Spieler hüpft
If sprunghilfs<0 Then sprunghilfs=sprunghilfs-1 ;springt weiter
If sprunghilfs=-spieler\sprung Then sprunghilfs=1 ;kehrt zurück

If sprunghilfs>0 Then sprunghilfs=sprunghilfs+1 ;geht runter
If spieler\y>=alty Then
spieler\y=alty
springen=0
doppelsprung=0
EndIf

startpause=MilliSecs()

EndIf

Flip
Until KeyDown(1)
End


Wie du siehst, finde ich nur die Steuerung nicht so gut.... Wink

Edit: So, jetzt gehts, habs nicht ausprobiert....
  • Zuletzt bearbeitet von simi am Mo, März 28, 2005 16:50, insgesamt einmal bearbeitet

diGGa

GruppenKaspar

BeitragMo, März 28, 2005 16:47
Antworten mit Zitat
Benutzer-Profile anzeigen
expecting variable assignment line 49
danach
type field not found line 57
Gestern Nacht Schlug der Regen an mein Fenster
Ich ging durch das dunkle Zimmer und
glaubte im Licht der Straßenlampe
Den Geist unseres jahrhunderts auf der
Straße zu sehen
Der uns sagte, daß wir alle am Rande
des Abgrunds stehen.
- Al Steward


Athlon 64 3000+ / Radeon 9600 / 1024mb ddram

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group