Kleines Problem mit drawimage und dim

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Killer999

Betreff: Kleines Problem mit drawimage und dim

BeitragSo, März 20, 2005 0:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

also ich habe mir ein kleinen Map Editor gebaut für mein game. Im editor kann man die spieler position hinzufügen. ok das geht auch aber wenn ich dann später die position auslesen will geht das nicht ganz.

hier lese ich das aus

BlitzBasic: [AUSKLAPPEN]
Global Player_pos_x = x*32
Global Player_Pos_y = y*32


If map(x, y) = 3 Then
DrawImage Spieler, Player_pos_x, Player_Pos_y
EndIf


er setzt sie immer oben links hin. schätze mal er bekommt die daten nicht
 

Blitzkrieg Bop

BeitragSo, März 20, 2005 0:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, ist klar!
Das x und das y oben bei den Globals hat nichts mit dem x/y Wert im bezügleichen Feld zu tun.
Mach daher z.B einfach so:
BlitzBasic: [AUSKLAPPEN]

If map(x, y) = 3 Then
DrawImage Spieler, x*tilesize,y*tilesize
EndIf

und wenn du die Korrdinaten extra zwischenspeichern willst:
BlitzBasic: [AUSKLAPPEN]

Global Player_pos_x
Global Player_Pos_y
If map(x, y) = 3 Then
Player_pos_x = x*tilesize
Player_pos_y = y*tilesize
EndIf
~ Hey Ho Let's Go ~
 

Killer999

BeitragSo, März 20, 2005 1:05
Antworten mit Zitat
Benutzer-Profile anzeigen
ok nun startet er da wo er starte soll nun bewegt er sich nicht mehr.

Irgend was fehlt. Hier ist mal meine move funktion

BlitzBasic: [AUSKLAPPEN]
Function Move()
If KeyDown(links) Then
If map(Player_pos_x /32,(Player_pos_y +16) /32)=0 Then
Player_pos_x = Player_pos_x -4
Player_pos_x =< 0 Then Player_pos_x = 1
EndIf
ElseIf KeyDown(rechts) Then
If map((Player_pos_x +32) /32,(Player_pos_y +16) /32)=0 Then
Player_pos_x = Player_pos_x +4
If Player_pos_x => 608 Then Player_pos_x = 607
EndIf
EndIf
End Function
 

Blitzkrieg Bop

BeitragSo, März 20, 2005 1:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm naja das kommt jetzt auch darauf an, wie du den Rest mit dem Array gemanagt hast! Ansonsten kann ich dir nur den Tipp geben die Variablen links und rechts global zu setzen!

BTW: Code einrücken bringt Überblick!
~ Hey Ho Let's Go ~
 

Killer999

BeitragSo, März 20, 2005 1:46
Antworten mit Zitat
Benutzer-Profile anzeigen
habe das nun so gemacht

BlitzBasic: [AUSKLAPPEN]
If map(x, y) = 3 Then               
DrawImage Spieler ,Player_pos_x+x*32, Player_pos_y++y*32
EndIf


jetzt geht es aber er berechnet er dann die ganze zeit *32 nun sind die kollisionen verschoben
 

Blitzkrieg Bop

BeitragSo, März 20, 2005 2:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm, ich weiß nicht was du da machst, es sieht aber falsch aus Smile
Also, mach es so:
Du berechnest vor deiner Hauptschleife die Position des Spielers, also machst du vor der Hauptschleife:
BlitzBasic: [AUSKLAPPEN]

If map(x, y) = 3 Then
Player_pos_x = x*tilesize
Player_Pos_y = y*tilesize
EndIf

So, nun hast du die Position, von der aus der Player startet.
Das heißt du kannst nun in der Hauptschleife ganz normal das hier schreiben:
BlitzBasic: [AUSKLAPPEN]

DrawImage Spieler,Player_pos_x,Player_Pos_y

Und schon klappt es mit dem Nachbarn, denn nun lässt du deinen Player ganz normal laufen.
Also je nachdem was du willst z.B
BlitzBasic: [AUSKLAPPEN]

If KeyDown(205) ;nach rechts
Player_pos_x = Player_pos_x + 10
EndIf
If KeyDown(203) ;nach links
Player_pos_x = Player_pos_x - 10
EndIf

und das ganze dann noch mit Player_pos_y. Dazu kommt dann natürlich noch deine Array Abfrage, ob der Spieler kollidiert oder so.
Ich hoffe das war verständlich. have fun...
~ Hey Ho Let's Go ~

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group