Hm links und rechts gehen geht nicht

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Killer999

Betreff: Hm links und rechts gehen geht nicht

BeitragDo, März 17, 2005 14:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi bei mir will er irgend wie nicht nach links und rechts gehen nur springen.Ich weiß einfach nicht wieso.


BlitzBasic: [AUSKLAPPEN]
Graphics 640,480,32,2
SetBuffer BackBuffer()

frametimer = CreateTimer (30)

ClsColor 0, 0, 255

;Mauern
Global Mauer = LoadImage(\"GFX\wand.PNG\")
Global Mauer2 = LoadImage(\"GFX\wand2.PNG\")
MaskImage mauer, 0, 0, 255
MaskImage mauer2, 0, 0, 255

;Spiel Figur
Global Spieler = LoadImage (\"GFX\Dude.bmp\")
MaskImage Spieler, 0, 0, 255

; Position von Player
Global Player_pos_x = 200
Global Player_Pos_y = 320
Global Player_temp_y# = 0
Global jump
Global jumptimer#


Const rauf = 200, runter = 208, rechts = 205, links = 203, space = 57


Dim map (20,15)


datei = ReadFile(\"feld-test.txt\")
For x = 0 To 19
For y = 0 To 14
map(x, y) = ReadFloat(datei)
Print map(x, y)
Next
Next





Repeat
Cls
WaitTimer (frametimer)

DrawMap()
MoveDude()
DoJump()
DrawPlayer()


Flip

Until KeyHit (1)
End



Function DrawMap()
For y = 0 To 14
For x = 0 To 19
If map(x,y) = 1 Then
DrawImage mauer, x*32, y*32
EndIf
If map(x,y) = 2 Then
DrawImage mauer2, x*32, y*32
EndIf
Next
Next
End Function




Function MoveDude()
If KeyDown(links) Then
If map(Player_pos_x /32,(Player_pos_y +16) /32)=0 Then
Player_pos_x = Player_pos_x -4
If 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


Function DoJump()
;Überprüft ob Taste Space gedrückt wurde
If KeyDown (space) Then
If jump = False
jump = True
Player_temp_y = 10
EndIf
EndIf


If map((Player_pos_x +16) /32,Player_pos_y /32)=1 And jump = True Then
jump = False
Player_pos_y = Player_pos_y +1
EndIf

If map((Player_pos_x +16) /32,Player_pos_y /32)=2 And jump = True Then
jump = False
Player_pos_y = Player_pos_y +1
EndIf



If jump = True Then
Player_temp_y = Player_temp_y -0.33
Player_pos_y = Player_pos_y - Player_temp_y


If Player_temp_y =< 0 Then
If map((Player_pos_x +16) /32,(Player_pos_y +32) /32)=1 Then
jump = 0
temp = Player_pos_y /32
Player_pos_y = temp *32
EndIf
If map((Player_pos_x +16) /32,(Player_pos_y +32) /32)=2 Then
jump = 0
temp = Player_pos_y /32
Player_pos_y = temp *32
EndIf
EndIf
EndIf

;Gravity
If jump = False Then
If map((Player_pos_x +16) /32,(Player_pos_y +32) /32)=0 Then
jump = True
Player_temp_y = 0
EndIf
EndIf

;sorgt dafür, das die Figur nicht aus den Himmel schießt
If Player_pos_y =< 0 Then
Player_pos_y = 1
jump = True
Player_Temp_y = 0
EndIf

If Player_pos_y => 448 Then
Player_pos_y = 447
jump = False
EndIf

End Function




Function DrawPlayer()
DrawImage Spieler, Player_pos_x, Player_pos_y
End Function

Firstdeathmaker

BeitragDo, März 17, 2005 14:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm, vom Prinzip her würde ich das schon ganz anders machen. Aber dein Problem könnte man besser verstehen wenn du die Ressourcen (die Bilder und die Textdatei) freigeben würdest.

Hochladen könntest du das temporär auf:
http://s6.yousendit.com/
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image
 

Killer999

BeitragDo, März 17, 2005 14:36
Antworten mit Zitat
Benutzer-Profile anzeigen
aso ok hier die bilder

http://www.starcraft-online.de/error/GFX/Dude.bmp
http://www.starcraft-online.de...Player.PNG
http://www.starcraft-online.de/error/GFX/wand2.PNG
http://www.starcraft-online.de/error/GFX/wand.PNG

http://www.starcraft-online.de/error/map.bb
http://www.starcraft-online.de/error/feld-test.txt

Firstdeathmaker

BeitragDo, März 17, 2005 15:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Problem liegt offensichtlich in der Datei feld-test.txt

Alle dort abgespeicherten Zahlen sind >0, somit "denk" dein Programm an der Stelle

BlitzBasic: [AUSKLAPPEN]
Function MoveDude()
If KeyDown(links) Then
If map(Player_pos_x /32,(Player_pos_y +16) /32)=0 Then
Player_pos_x = Player_pos_x -4
If 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


dass dort kein Freiraum zum hingehen wäre und lässt es deshalb nicht zu dass du dorthin gehen kannst.
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image
 

Killer999

BeitragDo, März 17, 2005 16:42
Antworten mit Zitat
Benutzer-Profile anzeigen
ah danke

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group