Flash prototype of a game like Balloon Invasion
One of the latest successful games released last week was Balloon Invasion.
It’s a mix between an artillery and a defense game, with a World War II theme.
I made a little prototype of the game, that will be explained another day. It’s nothing so interesting, just a mix between Create a flash artillery game and Managing multiple collision detection with Flash tutorials.
That’s the good point when you write a lot of code: the more you write, the more you can recycle.
The main difference however is the firing system: enemies don’t get hurt by bullets but mby explosions bullets make when they come to the spot you fired on… just like “real” artillery
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | Mouse.hide();
attachMovie("crosshair","crosshair",1);
attachMovie("tank","tank",2,{_x:450, _y:350});
fire_array = new Array();
fire_delay = 30;
just_fired = 0;
crosshair.onEnterFrame = function() {
this._x = _xmouse;
this._y = _ymouse;
};
tank.onEnterFrame = function() {
mousex = _xmouse-this._x;
mousey = (_ymouse-this._y)*-1;
angle = Math.atan(mousey/mousex)/(Math.PI/180);
if (mousex<0) {
angle += 180;
}
if (mousex>=0 && mousey<0) {
angle += 360;
}
if (angle>160) {
angle = 160;
}
if (angle<20) {
angle = 20;
}
firepower = Math.sqrt(mousex*mousex+mousey*mousey);
if (firepower>200) {
firepower = 200;
}
this.cannon._rotation = angle*-1;
};
function onMouseDown() {
if (just_fired>fire_delay) {
just_fired = 0;
angle = tank.cannon._rotation;
start_ball_x = tank._x+48*Math.cos(angle*Math.PI/180);
start_ball_y = tank._y+48*Math.sin(angle*Math.PI/180);
cannonball_fired = attachMovie("cannonball", "cannonball_"+_root.getNextHighestDepth(), _root.getNextHighestDepth(), {_x:start_ball_x, _y:start_ball_y});
cannonball_fired.dirx = Math.cos(angle*Math.PI/180)*firepower;
cannonball_fired.diry = Math.sin(angle*Math.PI/180)*firepower;
cannonball_fired.fire_coord_x = _root._xmouse;
cannonball_fired.fire_coord_y = _root._ymouse;
cannonball_fired.onEnterFrame = function() {
this._x += this.dirx/50;
this._y += this.diry/50;
dist_x = this._x-this.fire_coord_x;
dist_y = this._y-this.fire_coord_y;
dist = Math.sqrt(dist_x*dist_x+dist_y*dist_y);
if (dist<20) {
fire_array.push("explosion"+_root.getNextHighestDepth());
exp = attachMovie("explosion", "explosion"+_root.getNextHighestDepth(), _root.getNextHighestDepth(), {_x:this._x, _y:this._y});
exp.onEnterFrame = function() {
this._width += 2;
this._height += 2;
this._alpha -= 2;
if (this._alpha<0) {
for (x in fire_array) {
if (this.name == _root[fire_array[x]].name) {
fire_array.splice(x,1);
}
}
this.removeMovieClip();
}
};
this.removeMovieClip();
}
};
}
}
_root.onEnterFrame = function() {
just_fired++;
new_enemy = Math.random()*100;
if (new_enemy<1) {
enemy = attachMovie("enemy", "enemy"+_root.getNextHighestDepth(), _root.getNextHighestDepth(), {_x:-40, _y:Math.random()*200+50});
enemy.speed = Math.random()*2+1;
enemy.onEnterFrame = function() {
this._x += this.speed;
if (this._x>550) {
this.removeMovieClip();
}
for (x in fire_array) {
dist_x = this._x-_root[fire_array[x]]._x;
dist_y = this._y-_root[fire_array[x]]._y;
dist = Math.sqrt(dist_x*dist_x+dist_y*dist_y);
if (dist<(this._width+_root[fire_array[x]]._width)/2) {
this._alpha -= 5;
if (this._alpha<0) {
this.removeMovieClip();
}
}
}
};
}
}; |
And here’s the result:
Download the source code and start cloning the game :)
They can be easily customized to meet the unique requirements of your project.

















(3 votes, average: 3.67 out of 5)









This post has 10 comments
EagleVision
WOW! I like this….Real nice…I am so going to do it when I get back home! :D
Jack Hopkisn
I like it!
It reminds me of ‘Mutually assured destruction’
vincent
wow thanks man this is verry usefull for me :)
Andy
How do you actually feel about Kongregate?
Thomas
Awesome =D!
xavi-v
hey, i was trying to think of a way to do the feature of the ball exploding where the mouse is pressed. I couldn’t do it because i am not as good as Emanuele. Thanks for being phsycic emanuele! =)
xavi-v
i wanted to make a space defence game where the turret was in the middle of the screen. Hey! I just had a great idea. NUCLEAR WAR! the ICBM’s will go to where the mouse clicks! thanks emanuele!!!!!!!!!!!!!!!!!!!!
Displaying enemiy’s energy bar in Flash games : Emanuele Feronato - italian geek and PROgrammer
[...] time to show you how can you do this. In this example, I will start from the Flash prototype of a game like Balloon Invasion example but obviously you can apply the same concept to whatever game you [...]
Pyper
I think I love you! lol!
Thank you soo much, great tutorials.
Madge
Woot, I will cetairlny put this to good use!