problem beim spielverlauft

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

sen-me

Betreff: problem beim spielverlauft

BeitragMo, Sep 05, 2005 14:02
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
Global chipset,x,y,mx,my,richtung,file,bewegung,ort,orty
Dim map(39,29)

Graphics 640,480,32,1

;vorbereiten des Spiels
chipset=LoadAnimImage(\"tile.bmp\",16,16,0,16)
file=ReadFile(\"map.txt\")
For y=0 To 29
For x=0 To 39
map(x,y)=ReadLine(file)
Next
Next
mx=1
ort=16
my=13
orty=208
richtung=4

;spielstart
Repeat
SetBuffer BackBuffer()
Cls
If KeyHit(1) Then End
If KeyDown(203) And MilliSecs()>=z+50 And (map(mx-1,my)>0 Or (map(mx-1,my+1)>0 Or map(mx-1,my-1)>0))
bewegung=bewegung-4
ort=ort-4
If bewegung<=0
mx=mx-1
bewegung=16
EndIf
richtung=5
z=MilliSecs()
If map(mx,my-1)=2
my=my-1
EndIf
If map(mx,my)=1
richtung=6
EndIf
If map(mx,my)=3
richtung=7
EndIf
If map(mx,my-1)=1
my=my-1
richtung=6
EndIf
If map(mx,my+1)=3
my=my+1
richtung=7
EndIf
EndIf
If KeyDown(205) And MilliSecs()>=z+50 And (map(mx+1,my)>0 Or (map(mx+1,my-1)>0 Or map(mx+1,my+1)>0))
bewegung=bewegung+4
ort=ort+4
If bewegung>=16
mx=mx+1
bewegung=0
EndIf
richtung=4
z=MilliSecs()
If map(mx,my+1)=2
my=my+1
EndIf
If map(mx,my-1)=2
my=my-1
EndIf
If map(mx,my)=3
richtung=8
EndIf
If map(mx+1,my+1)=1 And (mx+1)*16-8=ort
my=my+1
orty=orty+8
ort=ort+8
richtung=9
EndIf
If map(mx,my-1)=3
my=my-1
richtung=8
EndIf
EndIf
DrawImage chipset,ort,orty,richtung
For y=0 To 29
For x=0 To 39
DrawImage chipset,x*16,y*16,map(x,y)
Next
Next
Flip
Forever


mein problem ist wenn er auf eine schräge geht,
dann läuft er nicht grade runter sondern immer in treppen weise (zickzack)
user posted image
das ladet er in die variable chipset

erklärung der variablen
richtung gibt nur an, welche pose der spieler (panzer) hat
mx und my sind ein 16*16 raster, das allerdings durch 16 geteilt ist also 1,1 ist nicht 16,16 sondern wird beim anzeigen erst mit 16 multipliziert
ort und orty gibt die in pixel position des panzers an
map(x,y) gibt die art des feldes an (sehe mx und my)
es gibt nur 4 arten 0 = leer 1 = \ 2 = _ 3 = / (sehe bild)
bewegung wird immer bis 16 bzw 0 gezählt, und dies erreicht, wird der terrain um 1 weiter gesetzt (mx+-1)
z hat die millisekunden gespeichert und macht nur den panzer langsamer (alle 50 millisecs um 4 pixel verschieben, wenn taste gedrückt)

ich hoffe das script ist leicht zu verstehen -.-

Justus

BeitragMo, Sep 05, 2005 14:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Schau dir mal die Funktionen Sinus und Cosinus an.

Sin(winkel#)
Cos(winkel#)
 

sen-me

BeitragMo, Sep 05, 2005 15:40
Antworten mit Zitat
Benutzer-Profile anzeigen
was meinst du damit?
das ich den panzer drehen soll?

das hilft aber wenig bei dem problem oda?
 

DasKlo

BeitragMo, Sep 05, 2005 15:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaube, er meint, das du den Panzer damit bewegen sollst:
BlitzBasic: [AUSKLAPPEN]

X = X + Geschwindigkeit * Cos(Winkel)
Y = Y + Geschwindigkeit * Sin(Winkel)
Aktuelles Projekt:
Demonspawn 29%
Gesamt CodeGröße: 614KB
Zeilen: 17967
OrdnerGröße: 151MB (wird allerdings noch weniger)
 

sen-me

BeitragMo, Sep 05, 2005 15:54
Antworten mit Zitat
Benutzer-Profile anzeigen
ja aber da gibts das problem mit dem terrain
er darf sich nur auf nummer
1,2 und 3 bewegen
bei 1 und 3 jeweils eine andre art

und wie soll ich das exakt rausfinden? schon allein dann bei der diagonalen grafik muss der panzer dann auf der liene und nicht in der liene sein (weil der panzer im tileset ja auch zu tief gestezt ist)

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group