map editor help.
BlitzMax Forums/BlitzMax Beginners Area/map editor help.
| ||
heres my current code. Please look at the createtile function and tell me what I'm doing wrong. Ill post the first code which doesnt work because of an index out of bounds in an array and the other code which works but wothout the createtile function. CODE 1: Strict Rem MapEditor Version 0.1 Author : Amon Compiler : BlitzMax EndRem Incbin "backblock.png" Incbin "icon.png" Graphics 800,600,16,0 SetMaskColor 0,0,0 Global tiles:TImage = LoadAnimImage("incbin::backblock.png",50,50,0,9,MASKEDIMAGE) Global icon:TImage = LoadImage("incbin::icon.png",MASKEDIMAGE) Global tileframe:Int = 0 Global mapx:Int = 16 Global mapy:Int = 12 Global x:Int Global y:Int Global image:String Global map:Int[mapx,mapy] Type tile Field x:Int, y:Int Field image End Type Repeat Cls drawtile() drawcurser() changetile() If MouseDown(KEY_MOUSELEFT) Then createtile() Flip Until KeyHit(KEY_ESCAPE) Function drawtile() Local xpos:Int = 0 Local ypos:Int = 550 Local frame:Int = 0 For Local i:Int = 0 To 8 DrawImage tiles,xpos,ypos,frame xpos:+50 frame:+1 If frame > 8 Then frame = 0 Next End Function Function drawcurser() Local x:Int = MouseX()/50 Local y:Int = MouseY()/50 DrawImage icon,x*50,y*50,0 End Function Function createtile() Local t:tile = New tile t.x = MouseX() t.y = MouseY() t.image = tiles map[mapx,mapy] = tileframe End Function Function changetile() If MouseHit(KEY_MOUSERIGHT) tileframe:+1 If tileframe > 8 Then tileframe = 0 End If End Function CODE 2 works : Global tiles:TImage = LoadAnimImage("incbin::backblock.png",50,50,0,9,MASKEDIMAGE) Global icon:TImage = LoadImage("incbin::icon.png",MASKEDIMAGE) Global tileframe:Int = 0 Global mapx:Int = 16 Global mapy:Int = 12 Global x:Int Global y:Int Global image:String Global map:Int[mapx,mapy] Type tile Field x:Int, y:Int Field image End Type Repeat Cls drawtile() drawcurser() changetile() Flip Until KeyHit(KEY_ESCAPE) Function drawtile() Local xpos:Int = 0 Local ypos:Int = 550 Local frame:Int = 0 For Local i:Int = 0 To 8 DrawImage tiles,xpos,ypos,frame xpos:+50 frame:+1 If frame > 8 Then frame = 0 Next End Function Function drawcurser() Local x:Int = MouseX()/50 Local y:Int = MouseY()/50 DrawImage icon,x*50,y*50,0 End Function Function changetile() If MouseHit(KEY_MOUSERIGHT) tileframe:+1 If tileframe > 8 Then tileframe = 0 End If End Function here are the images ![]() ![]() |
| ||
Amon, It's pretty simple. '*This is where you are defining the size of the map array Global mapx:Int = 16 Global mapy:Int = 12 '*Now the array is create with the size of 16x12 tiles. '*REMEMBER: This starts from ZERO NOT ONE Global map:Int[mapx,mapy] '* Later you try and change the value inside the map array. '* What your not understanding is that you are trying to change tile (16,12) '* If you count from 0 it would actualy be (15,11) map[mapx,mapy] = tileframe 'So in that case, the following would work map[mapx-1,mapy-1] = tileframe |