Get the full commented source code of

HTML5 Suika Watermelon Game

Talking about Bloons game, Flash and Game development.

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

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

Never miss an update! Subscribe, and I will bother you by email only when a new game or full source code comes out.