What should I use for large 2d games
Blitz3D Forums/Blitz3D Programming/What should I use for large 2d games| 
 | ||
| I'm making a game like the first link and I want a BIG level but all I have for drawing is paint. What should I use for big levels? thanks | 
| 
 | ||
| you create a floortile in paint and draw it over and over again on the screen(using blitz) (if you mean for a 2d game) to create the floor for the room. you can use other art programs like photoshop,gimp,paintshop,project dogwaffle then you create other tiles such as doors, and draw objects like keys, then create a mapeditor in blitz to place stuff in rooms and save the room as a data file. | 
| 
 | ||
| Thanks I was trying to put all the level in one bitmap file. too long! | 
| 
 | ||
| Tile Studio Mappy Two possibilities for you. | 
| 
 | ||
| Before I read LineOf7s' post I created my own Map Editor. I made it so that I would use a type to get the images into my game, but when I use this code in the game it says "memory access violation" If Z=1 For nground.ground=Each ground If frame=0 If Not ImagesCollide(nground\image,nground\X,nground\Y,0,you,400,300,0) nground\Y=nground\Y+6 Else For nground.ground=Each ground nground\Y=nground\Y-6 Next EndIf ElseIf frame=1 If Not ImagesCollide(nground\image,nground\X,nground\Y,0,you,400,300,0) nground\Y=nground\Y+6 nground\X=nground\X-6 Else For nground.ground=Each ground nground\Y=nground\Y-6 nground\X=nground\X+6 Next EndIf ElseIf frame=2 If Not ImagesCollide(nground\image,nground\X,nground\Y,0,you,400,300,0) nground\X=nground\X-6 Else For nground.ground=Each ground nground\X=nground\X+6 Next EndIf ElseIf frame=3 If Not ImagesCollide(nground\image,nground\X,nground\Y,0,you,400,300,0) nground\Y=nground\Y-6 nground\X=nground\X-6 Else For nground.ground=Each ground nground\Y=nground\Y+6 nground\X=nground\X+6 Next EndIf ElseIf frame=4 If Not ImagesCollide(nground\image,nground\X,nground\Y,0,you,400,300,0) nground\Y=nground\Y-6 Else For nground.ground=Each ground nground\Y=nground\Y+6 Next EndIf ElseIf frame=5 If Not ImagesCollide(nground\image,nground\X,nground\Y,0,you,400,300,0) nground\Y=nground\Y-6 nground\X=nground\X+6 Else For nground.ground=Each ground nground\Y=nground\Y+6 nground\X=nground\X-6 Next EndIf ElseIf frame=6 If Not ImagesCollide(nground\image,nground\X,nground\Y,0,you,400,300,0) nground\X=nground\X+6 Else For nground.ground=Each ground nground\X=nground\X-6 Next EndIf ElseIf frame=7 If Not ImagesCollide(nground\image,nground\X,nground\Y,0,you,400,300,0) nground\X=nground\X+6 nground\Y=nground\Y+6 Else For nground.ground=Each ground nground\Y=nground\Y-6 nground\X=nground\X-6 Next EndIf EndIf Next EndIf why? | 
| 
 | ||
| Turn Debug on. | 
| 
 | ||
| all ready is | 
| 
 | ||
| is the code above the whole program? do you know how to use the debug window? its best to create a window with a resolution less than your desktop;. so if your desktop is 800x600 create a window in blitz that is 640x480 then you can see the debug window and use it. also dont use fullscreen, until the bugs are gone. instead of the above code you could use an array for the frames e.g. dim frames(7) for x=1 to 7 for g.ground=each ground If Not ImagesCollide(nground\image,nground\X,nground\Y,0,you,400,300,0) nground\Y=nground\Y-6 nground\X=nground\X+6 Else For nground.ground=Each ground nground\Y=nground\Y+6 nground\X=nground\X-6 Next EndIf next next by the way, the reason you are getting an error is because you are using the same pointer to cycle through a list of types within a loop using the same pointer e.g. for nground.ground=each ground for nground.ground=each ground next next will give an error but: for n.ground=each ground for g.ground=each ground next next wont give you an error | 
| 
 | ||
| O sorry and since I don't plane to sell these you guys can have the codes. here is the code for the map editor 
Graphics 640,480,32,2
SetBuffer BackBuffer()
tree=LoadImage("tree.bmp")
bush=LoadImage("bush.bmp")
grass=LoadImage("grass.bmp")
arrow=LoadImage("arrow.bmp")
ra=LoadImage("rightarrow.bmp")
la=LoadImage("leftarrow.bmp")
ua=LoadImage("uparrow.bmp")
da=LoadImage("downarrow.bmp")
dground=WriteFile("Data.dat")
CloseFile(dground)
ClsColor 0,200,0
Type image
	Field image,X,Y,itype,OX,OY
End Type
HidePointer()
While Not KeyDown(1)
Cls
If MouseHit(1)
If move=1
If ImagesCollide(ua,300,0,0,arrow,MouseX(),MouseY(),0)
BY=BY+5
ElseIf ImagesCollide(la,0,240,0,arrow,MouseX(),MouseY(),0)
BX=BX+5
ElseIf ImagesCollide(ra,610,240,0,arrow,MouseX(),MouseY(),0)
BX=BX-5
ElseIf ImagesCollide(da,300,440,0,arrow,MouseX(),MouseY(),0)
BY=BY-5
EndIf
EndIf
If ImagesCollide(tree,600,440,0,arrow,MouseX(),MouseY(),0)
something=1
ElseIf ImagesCollide(bush,0,440,0,arrow,MouseX(),MouseY(),0)
something=2
Else
If something>0 And MouseY()<400 And move=0
newimage.image=New image
If something=1
newimage\image=LoadImage("tree.bmp")
newimage\itype=1
newimage\X=MouseX()
newimage\Y=MouseY()
newimage\OX=newimage\X
newimage\OY=newimage\Y
ElseIf something=2
newimage\image=LoadImage("bush.bmp")
newimage\itype=2
newimage\X=MouseX()
newimage\Y=MouseY()
newimage\OX=newimage\X
newimage\OY=newimage\Y
EndIf
EndIf
EndIf
EndIf
If MouseHit(3)
If move=0
move=1
ElseIf move=1
move=0
EndIf
EndIf
For newimage.image=Each image
DrawImage newimage\image,BX+newimage\X,BY+newimage\Y
Next
Color 150,150,150
Rect 0,430,640,50
DrawImage ua,300,0
DrawImage la,0,240
DrawImage ra,610,240
DrawImage da,300,440
DrawImage tree,600,440
DrawImage bush,0,440
If something=0
DrawImage arrow,MouseX(),MouseY()
ElseIf something=1
DrawImage tree,MouseX(),MouseY()
ElseIf something=2
DrawImage bush,MouseX(),MouseY()
EndIf
If KeyDown(29) And KeyDown(31)
ground=OpenFile("Data.dat")
For newimage.image=Each image
WriteInt(ground,newimage\itype)
WriteInt(ground,newimage\X)
WriteInt(ground,newimage\Y)
Next
CloseFile(ground)
EndIf
Flip
Wend
End
and here is the game it's not nearly finished yet though 
Graphics 800,600
AutoMidHandle True
SetBuffer BackBuffer()
profile1=LoadImage("programmer1 profile.bmp")
pointer=LoadImage("arrow.bmp")
ScaleImage pointer,.5,.7
newgame=LoadAnimImage("new game.bmp",75,16,0,2)
loadgame=LoadAnimImage("load game.bmp",90,16,0,2)
rise=LoadImage("the rise.bmp")
triseback=LoadImage("the rise back.bmp")
Type ground
	Field image,itype#,X,Y
End Type
groundimage=OpenFile("Data.dat")
While Not Eof(groundimage)
nground.ground=New ground
nground\itype#=ReadInt(groundimage)
nground\X=ReadInt(groundimage)
nground\Y=ReadInt(groundimage)
If nground\itype#=1
nground\image=LoadImage("tree.bmp")
ElseIf nground\itype#=2
nground\image=LoadImage("bush.bmp")
EndIf
Wend
Color 0,0,255
GX=300
GY=100
HidePointer
MoveMouse 400,300
.rechoose
While ngorlg=0
Cls
If KeyDown(1)
End
EndIf
If ImagesCollide(newgame,390,200,0,pointer,MouseX()+30,MouseY()+46,0)
what=1
FlushKeys()
If MouseHit(1)
ngorlg=1
EndIf
Else
what=0
EndIf
If ImagesCollide(loadgame,400,250,0,pointer,MouseX()+30,MouseY()+46,0)
what2=1
X=398
FlushKeys()
If MouseHit(1)
ngorlg=2
EndIf
Else
X=400
what2=0
EndIf
X2=X2+1
TileImage triseback,X2,0,0
TileImage rise,398,0
DrawImage newgame,390,200,what
DrawImage loadgame,X,245,what2
DrawImage pointer,MouseX()+30,MouseY()+46
If rchoose=1
Text 400,305,"No data files exist",True
EndIf
Flip
Wend
While ngorlg=1
Cls
If KeyHit(1)
End
EndIf
Locate 320,0
FlushKeys()
TileImage triseback,X2,0,0
TileImage rise,398,0
Color 0,0,0
If ImagesCollide(pointer,MouseX(),MouseY(),0,profile1,200,200,0)
If writ>=0*2 And writ<1*2
Write"B"
ElseIf writ>=1*2 And writ<2*2
Write"Bl"
ElseIf writ>=2*2 And writ<3*2
Write"Bli"
ElseIf writ>=3*2 And writ<4*2
Write"Blit"
ElseIf writ>=4*2 And writ<5*2
Write"Blitz"
ElseIf writ>=5*2 And writ<6*2
Write"Blitz "
ElseIf writ>=6*2 And writ<7*2
Write"Blitz B"
ElseIf writ>=7*2 And writ<8*2
Write"Blitz BA"
ElseIf writ>=8*2 And writ<9*2
Write"Blitz BAS"
ElseIf writ>=9*2 And writ<10*2
Write"Blitz BASI"
ElseIf writ>=10*2 And writ<11*2
Write"Blitz BASIC"
ElseIf writ>=11*2 And writ<12*2
Write"Blitz BASIC "
ElseIf writ>=12*2 And writ<13*2
Write"Blitz BASIC P"
ElseIf writ>=13*2 And writ<14*2
Write"Blitz BASIC Pr"
ElseIf writ>=14*2 And writ<15*2
Write"Blitz BASIC Pro"
ElseIf writ>=15*2 And writ<16*2
Write"Blitz BASIC Prog"
ElseIf writ>=16*2 And writ<17*2
Write"Blitz BASIC Progr"
ElseIf writ>=17*2 And writ<18*2
Write"Blitz BASIC Progra"
ElseIf writ>=18*2 And writ<19*2
Write"Blitz BASIC Program"
ElseIf writ>=19*2 And writ<20*2
Write"Blitz BASIC Programe"
ElseIf writ>=20*2
Write"Blitz BASIC Programer"
EndIf
writ=writ+1
FlushKeys()
If MouseHit(1)
person=LoadAnimImage("programmer1.bmp",43,46,0,3)
choose=1
EndIf
Else
writ=0
EndIf
FlushKeys()
If MouseX()>730 And MouseY()>540 And MouseHit(1) And choose=1
ngorlg=0
EndIf
X2=X2+1
Color 255,0,0
If choose=1
Text 400,475,"The Blitz BASIC programmer",True
EndIf
Text 400,450,"You have chosen",True
Text 730,540,"NEXT"
DrawImage profile1,200,200
DrawImage pointer,MouseX()+30,MouseY()+46
Flip
Wend
If ngorlg=2
;Number of files to check for program
files_count=3
Dim files$(files_count)
;Filenames
files$(1) = "GAME_01.DAT"
files$(2) = "GAME_02.DAT"
files$(3) = "GAME_03.DAT"
;Check files
For d = 1 To files_count
checkfile = FileType(files$(d))
If checkfile <> 1
ngorlg=0
rchoose=1
Goto rechoose
EndIf
Next
EndIf
While ngorlg=2
Flip
Wend
you=person
Const rotations = 8
Dim imagearray(rotations)
For frame=0 To rotations-1
	imagearray(frame) = CopyImage(you)
	RotateImage imagearray(frame), frame*360/rotations
Next
frame=0
ClsColor 0,200,0
ShowPointer()
While Not KeyDown(1)
Cls
If KeyDown(203)
frame=frame-1
If frame<0
frame=rotations - 1
EndIf
EndIf
If KeyDown(205)
frame=frame+1
If frame >= rotations
frame=0
EndIf
EndIf
If Not KeyDown(200) Or KeyDown(208)
position=0
EndIf
For nground.ground=Each ground
DrawImage nground\image,nground\X,nground\Y
Next
If KeyDown(200)
position=position+1
Z=1
Else
Z=0
EndIf
If Z=1
For nground.ground=Each ground
If frame=0
If Not ImagesCollide(nground\image,nground\X,nground\Y,0,you,400,300,0)
nground\Y=nground\Y+6
Else
For nground.ground=Each ground
nground\Y=nground\Y-6
Next
EndIf
ElseIf frame=1
If Not ImagesCollide(nground\image,nground\X,nground\Y,0,you,400,300,0)
nground\Y=nground\Y+6
nground\X=nground\X-6
Else
For nground.ground=Each ground
nground\Y=nground\Y-6
nground\X=nground\X+6
Next
EndIf
ElseIf frame=2
If Not ImagesCollide(nground\image,nground\X,nground\Y,0,you,400,300,0)
nground\X=nground\X-6
Else
For nground.ground=Each ground
nground\X=nground\X+6
Next
EndIf
ElseIf frame=3
If Not ImagesCollide(nground\image,nground\X,nground\Y,0,you,400,300,0)
nground\Y=nground\Y-6
nground\X=nground\X-6
Else
For nground.ground=Each ground
nground\Y=nground\Y+6
nground\X=nground\X+6
Next
EndIf
ElseIf frame=4
If Not ImagesCollide(nground\image,nground\X,nground\Y,0,you,400,300,0)
nground\Y=nground\Y-6
Else
For nground.ground=Each ground
nground\Y=nground\Y+6
Next
EndIf
ElseIf frame=5
If Not ImagesCollide(nground\image,nground\X,nground\Y,0,you,400,300,0)
nground\Y=nground\Y-6
nground\X=nground\X+6
Else
For nground.ground=Each ground
nground\Y=nground\Y+6
nground\X=nground\X-6
Next
EndIf
ElseIf frame=6
If Not ImagesCollide(nground\image,nground\X,nground\Y,0,you,400,300,0)
nground\X=nground\X+6
Else
For nground.ground=Each ground
nground\X=nground\X-6
Next
EndIf
ElseIf frame=7
If Not ImagesCollide(nground\image,nground\X,nground\Y,0,you,400,300,0)
nground\X=nground\X+6
nground\Y=nground\Y+6
Else
For nground.ground=Each ground
nground\Y=nground\Y-6
nground\X=nground\X-6
Next
EndIf
EndIf
Next
EndIf
If KeyDown(208)
position=position-1
If position=<0
position=3
EndIf
EndIf
DrawImage imagearray(frame),400,300,position Mod 3
Flip
Delay 75
Wend
End
 | 
| 
 | ||
| After having a quick look at your code I would say, 1.use Functions especially for the bit that writes out 'blitz programmer'. 2.use XML for the map file format. do a search for blitz and XML to download the XML file reader that someone programmed. also download microsofts XML file editor 'xml notepad' 3.use [codebox] instead of [code] on the forums | 
| 
 | ||
| FishEd is very nice, and only £5. | 
| 
 | ||
| Without looking too deeply into your code... May I suggest: http://www.blitzbasic.com/codearcs/codearcs.php?code=1229 Secondly the Blitz Programmer thing, take a look at the left function... You'll be able to say Write Left("Blitz Programmer",n) |