Type cast int to string
BlitzMax Forums/BlitzMax Beginners Area/Type cast int to string
| ||
TileNumbers are stored in an array (TileNumber[0. 0] = 1), And are used To Print the map. To avoid using a lengthy Select Case statement, I am trying To convert the integer value from the TileNumber array To a String And use String concantenation To draw the image To the screen as follows. I am getting the error message "Unable to convert from 'String' to 'TImage'" Images are loaded as follows Local Tile1 = LoadImage("Incbin::grassTile.bmp") Local Tile2 = LoadImage("Incbin::rockTile.bmp") Local Tile3 = LoadImage("Incbin::sandTile.bmp") The screen is printed using the following loop. For x = 0 To 24 For y = 0 To 17 Number = Int TileNumber[x, y] TileString = String(Number) DrawImage "Tile"+TileString, x*32, y*32 Next Next |
| ||
Tile1 is a variable name. You can't do something like MyVar$ = "Tile" + "1" and then DrawImage MyVar You can refer to a variable with the name, but you can't 'build up' a variable string that points to that variable. Tile1 is a pointer to a location memory, while "Tile1" is a string variable, and points to a different memory location. What you can, is something like: - rename your tiles like tile1.png, tile2.png,...,tileN.png - make a loop to load the tiles in an array of images: for n = 1 to num_of_tiles arr(n) = loadimage("tile" + n + ".png") next - then you can access to it from within a loop: for n = 1 to num_of_tiles drawimage arr(n),x,y next Hope it helps, Sergio. |
| ||
Either load the images into an array or put them into one large bitmap and use that as an animimage. |
| ||
What they mean is:Local Tile:TImage[3] Tile[0] = LoadImage("Incbin::grassTile.bmp") Tile[1] = LoadImage("Incbin::rockTile.bmp") Tile[2] = LoadImage("Incbin::sandTile.bmp") For x = 0 To 24 For y = 0 To 17 DrawImage Tile[TileNumber[x, y]], x*32, y*32 Next Next |
| ||
I think what they mean is string parsing into variable names, which is only possible in script languages. |
| ||
If he really wanted he could use a hashtable, someone made one in blitzmax. |