I made this for kids, of any age. It's a simple game where you navigate the face to the flag while covering up every empty space on the board. EAsy for most, but you can design harder levels if you wish.
- Dav
Code: Select all
'GetToTheFlag.txt v1.0
'A simple puzzle game for ipad.
'Coded by Dav, May/2018
'
'Use arrows to move the face and get it to the flag.
'You must cover all empty spaces before reaching it.
'If you leave any empty spaces the level will restart.
'There are 10 levels. IPAD on,y right now.
if lowstr$(device_type$())<>"ipad" then
print "Sorry, game for iPad only right now."
end
end if
option base 1
get orientation ort
set orientation vertical
get screen size sw,sh
level = 1
maxlevel =10
'======
restart:
'======
graphics
graphics clear .2,.2,.2
set buttons custom
'draw background texture
draw alpha .3
draw font size 100
draw color 0,0,0
'a litte background
for x=1 to sw step 61
for y =1 to sh step 102
draw text chr$(9619) at x,y
next y
next x
draw alpha 1
grid=9 !size=sw/grid
dim bx(grid*grid),by(grid*grid),bv$(grid*grid)
set buttons font size 36
draw color 0,0,0
fill color 1,1,.8
button "restart" text "Restart" at 1,grid
draw color 1,1,1
w$="Level "&level&" of "&maxlevel
draw font size 36
draw text w$ at grid*25, grid*2
draw text "Use arrows to move face." at 20,800
draw text "Cover all empty spaces" at 20,850
draw text "before reaching the flag." at 20,900
draw font size 100
set buttons font size 74
x$=chr$(11035)
draw color 0,0,0
fill color .6,.6,.6
'init default button values, and generate x/y values...
bc=1
for r= 1 to grid
for c = 1 to grid-1
x=(r*size) ! y=(c*size)
'button str$(bc) text x$ at x-size,y size size,size
bx(bc)=x-size!by(bc)=y 'button x/y position
bv$(bc)=x$ 'fill board with blocks
bc=bc+1
next c
next r
'draw controls
set buttons font size 40
button "L" text chr$(8592) at (6.9*size),850
button "R" text chr$(8594) at (8.1*size),850
button "U" text chr$(8593) at (7.5*size),790
button "D" text chr$(8595. ) at (7.5*size),910
set buttons font size 74
feet$=x$'chr$(9619)
face$=chr$(58370)
goal$=chr$(9971)
gosub setlevel
'draw board
for r=1 to grid*grid-grid
button str$(r) text bv$(r) at bx(r),by(r) size size,size
next r
'===
main:
'===
'notes set "120:sg7"!notes play
do
if button_pressed("D") then
'see if piece is already on bottom row
'if it is, skip down button action
for t= 1 to 9
if piece = 8*t then goto done
next t
'see if space below is already block
if bv$(piece+1)=feet$ then goto done
if bv$(piece+1)=x$ then goto done
'all clear to move, so do the move
bv$(piece)=feet$ 'old space now block
bv$(piece+1)=face$ 'new space now piece
button str$(piece) text bv$(piece) at bx(piece),by(piece) size size,size
button str$(piece+1) text bv$(piece+1) at bx(piece+1),by(piece+1) size size,size
piece =piece +1
notes set "120:sg7"!notes play
gosub checkforwin
end if
if button_pressed("L") then
'see if is already of left side
if piece<9 then goto done
'see if space left is already blocked
if bv$(piece-8)=feet$ then goto done
if bv$(piece-8)=x$ then goto done
bv$(piece)=feet$
bv$(piece-8)=face$
button str$(piece) text bv$(piece) at bx(piece),by(piece) size size,size
button str$(piece-8) text bv$(piece-8) at bx(piece-8),by(piece-8) size size,size
piece =piece-8
notes set "120:sg7"!notes play
gosub checkforwin
end if
if button_pressed("U") then
'see if is already on top row
for t= 1 to grid*9 step grid-1
if piece = t then goto done
next t
'see if space up is already blocked
if bv$(piece-1)=feet$ then goto done
if bv$(piece-1)=x$ then goto done
bv$(piece)=feet$
bv$(piece-1)=face$
button str$(piece) text bv$(piece) at bx(piece),by(piece) size size,size
button str$(piece-1) text bv$(piece-1) at bx(piece-1),by(piece-1) size size,size
piece =piece-1
notes set "120:sg7"!notes play
gosub checkforwin
end if
if button_pressed("R") then
'see if is already on right side
if piece>64 then goto done
'see if space right is already blocked
if bv$(piece+8)=feet$ then goto done
if bv$(piece+8)=x$ then goto done
bv$(piece)=feet$
bv$(piece+8)=face$
button str$(piece) text bv$(piece) at bx(piece),by(piece) size size,size
button str$(piece+8) text bv$(piece+8) at bx(piece+8),by(piece+8) size size,size
piece =piece+8
notes set "120:sg7"!notes play
gosub checkforwin
end if
if button_pressed("restart") then goto restart
done:
until 0
end
'==========
checkforwin:
'==========
win=1
for r=1 to grid*grid-grid
'any open spaces left?
if bv$(r)="" then win=0
if bv$(r)=goal$ then win=0 'still showing
next r
if win=1 then
level=level+1
notes stop!pause .12
notes set "7:s(c3eg)(e4cg3)(g4ec)(c5g4e)"
notes play
button bv$(piece) text chr$(57431) at bx(piece),by(piece) size size,size
pause 1.5
if level > maxlevel then end
goto restart
end if
if piece=goalplace then
notes stop!pause .12
notes set "123:w(c1eg)"
notes play
button bv$(piece) text chr$(57432) at bx(piece),by(piece) size size,size
pause 1.5
goto restart
end if
return
'======
setlevel:
'======
if level=1 then
bv$(21)=face$!piece=21!bv$(29)=""!bv$(37)=""!bv$(45)=""
bv$(53)=goal$!goalplace=53
end if
if level=2 then
bv$(20)=""!bv$(21)=""!bv$(22)=""!bv$(23)=goal$!goalplace=23
bv$(26)=face$!piece=26!bv$(27)=""!bv$(28)=""!bv$(29)=""
bv$(30)=""
end if
if level=3 then
bv$(11)=""!bv$(12)=""!bv$(14)=face$!piece=14
bv$(18)=""!bv$(19)=""!bv$(20)=""!bv$(22)=""
bv$(26)=""!bv$(27)=goal$!goalplace=27!bv$(28)=""!bv$(30)=""
bv$(34)=""!bv$(35)=""!bv$(36)=""!bv$(37)=""!bv$(38)=""
bv$(42)=""!bv$(43)=""!bv$(44)=""!bv$(45)=""!bv$(46)=""
bv$(50)=""!bv$(51)=""!bv$(52)=""
end if
if level=4 then
bv$(10)=face$!piece=10!bv$(12)=""!bv$(13)=goal$
goalplace=13!bv$(14)=""!bv$(15)=""
bv$(18)=""!bv$(19)=""!bv$(20)=""!bv$(21)=""!bv$(22)=""
bv$(23)=""!bv$(27)=""!bv$(28)=""!bv$(30)=""!bv$(31)=""
bv$(36)=""!bv$(37)=""!bv$(38)=""!bv$(39)=""
bv$(45)=""!bv$(46)=""!bv$(47)=""!bv$(54)=""!bv$(55)=""
end if
if level=5 then
bv$(5)=""!bv$(6)=""!bv$(13)=goal$!goalplace=13!bv$(14)=""
bv$(19)=""!bv$(20)=""!bv$(21)=""!bv$(22)=""
bv$(27)=""!bv$(28)=""!bv$(29)=""
bv$(37)=""!bv$(38)=""
bv$(43)=""!bv$(44)=""!bv$(45)=""!bv$(46)=""
bv$(51)=""!bv$(53)=face$!piece=53!bv$(54)=""
bv$(59)=""!bv$(60)=""!bv$(61)=""!bv$(62)=""
bv$(69)=""!bv$(70)=""
end if
if level=6 then
bv$(10)=""!bv$(11)=""!bv$(12)=""!bv$(13)=""
bv$(18)=""!bv$(19)=""!bv$(20)=""!bv$(21)=""
bv$(26)=""!bv$(27)=""!bv$(28)=""!bv$(29)=""
bv$(34)=""!bv$(35)=""!bv$(36)=""!bv$(37)=""!bv$(38)=""
bv$(39)=""!bv$(40)=""!bv$(42)=face$!piece=42!bv$(43)=""
bv$(44)=""!bv$(45)=""!bv$(46)=""!bv$(47)=goal$!goalplace=47
bv$(48)=""!bv$(53)=""!bv$(54)=""!bv$(55)=""!bv$(56)=""
end if
if level=7 then
for i=1 to 72!bv$(i)=""!next i!bv$(8)=goal$!goalplace=8
bv$(20)=x$!bv$(23)=x$!bv$(33)=x$!bv$(38)=x$!bv$(41)=x$
bv$(42)=x$!bv$(52)=x$!bv$(65)=x$!bv$(71)=x$!bv$(72)=face$
piece=72
end if
if level=8 then
for i=1 to 72!bv$(i)=""!next i!bv$(1)=x$!bv$(6)=face$
piece=6!bv$(9)=x$!bv$(12)=x$!bv$(13)=goal$!goalplace=13
bv$(14)=x$!bv$(17)=x$!bv$(27)=x$!bv$(36)=x$!bv$(41)=x$
bv$(47)=x$!bv$(51)=x$!bv$(60)=x$
end if
if level=9 then
for i=1 to 72!bv$(i)=""!next i!bv$(1)=x$!bv$(2)=x$
bv$(8)=goal$!goalplace=8!bv$(14)=x$!bv$(25)=x$!bv$(37)=x$
bv$(38)=x$!bv$(39)=x$!bv$(40)=x$!bv$(43)=face$!piece=43
bv$(45)=x$!bv$(48)=x$!bv$(49)=x$!bv$(51)=x$!bv$(56)=x$
bv$(64)=x$!bv$(68)=x$!bv$(69)=x$!bv$(70)=x$!bv$(71)=x$
bv$(72)=x$
end if
if level=10 then
for i=1 to 72!bv$(i)=""!next i!bv$(8)=x$!bv$(12)=x$
bv$(13)=x$!bv$(14)=x$!for i=18 to 23!bv$(i)=x$!next i
bv$(33)=x$!bv$(36)=goal$!goalplace=36!bv$(37)=face$
piece=37!bv$(41)=x$!bv$(44)=x$!bv$(49)=x$!bv$(54)=x$
bv$(59)=x$!bv$(47)=x$!bv$(69)=x$
end if
return