What should I use for large 2d games

Blitz3D Forums/Blitz3D Programming/What should I use for large 2d games

The Forum Archive is locked. These are the original blitzbasic.com forums, kept so their posts can still be read and searched. No new topics, replies or edits can be made here. To join the conversation, head over to the Blitz3D+ forums.

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