Dear All,
I was wondering if you could help me?
Im trying to do a columns game. I found some code from a Dark Basic program, and tried to convert it. But im not having much luck. www.darkforge.co.uk and click on files - i've included the code below.
If you could help me by sending me some code to do a columns game (or help me convert it - im not interested in the intro or other stuff - just the main game code - as i'll eventually do my own jewels gfx.) I'd really appreciate it.
I was wondering if you could help me?
Im trying to do a columns game. I found some code from a Dark Basic program, and tried to convert it. But im not having much luck. www.darkforge.co.uk and click on files - i've included the code below.
If you could help me by sending me some code to do a columns game (or help me convert it - im not interested in the intro or other stuff - just the main game code - as i'll eventually do my own jewels gfx.) I'd really appreciate it.
set display mode 320,240,16 hide mouse sync rate 0 sync on ` 0 = keyboard, 1 = joystick, 2 = both ` 0 = off, 1 = on ` 1 = one player, 2 = 2 players! ` Global arrays so we can access from within functions mainly For 2 player expansion Dim control(1) Dim music(1) Dim players(1) music(0)=0 control(0)=2 players(0)=1 ` music maestro? (can use mp3 Or Mid) If file exist("columns.mp3") music(0)=1 load music "columns.mp3",1 EndIf If file exist("columns.mid") music(0)=1 load music "columns.mid",1 EndIf ` Create our scroll-Text fonts, prep it all, etc... load image "font.bmp",500 paste image 500,0,0 i=165 For y=0 To 32 Step 16 For x=0 To 295 Step 15 get image i,x,y,x+16,y+16 inc i Next x Next y Dim scrolltext$(20) Dim scrollnext$(20) Dim scrolltemp$(20) Dim scroller_offset#(1) Dim scroller_count(1) Dim scroller_speed#(1) scroller_offset#(0)=0 scroller_count(0)=0 scroller_speed#(0)=2 getscrolltext(0) Cls 0 load bitmap "bmpack22.bmp",7 ` title1, title2, 1player, jewels, 2player, highscore, gameover get image 1,640,0,960,240 get image 2,0,240,320,480 get image 3,0,0,320,220 get image 4,637,240,959,256 get image 5,320,0,640,220 get image 6,320,240,640,460 get image 7,640,256,728,270 ` Swap screen sw=screen width() : sh=screen height() create bitmap 2,sw,sh Delete bitmap 7 ` Cut out the jewels ` Image 10 = blank, 11,12,13,14,15,16 = jewels ` 17 = explode, 18,19,20,21 = explosion paste image 4,0,0 i=10 For x=0 To 192 Step 16 get image i,x,0,x+16,16 inc i Next a Cls 0 ` PREP the intro sequence t=60 Dim velocity#(t) Dim acceleration#(t) Dim jump(t) Dim x#(t) Dim speed#(t) Dim y#(t) Dim d(t) Dim jewel(t) makefire(t,320,240,120) For a=0 To t sprite 1000+a,-16,-16,10 set sprite 1000+a,0,1 Next a ` Distort Title Picture on & start intro sequence If music(0)=1 Then loop music 1 startgame: i=1+Rnd(1) sinewaveon(i) show all sprites intro(i,t) set current bitmap 2 Cls 0 set current bitmap 1 Cls 0 set current bitmap 0 Cls 0 set current bitmap 2 hide all sprites sync ` game grid is 6x13 with 16x16 sprites If players(0)=1 Dim grid1(5,12) Dim colour1(5,12) Dim explode1(5,12) Dim jewels1(0) Dim score1(0) Dim t1(12) x1=144 : y1#=8 : s1#=0.50 : gx1=(x1-112)/16 : gy1=(y1#+24)/16 jewels1(0)=3 : friendly1=0 : difficulty1=5 ` get 3 random jewels To make our droplet i11=Rnd(difficulty1)+11 i21=Rnd(difficulty1)+11 i31=Rnd(difficulty1)+11 ` get the Next 3 (preview pane) too n11=Rnd(difficulty1)+11 n21=Rnd(difficulty1)+11 n31=Rnd(difficulty1)+11 sprite 1,x1,y1#,i11 sprite 2,x1,y1#+16,i21 sprite 3,x1,y1#+32,i31 show sprite 1 show sprite 2 show sprite 3 EndIf If players(0)=2 Dim grid2(5,12) Dim colour2(5,12) Dim explode2(5,12) Dim jewels2(0) Dim score2(0) Dim t2(12) x1=32 : y1#=8 : s1#=0.50 : gx1=(x1-16)/16 : gy1=(y1#+24)/16 jewels1(0)=3 : friendly1=0 : difficulty1=2 x2=144 : y2#=8 : s2#=0.50 : gx2=(x2-112)/16 : gy2=(y#+24)/16 jewels2(0)=3 : friendly2=0 : difficulty2=2 ` get 3 random jewels To make our droplet i11=Rnd(difficulty1)+11 i21=Rnd(difficulty1)+11 i31=Rnd(difficulty1)+11 i12=Rnd(difficulty2)+11 i22=Rnd(difficulty2)+11 i32=Rnd(difficulty2)+11 ` get the Next 3 (preview pane) too n11=Rnd(difficulty1)+11 n21=Rnd(difficulty1)+11 n31=Rnd(difficulty1)+11 n12=Rnd(difficulty2)+11 n22=Rnd(difficulty2)+11 n32=Rnd(difficulty2)+11 sprite 1,x1,y1#,i11 sprite 2,x1,y1#+16,i21 sprite 3,x1,y1#+32,i31 sprite 4,x2,y2#,i12 sprite 5,x2,y2#+16,i22 sprite 6,x2,y2#+32,i32 show sprite 1 show sprite 2 show sprite 3 show sprite 4 show sprite 5 show sprite 6 EndIf keytimer=0 : level=1 For a=0 To 5 For b=0 To 12 colour1(a,b)=10 If players(0)=2 Then colour2(a,b)=10 Next b Next a ` set the scene ink rgb(175,175,0),0 set Text font "Arial" set Text size 12 set Text opaque slideallow1=0 If players(0)=1 paste image 3,0,0 For a=0 To 5 For b=0 To 12 paste image 10,112+(a*16),8+(b*16) Next b Next a paste image n11,88,8 paste image n21,88,24 paste image n31,88,40 Else paste image 5,0,0 For a=0 To 5 For b=0 To 12 paste image 10,16+(a*16),8+(b*16) Next b Next a paste image n11,88,8 paste image n21,88,24 paste image n31,88,40 EndIf copy bitmap 2,0 sync ` -------------------------------------------------------------------------- ` da main event... ` -------------------------------------------------------------------------- do ` debug info ` Text 0,222,"X: "+Str$(gx)+" Y: "+Str$(gy)+" Friendly: "+Str$(friendly)+" " ` temporary score display, etc. If players(0)=1 Text 44,132,Str$(score1(0)) Text 89,173,Str$(level) Text 89,205,Str$(jewels1(0)) EndIf sprite 1,x1,y1#,i11 sprite 2,x1,y1#+16,i21 sprite 3,x1,y1#+32,i31 ox1=x1 : oy1=y1# If players(0)=2 sprite 4,x2,y2#,i12 sprite 5,x2,y2#+16,i22 sprite 6,x2,y2#+32,i32 ox2=x2 : oy2=y2# EndIf ` check For control direction If upkey() Or joystick up() Then direction=1 If rightkey() Or joystick Right() Then direction=2 If downkey() Or joystick down() Then direction=3 If leftkey() Or joystick Left() Then direction=4 inc keytimer If keytimer>=7 If direction=2 And gx1<5 And slideallow1=0 If grid1(gx1+1,gy1+1)=0 inc x1,16 EndIf keytimer=0 EndIf If direction=4 And gx1>0 And slideallow1=0 If grid1(gx1-1,gy1+1)=0 dec x1,16 EndIf keytimer=0 EndIf If direction=3 And gy1<13 And slideallow1=0 speed1=1 Else speed1=0 EndIf ` rotate the pieces If direction=1 itemp1=i11 i11=i21 i21=i31 i31=itemp1 keytimer=0 EndIf EndIf ` down we go If slideallow1=0 If speed1=0 inc y1#,s1# Else inc y1#,s1#*4 speed1=0 EndIf EndIf If players(0)=1 gx1=(x1-112)/16 : gy1=(y1#+24)/16 Else gx1=(x1-16)/16 : gy1=(y1#+24)/16 EndIf ` we're at the top so check To see If it's full below us If gy1=2 If grid1(gx1,gy1+1)=1 Goto gameover EndIf EndIf ` no? good, lets test For another colour/base of the game grid If gy1<12 If grid1(gx1,gy1+1)=1 Then hit1=1 EndIf If gy1=12 Then hit1=1 If hit1=1 paste image i11,x1,(gy1*16)-24 paste image i21,x1,(gy1*16)-8 paste image i31,x1,(gy1*16)+8 grid1(gx1,gy1-2)=1 grid1(gx1,gy1-1)=1 grid1(gx1,gy1)=1 colour1(gx1,gy1-2)=i11 colour1(gx1,gy1-1)=i21 colour1(gx1,gy1)=i31 ` here is where we start checking the explode loop For a=1 To 3 hide sprite a Next a Repeat e=explode(gx1,gy1) If e=1 d=dropem() Else d=0 EndIf Until d=0 For a=1 To 3 show sprite a Next a ` get the Next set And reset our stuff If players(0)=2 x1=16 y1#=8 x2=144 y2#=8 Else x1=144 y1#=8 EndIf i11=n11 i21=n21 i31=n31 inc friendly1 If friendly1=3 n11=Rnd(difficulty1)+11 n21=Rnd(difficulty1)+11 n31=n21 friendly1=0 Else n11=Rnd(difficulty1)+11 n21=Rnd(difficulty1)+11 n31=Rnd(difficulty1)+11 EndIf paste image n11,88,8 paste image n21,88,24 paste image n31,88,40 If players(0)=1 gx1=(x1-112)/16 gy1=(y1#+24)/16 Else gx1=(x1-16)/16 gy1=(y1#+24)/16 gx2=(x2-112)/16 gy2=(y2#+24)/16 EndIf j1=jewels1(0) inc j1,3 jewels1(0)=j1 hit1=0 sco1=score1(0) inc sco1,25 score1(0)=sco1 ` Gosub progress EndIf ` textgrid() direction=0 scroller_go() copy bitmap 2,0 sync loop ` Scroll Text Routine Function scroller_go() scroller_x#=0 For scroll=0 To 20 im=Asc(scrolltext$(scroll)) inc im,100 If im=132 Then im=191 If im=146 Then im=192 If im=144 Then im=193 If im=158 Then im=194 If im=145 Then im=195 If im=143 Then im=196 If im=133 Then im=197 If im=148 Then im=205 If im=149 Then im=206 If im=150 Then im=207 If im=151 Then im=208 If im=152 Then im=209 If im=153 Then im=210 If im=154 Then im=211 If im=155 Then im=212 If im=156 Then im=213 If im=157 Then im=214 paste image im,scroller_offset#(0)+scroller_x#,224 inc scroller_x#,16 Next scroll sotemp#=scroller_offset#(0) dec sotemp#,scroller_speed#(0) scroller_offset#(0)=sotemp# ` dec scroller_offset#,scroller_speed#(0) If sotemp#=<-16 scroller_offset#(0)=0 getnextcharacter(scroller_count(0)) sctemp=scroller_count(0) inc sctemp scroller_count(0)=sctemp ` inc scroller_count If sctemp=21 getscrolltext(1) scroller_count(0)=0 EndIf EndIf endfunction Function explode(x,y) ` scan array vertically looking For matching jewels And mark them all e=0 For a=0 To 5 For b=12 To 2 Step -1 tj1=colour1(a,b) tj2=colour1(a,b-1) tj3=colour1(a,b-2) ` we got a match sir! If tj1>10 If tj1=tj2 And tj2=tj3 grid1(a,b)=99 grid1(a,b-1)=99 grid1(a,b-2)=99 e=1 s=score1(0) inc s,50 score1(0)=s EndIf EndIf Next b Next a ` scan horizontally too For a=0 To 3 For b=12 To 1 Step-1 tj1=colour1(a,b) tj2=colour1(a+1,b) tj3=colour1(a+2,b) If tj1>10 If tj1=tj2 And tj2=tj3 grid1(a,b)=99 grid1(a+1,b)=99 grid1(a+2,b)=99 e=1 s=score1(0) inc s,50 score1(0)=s EndIf EndIf Next b Next a ` scan diagnols, bottom Left up To top Right For a=0 To 3 For b=12 To 3 Step-1 tj1=colour1(a,b) tj2=colour1(a+1,b-1) tj3=colour1(a+2,b-2) If tj1>10 If tj1=tj2 And tj2=tj3 grid1(a,b)=99 grid1(a+1,b-1)=99 grid1(a+2,b-2)=99 e=1 s=score1(0) inc s,100 score1(0)=s EndIf EndIf Next b Next a ` scan diagnols, bottom Right up To top Left For a=5 To 2 Step -1 For b=12 To 3 Step-1 tj1=colour1(a,b) tj2=colour1(a-1,b-1) tj3=colour1(a-2,b-2) If tj1>10 If tj1=tj2 And tj2=tj3 grid1(a,b)=99 grid1(a-1,b-1)=99 grid1(a-2,b-2)=99 e=1 s=score1(0) inc s,100 score1(0)=s EndIf EndIf Next b Next a endfunction e Function dropem() d=0 ` 2 stage process, First remove all 99 (exploded) jewels For a=0 To 5 For b=0 To 12 If grid1(a,b)=99 colour1(a,b)=10 grid1(a,b)=0 If players(0)=1 jx=(a*16)+112 jy=(b*16)+8 Else jx=(a*16)+16 jy=(b*16)+8 jx2=(a*16)+112 jy2=(b*16)+8 EndIf ` shatter jewels loop ei=18 Repeat paste image ei,jx,jy scroller_go() copy bitmap 2,0 sync inc ei Until ei=22 paste image 10,jx,jy ` j=jewels1(0) ` dec j ` jewels1(0)=j d=1 EndIf Next b Next a ` now move remainder down ` check To see If this row is blank For a=0 To 5 rowcount=0 For b=0 To 12 rowcount=rowcount+colour1(a,b) Next b If rowcount>130 count=0 For b=0 To 12 tc=colour1(a,b) If tc>10 If players(0)=1 jx=(a*16)+112 jy=(b*16)+8 Else jx=(a*16)+16 jy=(b*16)+8 jx2=(a*16)+112 jy2=(b*16)+8 EndIf t1(count)=tc paste image 10,jx,jy colour1(a,b)=10 grid1(a,b)=0 inc count EndIf Next b dec count rkd=count For b=12 To 0 Step -1 If players(0)=1 jx=(a*16)+112 jy=(b*16)+8 Else jx=(a*16)+16 jy=(b*16)+8 jx2=(a*16)+112 jy2=(b*16)+8 EndIf dal=12-b If t1(dal)>0 paste image t1(rkd),jx,jy colour1(a,b)=t1(rkd) grid1(a,b)=1 dec rkd EndIf Next b For b=0 To 12 t1(b)=0 Next b scroller_go() copy bitmap 2,0 sync EndIf Next a endfunction d Function textgrid() x=340 : y=0 For a=0 To 12 For b=0 To 5 Text x,y,Str$(colour1(b,a))+" " Text x+140,y,Str$(grid1(b,a)) inc x,20 Next b inc y,20 x=340 Next a endfunction Function sinewaveon(im) set current bitmap 2 paste image im,0,0 For i=1 To 240 get image 499+i,0,i-1,320,i Next i Cls 0 Step#=8.0 : sx=0 : speed=6 : o#=25 t=timer() Repeat Cls 0 si=500 For i=1 To 240 paste image si,Sin(sx+i*Step#)*o#,i-1 inc si Next i inc sx,speed copy bitmap 2,0 If timer()=>t+25 dec Step#,0.05 dec o#,0.25 t=timer() EndIf skip=0 If scancode()<>0 Then skip=1 If joystick fire a()=1 Then skip=1 sync Until Step#<=3 Or skip=1 paste image im,0,0 copy bitmap 2,0 sync Repeat Until scancode()=0 endfunction ` Scroll Text routine To kick things off Function getscrolltext(c) If c=0 Read Line$ If Line$="*" Restore Read Line$ EndIf Read line2$ If line2$="*" Restore Read line2$ EndIf For a=0 To 20 scrolltext$(a)=Mid$(Line$,1+a) scrollnext$(a)=Mid$(line2$,1+a) Next a Else Read Line$ If Line$="*" Restore Read Line$ EndIf For a=0 To 20 scrollnext$(a)=Mid$(Line$,1+a) Next a EndIf endfunction ` Scroll Text routine To get the Next character And shuffle stuff Function getnextcharacter(c) For a=0 To 20 scrolltemp$(a)=scrolltext$(a) Next a For a=0 To 19 scrolltext$(a)=scrolltemp$(1+a) Next a scrolltext$(20)=scrollnext$(c) endfunction ` Intro Sequence Function intro(b,t) start=timer() set current bitmap 0 w=320 h=240 xh=120 For a=1 To 6 If sprite exist(a) Then hide sprite a Next a do paste image b,0,0 For a=0 To t If jump(a)=0 velocity#(a)=9.0+Rnd(10) jump(a)=1 EndIf If jump(a)=1 If velocity#(a)!-10 velocity#(a)=velocity#(a)-acceleration#(a) EndIf y#(a)=y#(a)-velocity#(a) EndIf temp_x#=x#(a) temp_s#=speed#(a) If y#(a)>h y#(a)=h Else If d(a)=1 inc temp_x#,temp_s# Else dec temp_x#,temp_s# EndIf x#(a)=temp_x# EndIf sprite 1001+a,x#(a),y#(a),jewel(a) Next a If timer()=>start+2500+Rnd(1000) makefire(t,320,240,120) start=timer() EndIf If joystick fire a()=1 Or scancode()>0 Then exitfunction sync loop endfunction Function makefire(t,w,h,xh) For a=0 To t velocity#(a)=0 acceleration#(a)=0.5 jump(a)=0 x#(a)=xh+10+Rnd(xh/2) speed#(a)=Rnd(4) y#(a)=150+Rnd(40) d(a)=Rnd(1) jewel(a)=11+Rnd(6) Next a endfunction ` Game Over Routine And HighScore Table Display gameover: paste image 7,116,120 hide all sprites copy bitmap 2,0 sync Repeat scroller_go() copy bitmap 2,0 sync Until joystick fire a()=1 Or scancode()>0 ` do the mass explode thing ei=18 Repeat For a=12 To 0 Step -1 For b=0 To 5 jx=(b*16)+112 jy=(a*16)+8 paste image ei,jx,jy Next b scroller_go() copy bitmap 2,0 sync Next a inc ei Until ei=22 scroller_go() copy bitmap 2,0 sync For a=0 To 5 For b=0 To 12 paste image 10,112+(a*16),8+(b*16) Next b Next a scroller_go() copy bitmap 2,0 sync Repeat scroller_go() copy bitmap 2,0 sync Until joystick fire a()=1 Or scancode()>0 Cls 0 Goto startgame ` **************************************************** PROGRESS! ` This part isn't used yet, but could be progress: If sco1>=2500 And difficulty1=2 inc difficulty1 EndIf If sco1=>5000 And difficulty1=3 inc difficulty1 EndIf If sco1=>10000 And difficulty1=4 inc difficulty1 EndIf If sco1=>10000 And s1#=0.5 inc s1#,0.25 EndIf If sco1=>50000 And s1#=0.75 inc s1#,0.25 EndIf Return