Array Befehl geht nicht
Übersicht

SkyllaBetreff: Array Befehl geht nicht |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
ich bin neu im forum und habe ein problem mit manchen befehlen bei blitz max. zb. mit dem dim befehl. der befehl geht bei mir in blitz max nicht und ich weiß nicht welcher befehl hier funktioniert. ich habe auch gemerkt das einige befehle, die in der hilfe funktion dieses forum aufgelistet sind auch nicht so richtig funktionieren wollen. Kann mir jemand mit dem dim weiterhelfen? Ich wollte damit eine Tilemap erstellen. ich habe das forum zu diesem thema schon abgesucht aber das meiste was ich gefunden habe war für blitz3d also mit dem dim befehl ich hab das mit der tilemap mal nach der erklärung von bladerunner gemacht https://www.blitzforum.de/foru...t=tilemaps Code: [AUSKLAPPEN] Dim Map(5,5)
for y=0 to 5 for x = 0 to 5 read map(x,y) next next ; Hier wurde die Karte eingelesen. Lass das Programm mal im Debugger durchlaufen um zu verstehen warum man x und y vertauschen muss ;) graphics 640,480 tiles = loadanimimage("tiles.png",32,32,0,2);hier werden die Tiles geladen repeat cls for y=0 to 5 for x = 0 to 5 drawimage tiles,x*32,y*32,map(x,y); und hier werden sie gezeichnet next next flip until keyhit(1) ;die Karte, die mit READ eingelesen wird: data 0,0,0,0,0,0 data 0,1,0,0,1,0 data 0,0,0,0,0,0 data 0,0,1,1,0,0 data 1,0,0,0,0,1 data 0,1,1,1,1,0 hoffe mir kann jemand helfen. PS: kennt jemand eine seite auf der man die blitz max befehle nachlesen kann? (also nur die blitz max befehle) |
||
CO2ehemals "SirMO" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du weißt, das in der Hilfe meines wissens nach nur BlitzBasic3D, BlitzPlus und BlitzBasic2D Befehle angezeigt werden?
Außerdem ist das nicht die Syntax von BlitzMax, sondern von BlitzBasic... In BlitzMax werden Kommentare nicht mit dem Semikolon (" ; "), sondern mit einem oberstrich (" ' ") markiert. Und hier gibt es auch ein schönes tutorial (hoffe ich, google hats ausgespuckt): http://de.wikibooks.org/wiki/B...C3%BChrung mfG, CO2 |
||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
dim![]() BMax hat eine eigene Syntax, deswegen sind diese Befehlsbeschreibungen nur sehr begrenzt zu empfehlen. Eine umfassende deutsche Hilfe für BMax existiert meines Wissens nach nicht, allerdings kann die IDE mit einigem an Hilfen aufwarten. Noch besse wird es wenn Du hotdocs installierst. Ein Array unter BMax wird mit eckigen Klammern deklariert: local bla:int[5] 'deklariert ein array mit Integern von fünf Elementen Größe (also 0-4). Arrays sind unter Bmax objekte und haben daher zB. die möglichkeit ihre Größe mit bla.length abzufragen. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
ChaosCoderBetreff: Re: Array Befehl geht nicht |
![]() Antworten mit Zitat ![]() |
---|---|---|
Skylla hat Folgendes geschrieben: PS: kennt jemand eine seite auf der man die blitz max befehle nachlesen kann? (also nur die blitz max befehle) Versuch mal in der IDE die Taste F1 zu drücken (bzw. zweimal hintereinander) und dann klick dich da mal ein bisschen durch. Wenn du über einem Befehl zweimal F1 drückst, wird die Hilfe zu dem Befehl aufgerufen. (Dies funktioniert jedenfalls in der Standard-BlitzMax-IDE)
|
||
Projekte: Geolaria | aNemy
Webseite: chaosspace.de |
Skylla |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok ich hab das jetzt mal ausprobiert aber jetzt habe ich ein problem mit dem read und mit dem data befehl.
Code: [AUSKLAPPEN] Local Map:Int [5,5]
For y=0 To 5 For x = 0 To 5 read map[x,y] Next Next ' Hier wurde die Karte eingelesen. Lass das Programm mal im Debugger durchlaufen um zu verstehen warum man x und y vertauschen muss ;) Graphics 640,480,0,0 tiles = LoadAnimImage("tiles.png",32,32,0,2)'hier werden die Tiles geladen Repeat Cls For y=0 To 5 For x = 0 To 5 DrawImage tiles,x*32,y*32,map[x,y]' und hier werden sie gezeichnet Next Next Flip Until KeyHit(1) 'die Karte, die mit READ eingelesen wird: data 0,0,0,0,0,0 data 0,1,0,0,1,0 data 0,0,0,0,0,0 data 0,0,1,1,0,0 data 1,0,0,0,0,1 data 0,1,1,1,1,0 WaitKey |
||
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die entsprechenden Befehle heißen jetzt "DefData" und "ReadData".
Bedenke außerdem, dass ein Array "xyz:Int[5]" nur die Größe 5 hat und dass es daher keinen Eintrag mit dem index 5 gibt. mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
Skylla |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Könnt ihr mir eigentlich ein gutes Buch über BlitzMax empfehlen?
lg und Danke für eure Hilfe Skylla |
||
Macintosh |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Gibts glaub ich gar keins | ||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nein, gibt es nicht. Du wirst dich da autodidaktisch bewegen müssen, aber es gibt ja bb.com und das bf.de. Das macht reichlich Informationen. Dann wie schon erwähnt die eingebaute Hilfe bzw. die aufbereitete Version per Hotdocs. | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Skylla |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@Bladerunner
vielen dank für den tipp mit hotdocs. ich hab mir das jetzt mal gedownloadet und angeschaut und das sieht echt super aus. jetzt weiß ich auch endlich was ich für imports machen muss ![]() |
||
Skylla |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich hab nun ein problem beim zeichnen einzelner player tiles aus einem tileset.
(Der Fehler: attemp to index array element beyond array lenght) ich will wenn ich zb die linke pfeiltaste drücke, dass sich ein objekt nach links bewegt und an dieser stelle sollen abwechselnd 3 verschiedene tiles gezeichnet werden (für die laufanimation). das mit dem zeichnen eines tiles habe ich ja schon ausprobiert (ist ja mein hauptproblem). Aber wie soll ich das mit 3 verschiedenen tiles machen? ausserdem ist mein fps zähler nicht funktionsfähig waran liegt das? ich hoffe ihr könnt mir helfen lg Skylla ![]() Code: [AUSKLAPPEN] Import brl.wavloader
Graphics 640, 480, 0, 0 Type TPlayer Field x:Float Field y:Float Field speed:Float Field scale:Float Field image:TImage Function Create:TPlayer(image:TImage, scale:Float, speed:Float, xstart, ystart) Player:TPlayer = New TPlayer Player.x = xstart Player.y = ystart Player.speed = speed Player.image = image Player.scale = scale Return Player End Function Method UpdateState() If KeyDown(KEY_LEFT) X :- speed [color=red] DrawImage Player_spr, x, y, 10[/color] ElseIf KeyDown(KEY_RIGHT) X :+ speed EndIf ' If KeyDown(KEY_UP) ' y :- speed ' ElseIf KeyDown(KEY_DOWN) ' y :+ speed ' EndIf If X < -16 X = 640 ElseIf X > 640 X = -16 EndIf End Method ' Method DrawSelf() ' SetScale(scale, scale) ' DrawImage Player_spr, MouseX(), MouseY(), 10 ' SetScale(1, 1) ' End Method End Type Type TFps Field x Field y ' Field fps Field X_Frames Field X_Framezeit Field X_FramesProSekunde Function Create:TFps(xstart, ystart) FPS:TFps = New TFps FPS.x = xstart FPS.y = ystart ' Fps.fps = 0 X_Frames = X_Frames + 1 If X_Framezeit + 1000 < MilliSecs() Then X_FramesProSekunde = X_Frames X_Frames = 0 X_Framezeit = MilliSecs() EndIf Return FPS End Function Method UpdateState() ' If KeyHit(KEY_F) ' If fps = 1 ' fps = 0 ' ElseIf fps = 0 ' fps = 1 ' EndIf ' ' If fps = 1 DrawText("FPS: " + X_Frames, x, y) ' EndIf ' EndIf End Method End Type '------------------------------------------------------------------------------------------------------------ ' LOADING '------------------------------------------------------------------------------------------------------------ ' Graphics SetMaskColor (255, 0, 255) Global Player_spr = LoadAnimImage("gfx/Spiderman.png", 16, 16, MASKEDIMAGE, 0, 12) If Player_spr = Null Then End DebugLog "animimage loaded" ' Sound Global sound1:TSound = LoadSound("sound.wav", True) '------------------------------------------------------------------------------------------------------------ ' Main Loop '------------------------------------------------------------------------------------------------------------ 'PlaySound sound1 Player:TPlayer = TPlayer.Create(Player_spr, 1.5, 0.03, 300.0, 416.0) FPS:TFps = TFps.Create(570, 5) Repeat FPS.UpdateState() Player.UpdateState() Player.DrawSelf() Flip Cls Until KeyHit(KEY_ESCAPE) Or AppTerminate() |
||
Skylla |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
und? kann mir jemand sagen was mich falsch mache? | ||
undefined |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das ist ganz schön nervig mit der Unmenge an auskommentiertem Code ![]() Ein Array konnte ich darin nicht finden. Aber generell bedeutet diese Meldung, dass Du versuchst einen Index < 0 oder > ( Length - 1 ) anzusprechen. Wenn der Fehler bei DrawImage auftritt bedeutet es also, dass Du einen negativen Index oder einen Index > ( Bilderanzahl - 1 ) zum Zeichnen auswählst. Dein FPS-Counter ist völlig verkorkst. ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group