Hi,
here's an android tablet game I'm having a lot of fun working on.
I must say, the whole android compilation setup, even though it's
quite straight forward, is longwinded and a one click option would
be preferable. (Though maybe 'RIGHTS' prevent it .. I don't know.)
I hope someone tries out the game ... Here's a link to an *.apk file.
http://www.madglue.com/DoggyDodge/DoggyDodge.apk
And a couple of screen shots;
----------------------------------------------------------------------------------
Also the full code;
` dodge
SetVirtualResolution ( 1200, 800 )
` initial start spash
createtext(7,"PRESS HERE TO START")
settextposition(7,300,670)
settextsize(7,33)
LoadImage( 401, "splash1.png" ) ` splash
createsprite(401,401)
LoadImage( 402, "puppy1.png" ) ` puppy
CreateSprite ( 402, 402 )
SetSpriteAnimation ( 402, 105, 150, 2 )
PlaySprite( 402, 10, 1 )
setspriteposition(401,300,100)
setspriteposition(402,350,200)
` start splash loop
do
if GetPointerPressed()=1
if GettextHittest(7,GetPointerX(),GetPointerY())=1
goto START
endif
endif
`
sync()
loop
`
START:
` hide start text
settextvisible(7,0)
` score needed text
createtext(1,"score needed")
SetTextColor( 1, 222, 222, 222, 255 )
settextposition(1,100,770)
settextsize(1,18)
` lives text
createtext(2,"lives")
SetTextColor( 2, 222, 222, 222, 255 )
settextposition(2,400,770)
settextsize(2,18)
` total score text
createtext(3,"total score")
SetTextColor( 3, 222, 222, 222, 255 )
settextposition(3,700,770)
settextsize(3,18)
` level text
createtext(4,"level")
SetTextColor( 4, 222, 222, 222, 255 )
settextposition(4,1000,770)
settextsize(4,18)
` game over text
createtext(5,"game over press here to quit")
SetTextColor( 5, 222, 222, 222, 255 )
settextposition(5,500,550)
settextsize(5,30)
` play again text
createtext(6,"press here to play again")
SetTextColor( 6, 222, 222, 222, 255 )
settextposition(6,500,650)
settextsize(6,30)
` new level text
createtext(8,"welcome to level")
SetTextColor( 8, 222, 222, 222, 255 )
settextposition(8,200,650)
settextsize(8,44)
` load images
LoadImage( 1, "c1.png" ) ` cars
LoadImage( 201, "s2.png" ) ` steak
LoadImage( 301, "r1.png" ) ` road
LoadImage( 501, "d3.png" ) ` player
LoadImage( 601, "end1.png" ) ` end game
LoadImage( 1001, "won1.png" ) ` won
LoadImage( 1002, "lost1.png" ) ` lost
`
loadmusic(1,"traffic1.wav")
loadsound(1,"bark1.wav")
loadsound(2,"moo1.wav")
`
playmusic(1,1)
`
` create player
player=501
CreateSprite ( player, 501 )
SetSpriteAnimation ( 501, 30, 30, 2 )
PlaySprite( player, 10, 1 )
`
` set level
level=5
` reload
reload:
`
if level >5 then game_end=2
` hide game over text
settextvisible(5,0)
settextvisible(6,0)
`
` set lives
lives=5
`
` delete all non player sprites
for v = 1 to 500
if getspriteexists(v)=1
deletesprite(v)
endif
next v
` hide score data text
for t = 1 to 4
settextvisible(t,0)
next t
` show welcome to level text
settextvisible(8,1)
` hide player
setspritevisible(player,0)
`
` build road
if getspriteexists(301)=0
rx=0 : ry=0
for t = 301 to 324
createsprite(t,301) : setspriteposition(t,rx,ry):setspritedepth(t,400)
inc rx,200
if rx>1000
inc ry,200 : rx=0
endif
next t
endif
` check if lost, won or still playing
do
if game_end=1
settextvisible(8,0)
goto lost1
endif
if game_end=2
settextvisible(8,0)
goto won1
endif
if game_end=0 then goto play1
`
sync()
loop
` if still playing ....
play1:
do
if game_end=0
new_level$ = "welcome to level "+str(level)
SetTextString( 8, new_level$ )
endif
inc count1
if count1>120 then goto start1
sync()
loop
`
start1:
` make score data text visible
count1=0
for t = 1 to 4
settextvisible(t,1)
next t
` show player
setspritevisible(player,1)
` hide splash text
settextvisible(8,0)
` reset some variables
x_margin = 100 : y_margin = 90
`x_gap = 100 :
y_gap = 90
total_stars=200 ` steaks
total_blocks=0 ` cars
total_width = 0
`enemy_x=0
`star_gap = 10 ` gap between steaks
`s=0
`
`levels
if level = 1
max_blocks = 50
min_scale = 80 : max_scale = 120
max_width = 1160 : max_height = 680
move#=0.5
setspritescale(player,1,1)
endif
`
if level = 2
max_blocks = 60
min_scale = 60 : max_scale = 110
max_width = 1160 : max_height = 600
move#=0.6
endif
`
if level = 3
y_margin = 110
max_blocks = 80
min_scale = 60 : max_scale = 100
max_width = 1200 : max_height = 620
move#=0.8
setspritescale(player,1.1,1.1)
endif
`
if level = 4
max_blocks = 90
min_scale = 50 : max_scale = 90
max_width = 1200 : max_height = 680
move#=1.1
setspritescale(player,1.2,1.2)
endif
`
if level = 5
`y_margin = 60
max_blocks = 110
min_scale = 40 : max_scale = 80
max_width = 1200 : max_height = 680
move#=1.4
setspritescale(player,1.3,1.3)
endif
`
` create blocks (cars)
`
dim pos_y[110]
for t = 1 to max_blocks
createsprite(t,1)
`
block_scalex# = random(min_scale,max_scale) : block_scaley# = random(min_scale,max_scale)
setspritescale(t,block_scalex#/120,block_scaley#/120)
`
total_width = total_width + block_scalex# + x_margin
`
rn1 = y_margin + random(0,50)
setspriteposition(t,total_width - block_scalex#,rn1)
`
pos_y[t] = rn1
`
rn2 = random(1,3)
if rn2 > 1 and t>1
inc total_stars ` total steaks
createsprite(total_stars,201)
setspritedepth(total_stars,300)
setspriteposition(total_stars,random(20,max_width-40),random(100,max_height))
endif
`
if t = 1 then player_x# = total_width + 10
`
if total_width > max_width + (block_scalex#*3)
inc y_margin,max_scale + y_gap
total_width = block_scalex# + x_margin
setspriteposition(t,x_margin,y_margin)
pos_y[t] = y_margin
`
if rn = 1 then setspriteposition(total_stars,10,y_margin + random(min_scale,max_scale/2))
if getspritey(total_stars)>700 then setspriteposition(total_stars,getspritex(total_stars),getspritey(total_stars)-100)
`
endif
`
inc total_blocks
`
setspritecolor(t,random(100,255),random(100,255),random(100,255),255)
`
if y_margin > max_height
deletesprite(total_blocks)
dec total_blocks
goto create_blocks_out
endif
`
next t
`
create_blocks_out:
score_needed = total_stars - 201
`
setspriteposition(player,player_x#,20)
`
if getspriteexists(601)=0 then createsprite(601,601)
setspriteposition(601,1150,10)
setspritevisible(601,1)
do
`
if game_end=0
` accel stuff
x# = getdirectionx()
y# = getdirectiony()
`
setspriteposition(player,getspritex(player) + (x#*8), getspritey(player) + (y#*8))
` set left limit
if (getspritex(player) < 10) then setspritex(player,10)
` set right limit
if (getspritex(player) > 1170) then setspritex(player,1170)
` set top limit
if (getspritey(player) < 10) then setspritey(player,10)
` set bottom limit
if (getspritey(player) > 770) then setspritey ( player,770 )
`
` car, dog collision
for block_collision = 1 to total_blocks
if GetSpriteCollision ( player, block_collision ) = 1
SetSpriteposition ( player, 20,20) ` reposition dog to start
dec lives
playsound(1) ` dog bark ...
endif
` move cars
setspriteposition(block_collision,getspritex(block_collision)-move#+(cos(getspriteX(block_collision))/6),getspritey(block_collision)+(sin(getspritex(block_collision))/6))
` send cars back to start
if getspritex(block_collision)<-120
setspriteposition(block_collision,1240,pos_y[block_collision])
endif
`
next block_collision
`
` steaks stuff
for star = 201 to total_stars
` rotate steaks
setspriteangle(star,star_angle)
` dog eats a steak
if GetSpriteCollision ( player, star ) = 1
dec score_needed : inc score : setspriteposition(star,-100,-100)
playsound(2)
endif
next star
`steaks angle
inc star_angle
` player position
px1# = getspritex(player) : py1# = getspritey(player)
`
` game data texts
score$ = "steaks needed "+str(score_needed)
SetTextString( 1, score$ )
`
lives$ = "lives "+str(lives)
SetTextString( 2, lives$ )
`
tscore$ = "total steaks "+str(score)
SetTextString( 3, tscore$ )
`
level$ = "level "+str(level)
SetTextString( 4, level$ )
` goto next level
if score_needed<1
inc level : goto reload
endif
`
` game lost
if lives<1
game_end=1
goto reload
endif
` game won
if level>5
game_end=2
goto reload
endif
endif
`
` stop the game
if GetPointerPressed()=1
if GetspriteHit(GetPointerX(),GetPointerY())=601
end
endif
endif
`
sync()
loop
` game lost splash
lost1:
setspritevisible(601,0)
createsprite(1002,1002)
setspriteposition(1002,300,100)
`
do
lost$ = "you lost ... press here to quit"
SetTextString( 5, lost$ )
settextvisible(5,1)
settextvisible(6,1)
if GetPointerPressed()=1
if GettextHittest(5,GetPointerX(),GetPointerY())=1
end
endif
endif
`
if GetPointerPressed()=1
if GettextHittest(6,GetPointerX(),GetPointerY())=1
deletesprite(1002)
level=1 : game_end=0 : lives=5 : score=0 : goto reload
endif
endif
`
sync()
loop
` game won splash
won1:
setspritevisible(601,0)
createsprite(1001,1001)
setspriteposition(1001,300,100)
do
win$ = "you won ... press here to quit"
SetTextString( 5, win$ )
settextvisible(5,1)
settextvisible(6,1)
if GetPointerPressed()=1
if GettextHittest(5,GetPointerX(),GetPointerY())=1
end
endif
endif
if GetPointerPressed()=1
if GettextHittest(6,GetPointerX(),GetPointerY())=1
deletesprite(1001)
level=1 : game_end=0 : lives=5 : score=0 : goto reload
endif
endif
`
sync()
loop
And why not? The project folder *.zip
http://www.madglue.com/DoggyDodge/doggy.zip
ENJOY!
regards,
miki.
in the end