When Elasticity meets Bloons

Ok, so we have two games: Elasticity and Bloons.

The first, is a game I talked about in Controlling a ball like in Flash Elasticity game tutorial, and I suggest you to read it, while the second is a game we all use to play here on planet Earth.

Despite the psychedelic feeling I gave to the graphics in this prototype, merging two game genres like Bloons and Elasticity can lead to some interesting gameplay concepts.

So the prototype brings the “engine” of Elasticity and some targets to destroy like in Bloons.

No tutorial yet but only a commented actionscript

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
attachMovie("newmouse", "newmouse", _root.getNextHighestDepth());
attachMovie("circle", "circle", _root.getNextHighestDepth(), {_x:60, _y:350});
attachMovie("crosshair", "crosshair", _root.getNextHighestDepth());
attachMovie("ball", "ball", _root.getNextHighestDepth());
Mouse.hide();
// friction
friction = 0.9;
// multiplier to scale down ball speed
speed_scale = 0.1;
// ball x and y speed
xspeed = 0;
yspeed = 0;
// flag to determine if the ball is "free" (I released it) or not
free_ball = false;
// gravity is zero at the beginning
gravity = 0;
// this part has been already explained
newmouse.onEnterFrame = function() {
	this._x = _root._xmouse;
	this._y = _root._ymouse;
};
crosshair.onEnterFrame = function() {
	difference = (circle._width-crosshair._width)/2;
	this._x = _root._xmouse;
	this._y = _root._ymouse;
	dist_x = this._x-circle._x;
	dist_y = this._y-circle._y;
	distance = Math.sqrt(dist_x*dist_x+dist_y*dist_y);
	if (distance>difference) {
		angle = Math.atan2(dist_y, dist_x);
		this._x = circle._x+difference*Math.cos(angle);
		this._y = circle._y+difference*Math.sin(angle);
	}
};
ball.onEnterFrame = function() {
	if (!free_ball) {
		dist_x = (crosshair._x-this._x)*speed_scale;
		dist_y = (crosshair._y-this._y)*speed_scale;
		xspeed += dist_x;
		yspeed += dist_y;
	} else {
		if (this._y>500) {
			free_ball = false;
			gravity = 0;
			xspeed = 0;
			yspeed = 0;
			this._x = crosshair._x;
			this._y = crosshair._y;
			friction = 0.9;
		}
	}
	xspeed *= friction;
	yspeed *= friction;
	yspeed += gravity;
	this._x += xspeed;
	this._y += yspeed;
};
// if the player release the mouse, then
// the ball is set to free
// the friction is lower and
// the gravity is bigger
_root.onMouseDown = function() {
	free_ball = true;
	friction = 0.99;
	gravity = 0.3;
};
// adding some "bloons"...
for (x=0; x<8; x++) {
	for (y=0; y<8; y++) {
		bloon = _root.attachMovie("bubble", "bubble_"+x, _root.getNextHighestDepth(), {_x:250+x*30, _y:30+y*30});
		bloon.die = false;
		bloon.onEnterFrame = function() {
			// actions to perform if the bloon is "alive"
			if (!this.die) {
				dist_x = this._x-ball._x;
				dist_y = this._y-ball._y;
				distance_from_ball = Math.sqrt(dist_x*dist_x+dist_y*dist_y);
				// checking if the ball hits the bloon
				if (distance_from_ball<(this._width+ball._width)/2) {
					this.die = true;
				}
				// actions to perform if the bloon is "dead" 
			} else {
				this._width -= 1;
				this._height -= 1;
				this._alpha -= 2;
				if (this._alpha == 0) {
					this.removeMovieClip();
				}
			}
		};
	}
}

And this is the result, swing the ball with the mouse and press mouse button to throw it against the “bloons”.

How many shoots do you need to bloon… pardon blow all balls away?

Download source code

Rate this post: 1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 3.00 out of 5)
Loading ... Loading ...
If you found this post useful, please consider a small donation.
» Flash Templates provided by Template Monster are pre-made web design products developed using Flash technology.
They can be easily customized to meet the unique requirements of your project.

12 Responses to “When Elasticity meets Bloons”

  1. Questo on December 18th, 2007 10:07 pm

    nice I can realy use this in my games

  2. Tom on December 18th, 2007 11:40 pm

    Hello Emanuele Feronato

    ive been following up on these tutorials for a while and i wanted to email you what i have produced but i have forgotten your email.

    And i love this game so far such a simple engine yet so much fun.

  3. Kevin on December 19th, 2007 5:44 am

    This is an awesome idea!
    Make some nice graphics and levels and you may get the same popularity as Bloons!

  4. Frederik J on December 19th, 2007 8:13 am

    Yeah, and get a good sponsor :) Then you rock! Good concept!

  5. shiv1411 on December 19th, 2007 8:37 am

    Great concept! It will be game more popular than circle chain perhaps…

  6. Emanuele Feronato on December 19th, 2007 11:14 am

    Tom: mail it at info[at]emanueleferonato.com

  7. Ed on December 20th, 2007 12:17 am

    Emanuele your homepage is still crashing my computer. I came to see if you’d replied to my comment, and the same message came up. Then I read your comment, went back to the homepage, and it crashed again. I had to close firefox and restart the session, then it crashed again, but I just managed to make it here to report this. I think it may be one of your adverts…

  8. limpeh on December 20th, 2007 2:44 am

    @Ed : I think that the problem is caused by too many flash on the main page (sometimes I get a pop-up that asks me to ’stop’ the scripts running on that page, which should be caused by the flash ‘examples’ showing on the main page). Other than that, it may be caused by too many things to load on a page too.

  9. stupid on December 20th, 2007 5:32 am

    Very nice game idea! Wish I thought of it myself.

  10. Corey on December 20th, 2007 5:55 am

    Great Game! It’s fun and looks promising.

  11. Brent on December 20th, 2007 8:24 pm

    Just so Ed doesn’t look like he’s making this up, I have had Firefox crash when visiting here a few times recently as well.

    Great site though, I check daily :).

  12. shouldn't there be a... on January 22nd, 2009 8:51 am

    … distance test between the mouse and circle then move the inner circle???
    the game says the ball only moves when touching the square.

Leave a Reply




flash games company