Spieler drehen :-(

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Lakorta

Betreff: Spieler drehen :-(

BeitragMo, Nov 22, 2010 21:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich wieß, dieses Thema wurde schon öfters gemacht, und ich hab mir das auch schon über Forensuche öfters angeguckt, verstehe das aber nicht ganz. Ich bin dabei ein 2D SPiel mit Vogelperspektive zu machen, und der Spieler soll immer zur Maus hingucken. Diesen Code hab ich jetzt zusammengestellt, aber der funktioniert immer noch nicht:
Code: [AUSKLAPPEN]

;_Grafikeinstellungen_
Graphics 800,600,16,1
SetBuffer BackBuffer()
timer=CreateTimer(60)


;_Spielereinstellungen_
Dim player(359)
player(0)=LoadImage("Images\player.bmp")
MidHandle player(0)
TFormFilter 0
For angle=1 To 359
player(angle)=CopyImage(player(0))
RotateImage player(angle),angle
Next

player_x=400
player_y=300


;_Tilemap_
;tilemap=LoadAnimImage("Images\tilemap.bmp",50,50,0,3)

;LEGENDE:
;0=Gras
;1=Straße
;2=Mauer (Backstein)

;Dim map(20,20)
;Data 0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0
;Data 0,0,0,0,0,0,1,0,0,0,2,2,0,0,0,0
;Data 0,0,0,0,0,0,1,0,0,0,2,2,0,0,0,0
;Data 0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0
;Data 0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,1
;Data 1,1,1,1,1,1,1,1,1,0,0,0,0,1,0,0
;Data 0,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0
;Data 0,0,0,0,1,0,0,0,1,1,1,1,1,1,0,0
;Data 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0
;Data 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0
;Data 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0
;Data 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0

;For y=0 To 11
;For x=0 To 15
;Read map(x,y)
;Next
;Next


;_!_Hauptschleife_!_
While Not KeyHit(1)
Cls


;_Tilemap-laden_
;For y=0 To 11
;For x=0 To 15
;DrawImage tilemap,x*50,y*50,map(x,y)
;Next
;Next


;_Spielereinstellungen_
If KeyDown(17)
player_y=player_y-1
EndIf

If KeyDown(30)
player_x=player_x-1
EndIf

If KeyDown(31)
player_y=player_y+1
EndIf

If KeyDown(32)
player_x=player_x+1
EndIf

DrawImage player(angle),player_x,player_y


;_Ende_
WaitTimer timer
Flip 0
Wend
End


Die Fehlermeldung heißt: Array-Index out of Bounds oder so ähnlich. DIe Tilemap hab ich auch erstmal weggelassen, die funktioniert aber.
Ich hoffe ihr könnt mir helfen, schonmal danke im Vorraus

Mfg: Lakorta
---

mpmxyz

BeitragMo, Nov 22, 2010 21:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Nach dieser Schleife hat "angle" den Wert 360:
BlitzBasic: [AUSKLAPPEN]
For angle=1 To 359
...

Später nutzt du diesen Wert bei einem Arrayzugriff.
BlitzBasic: [AUSKLAPPEN]
DrawImage player(angle),player_x,player_y 

Da das Array aber keinen Eintrag 360 hat, kommt an dieser Stelle der Fehler.
Lösung: Sorge dafür, dass "angle" den richtigen Wert hat.
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMo, Nov 22, 2010 21:51
Antworten mit Zitat
Benutzer-Profile anzeigen
1.) Erst einmal ist dein Code total schlecht zu lesen, da nicht eingerückt. Gewöhne dir das am besten gleich an.

2.) Ansonsten darf angle nicht unter 0 und über 359 sein. Die Variable angle hat nach verlassen der Schleife den Wert 360.

3.) Mit dieser Methode ballerst du dir unnötig den Speicher voll. Und lange Ladezeiten hast du auch noch dabei. Verwende dazu lieber max. 90 Bilder mit 4° Winkeländerung, oder verwende gleich eine Grafiklibrary die das kann (siehe meine Signatur, falls du Blitz3D hast).
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Lakorta

BeitragDi, Nov 23, 2010 22:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, werde mich noch mal an den Code dransetzen. Danke für die Antworten Very Happy
---

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group