Array Befehl geht nicht

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

 

Skylla

Betreff: Array Befehl geht nicht

BeitragSo, Nov 14, 2010 2:56
Antworten mit Zitat
Benutzer-Profile anzeigen
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)
 

CO2

ehemals "SirMO"

BeitragSo, Nov 14, 2010 3:03
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BladeRunner

Moderator

BeitragSo, Nov 14, 2010 3:06
Antworten mit Zitat
Benutzer-Profile anzeigen
dim ist wie alle anderen Befehlsbeschreibungen der Hilfesektion nur für BB (B3D, BlitzPlus) gültig.
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

ChaosCoder

Betreff: Re: Array Befehl geht nicht

BeitragSo, Nov 14, 2010 5:22
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Nov 14, 2010 15:43
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Nov 14, 2010 15:50
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Nov 14, 2010 20:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Könnt ihr mir eigentlich ein gutes Buch über BlitzMax empfehlen?

lg und Danke für eure Hilfe
Skylla
 

Macintosh

BeitragSo, Nov 14, 2010 20:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Gibts glaub ich gar keins

BladeRunner

Moderator

BeitragSo, Nov 14, 2010 20:59
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Nov 16, 2010 18:32
Antworten mit Zitat
Benutzer-Profile anzeigen
@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 Wink
 

Skylla

BeitragDi, Nov 16, 2010 20:55
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Wink



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

BeitragSa, Nov 20, 2010 2:37
Antworten mit Zitat
Benutzer-Profile anzeigen
und? kann mir jemand sagen was mich falsch mache?
 

undefined

BeitragSa, Nov 20, 2010 3:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist ganz schön nervig mit der Unmenge an auskommentiertem Code Exclamation

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. Arrow https://www.blitzforum.de/foru...ps+counter

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group