Spielfigur Fließend bewegen lassen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

bruce185

Betreff: Spielfigur Fließend bewegen lassen

BeitragMi, Nov 09, 2005 22:37
Antworten mit Zitat
Benutzer-Profile anzeigen
hi,
also ich bin gerade dabei ein Pac Man Spiel zu proggen, und möchte daher mein Spielfigur Fließend bewegen lassen, aber es bewegt sich immer 32 Pixel also es zuck immer, hier mal den code:

BlitzBasic: [AUSKLAPPEN]

Graphics 1024,768,16,1
SetBuffer BackBuffer()

tileset = LoadAnimImage(\"tileset.bmp\",32,32,0,4)

spieler = LoadImage(\"spieler.bmp\")
MaskImage spieler,255,0,255

Dim map(31,23)

Data 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
Data 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
Data 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
Data 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
Data 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
Data 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
Data 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
Data 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
Data 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
Data 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
Data 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
Data 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
Data 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
Data 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
Data 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
Data 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
Data 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
Data 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
Data 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
Data 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
Data 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
Data 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
Data 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
Data 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2

For y=0To 23
For x=0 To 31
Read map(x,y)
Next
Next

spielerx = 10
spielery = 6
move=1


Repeat
Cls

For y=0To 23
For x=0 To 31
DrawBlock tileset,x*32,y*32,map(x,y)
Next
Next

If KeyDown(205) Then
If map(spielerx+1,spielery) < 2 Then
spielerx = spielerx + 1
move=1
EndIf
EndIf

If KeyDown(203) Then
If map(spielerx-1,spielery) < 2 Then
spielerx = spielerx - 1
move=1
EndIf
EndIf

If KeyDown(208) Then
If map(spielerx,spielery+1) < 2 Then
spielery = spielery + 1
move=1
EndIf
EndIf

If KeyDown(200) Then
If map(spielerx,spielery-1) < 2 Then
spielery = spielery - 1
move=1
EndIf
EndIf

If move=1 Then x=spielerx*32: y=spielery*32: DrawImage spieler,x,y
Delay 80
Flip
Until KeyHit(1)
End


für jede hilfe bin ich euch sehr dankbar Smile

Andreas
 

Florian

BeitragMi, Nov 09, 2005 22:49
Antworten mit Zitat
Benutzer-Profile anzeigen
https://www.blitzforum.de/view...r++tilemap

bruce185

BeitragDo, Nov 10, 2005 0:11
Antworten mit Zitat
Benutzer-Profile anzeigen
ich danke dir, habe es jetzt hinbekommen, noch eine frage hätte ich, und zwar wie kann ich einen Gegner in mein Spiel bewegen lassen automatisch? habe noch nie ein Gegner im Spiel reingemacht, deshalb bitte ich um eure hilfe, ich danke euch schonmal für die hilfe Smile

Andreas

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDo, Nov 10, 2005 1:22
Antworten mit Zitat
Benutzer-Profile anzeigen
zB: Fragst erst welche Entfernung größer ist X oder Y mit Hilfe von ABS(). Dann bewege den Gegner in Richtung des Spielers...

Oder wenn später Mauern vorkommen: Frage erst nach in welche Richtung überhaupt der Gegner gehen kann und stelle demnach Abfragbedingungen an.

Oder wenn der Gegner sich nicht in einer 'Winkelgasse' verfangen soll: Erstelle eine Pathfindingroutine. Beispiele hier gibs zu genüge.

bruce185

BeitragDo, Nov 10, 2005 5:24
Antworten mit Zitat
Benutzer-Profile anzeigen
danke, aber keine ahnung wie ich das machen soll, kannst du mir vieleicht ein beispiel posten?, ich wäre dir sehr dankbar, danke schonmal Smile

Andreas

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDo, Nov 10, 2005 12:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Bruce, hier mal ein Beispiel. Sorry, mir ist vorhin noch eine Idee eingefallen, wie man es ganz ohne If-Abfragen machen kann. Wenn du die Kollisionsabfrage machst solltest du darauf achten, daß der Gegner an der Mauer entlangslidet und nicht fest kleben bleibt. Ansonsten müsste man erst abgragen wo freie Felder sind und demnach die Bewegungsabfragen machen.

Code: [AUSKLAPPEN]
Graphics 400,400,0,2
SetBuffer BackBuffer()
HidePointer

While Not KeyHit(1)
 mx=MouseX()
 my=MouseY()
 xp=xp+Sgn(mx-xp)
 yp=yp+Sgn(my-yp)
 Rect mx-6,my-6,13,13,0
 Oval xp-6,yp-6,13,13,0
 Flip
 Cls
Wend
End

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDo, Nov 10, 2005 13:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Graphics 1024,768,16,1
SetBuffer BackBuffer()

tileset = LoadAnimImage("tileset.bmp",32,32,0,4)

spieler = LoadImage("spieler.bmp")
MaskImage tileset,255,0,255
MaskImage spieler,255,0,255

Dim map(31,23)

Data 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
Data 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
Data 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
Data 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
Data 2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2
Data 2,0,0,0,2,0,0,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2
Data 2,0,0,0,2,0,0,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2
Data 2,0,0,0,2,0,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,0,0,0,2
Data 2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2
Data 2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2
Data 2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2
Data 2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2
Data 2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2
Data 2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2
Data 2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2
Data 2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2
Data 2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2
Data 2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2
Data 2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2
Data 2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2
Data 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
Data 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
Data 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
Data 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2

For y=0 To 23
 For x=0 To 31
  Read map(x,y)
 Next
Next

spielerx = 10
spielery = 6
gegnerx=24
gegnery=4
move=1


Repeat
 Cls

 For y=0 To 23
  For x=0 To 31
   DrawBlock tileset,x*32,y*32,map(x,y)
  Next
 Next

 If KeyDown(205) Then If map(spielerx+1,spielery)<2 Then spielerx = spielerx + 1
 If KeyDown(203) Then If map(spielerx-1,spielery)<2 Then spielerx = spielerx - 1
 If KeyDown(208) Then If map(spielerx,spielery+1)<2 Then spielery = spielery + 1
 If KeyDown(200) Then If map(spielerx,spielery-1)<2 Then spielery = spielery - 1

 v=1-v
 If v=1 Then
  If map(gegnerx+Sgn(spielerx-gegnerx),gegnery)<2 Then gegnerx=gegnerx+Sgn(spielerx-gegnerx)
  If map(gegnerx,gegnery+Sgn(spielery-gegnery))<2 Then gegnery=gegnery+Sgn(spielery-gegnery)
 End If

 DrawImage spieler,spielerx*32,spielery*32
 Rect gegnerx*32,gegnery*32,32,32,1

 Delay 80 ; Naja, daß würde ich hier anders machen!
 Flip
Until KeyHit(1)
End

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group