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

BassmasterBetreff: Wer kann mir etwas erklären sry für die dumme überschrift |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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. |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ? |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
[/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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich würde kein Delay empfehlen. Es hält das ganze programm an. | ||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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. ![]() |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
Bassmaster |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok thx | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group