Wer kann mir etwas erklären sry für die dumme überschrift

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Bassmaster

Betreff: Wer kann mir etwas erklären sry für die dumme überschrift

BeitragMi, Jan 23, 2008 10:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo

erst mal sry für diese dumme überschrift aber ich weiss net welcher Titel für meine Frage richtig wäre ^^

Also

Ich hab mir aus einem Tutorial ein Source Code das meiste verstehe ich aber an einer ecke da hakt es etwas irgendwie versteh ich die erklärung net so ganz die dabei ist.


Code: [AUSKLAPPEN]

;einfach wenn tastendruck dann

If KeyDown(208) Then

;wenn die position des spielers (px,py+1) mit einem tile kollidiert, dass in der array einen höeren
;wert als 2 hat geht der if-satz nicht weiter und die figur bleibt stehen 
;die 2 ist gleichzeitig das frame des tilesets

If map(px,py+1) < 2 Then


;die figur wird um ein tile bewegt
py = py + 1



;überträgt die spielerkoordinaten auf die x und y variablen der map und malt unsere figur
move = 1


End If
End If




If KeyDown(200) Then
If map(px,py-1) < 2 Then
py = py - 1
move = 1
End If
End If


If KeyDown(203) Then
If map(px-1,py) < 2 Then
px = px - 1
move = 1
End If
End If

If KeyDown(205) Then
If map(px+1,py) < 2 Then
px = px + 1
move = 1
End If
End If


;wenn move = 1 dann übertrage x auf px*32(*32 da die array so klein ist bei *1 oder *2 kommt schnell
;(array index out of bouds) und das wollen wir nicht wenn die koordinaten des spielers mit den
;koordinaten der map in verbindung gebracht worden sind, malen wir die figur
;auf der position x,y wir wollen die figur ja mit der map kollidieren lassen und nicht mit dem Nichts
;und da die map nun mal in die x und y koordinaten gespeichert wurden müssen wir das auch so
;berücksichtigen.
If move = 1 Then x = px * 32: y = py * 32:DrawImage char,x,y


Flip
Forever







Diesen Teil hier versteh ich nicht so richtig.

Code: [AUSKLAPPEN]

;wenn die position des spielers (px,py+1) mit einem tile kollidiert, dass in der array einen höeren
;wert als 2 hat geht der if-satz nicht weiter und die figur bleibt stehen 
;die 2 ist gleichzeitig das frame des tilesets

If map(px,py+1) < 2 Then



wäre nett wenn jemand die Zeit hätte es mir genauer zu erklären.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Jan 23, 2008 12:21
Antworten mit Zitat
Benutzer-Profile anzeigen
If KeyHit(208) Then ... ist Cursor nach unten. Auf einer ql:Dim -Map, besteht das Raster (oder Tabelle, wie man eben will) ja aus Zahlen. Die Zahlen selbst werden vom Programmierer selbst bestimmt, was sie zu bedeuten haben.

Beispiel:

0 = nichts
1 = Land
2 = Wasser
3 = Berg
4 = Wand ...

Bei jedem dieser Nummern erscheint ein individuelles Bild, welches an bestimmter Stelle angezeigt wird. Um die Spielfigur aber nicht durch Wände laufen zu lassen, muss natürlich in Laufrichtung auf Kollision geprüft werden. Bei einem Koordinatenursprung von link/oben ist die [+] YAchse nach unten, also in diesem Fall eben px,py Spielerposition mit dem Zusatz px,py+1. Bevor also überhaupt zu dem nächstem Tile gegangen wird, wird überprüft ob das Tile in der Richtung überhaupt begehbar ist.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

Bassmaster

BeitragMi, Jan 23, 2008 12:33
Antworten mit Zitat
Benutzer-Profile anzeigen
k thx


Code: [AUSKLAPPEN]

;die figur wird um ein tile bewegt
py = py + 1


Wenn ich z.b. die Pfeil Taste nach unten drücke dann bewegt sich die Figur ca. 1 cm über den Bildschirm aber wenn ich da eine 0 oder -1 eingebe dann bewegt sich ja meine Figur gar nicht mehr^^

Ich will halt das die z.b nur 3mm vorrückt wenn man einmal kurz die tastet betätigt welchen wert müsste man denn dann da eingeben.

Oder liegt das an meinem tileset ?

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Jan 23, 2008 13:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Auch wenn ich den oben gezeigte Code wirklick doof programmiert finde, so schaue dir mal folgende Zeile an und versuche zu verstehen, was da gemacht wird:

Code: [AUSKLAPPEN]
If move = 1 Then x = px * 32: y = py * 32:DrawImage char,x,y


Eine Tilebewegung ist auf einer Tilemap einfacher zu programmieren, als eine Pixelbewegung auf einer Tilemap, da die Kollisionsabfrage etwas schwieriger ist.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

Bassmaster

BeitragMi, Jan 23, 2008 13:56
Antworten mit Zitat
Benutzer-Profile anzeigen
[/code]
If move = 1 Then x = px * 32: y = py * 32:DrawImage char,x,y Delay 60
[/code]

So hab ichs jetzt gemacht aber das ist ja auch nicht 100%ig genau.

The_Nici

BeitragMi, Jan 23, 2008 14:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde kein Delay empfehlen. Es hält das ganze programm an.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Jan 23, 2008 14:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Bassmaster hat Folgendes geschrieben:
Wenn ich z.b. die Pfeil Taste nach unten drücke dann bewegt sich die Figur ca. 1 cm über den Bildschirm ...
Ich will halt das die z.b nur 3mm vorrückt wenn man einmal kurz die tastet betätigt


Ich vermute, dass du dir die Zeile eben nicht genau angesehen hast, denn die macht genau das, das ein einzelner Tastendruck deine Bewegung um den Faktor 32 vergrößert. Von daher überlege mal selbst, wie man es kleiner machen könnte. Wenn du pixelgenaue Bewegungsabläufe willst, so nimmt die Zeile komplett raus und berechne nur die px und py Variablen direkt mit dem DrawImage. Mit den Werten dann, kannst du ja immer noch die Geschwindigkeit festlegen.

edit1: Hier hast du was zum rumspielen:

Code: [AUSKLAPPEN]
Graphics 640,480,0,2
SetBuffer BackBuffer()

Local Timer=CreateTimer(100)
Local PX=200
Local PY=200


While Not KeyHit(1)
   
   If KeyDown(203) Then PX=PX-1
   If KeyDown(205) Then PX=PX+1
   If KeyHit(200) Then PY=PY-10
   If KeyHit(208) Then PY=PY+10
   
   Rect PX,PY,10,10,1
   
   WaitTimer(Timer)
   Flip 0
   Cls
Wend
End


Und bitte gewöhne dir gleich an, den Code einzurücken. Wink
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

Bassmaster

BeitragMi, Jan 23, 2008 15:34
Antworten mit Zitat
Benutzer-Profile anzeigen
ok thx

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group