Get the full commented source code of

HTML5 Suika Watermelon Game

Talking about Toony game, Actionscript 3, Flash and Game development.

With a few more than a month to Christmas, it’s time to think about a quick and easy Christmas game, since a lot of portals will distribute Christmas games in a couple of weeks.

Have a look to an old post called About season games to have an idea of what I am talking about.

So I want to share with you a simple prototype made out of Toony Flash game. Basically it’s the same game, but rather than moving targets to match falling stuff, we have to move falling stuff to match targets. Look:

Drag falling balls to match the balls on the Christmas tree.

There is still a lot to do on the gameplay, but maybe you can make some interesting stuff out of it.

This is the source code, no need to comment it as it’s almost the same thing you saw on Toony:

package {
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.utils.Timer;
	import flash.events.TimerEvent;
	import flash.geom.Point;
	public class Main extends Sprite {
		private var fallingTimer:Timer;
		private var fallingInterval:Number;
		private var fallingVector:Vector.;
		private var targetPositionVector:Vector.;
		private var targetVector:Vector.;
		private var fallingSpeed:Number;
		private var movingStuff:Stuff;
		private var christmasTree:ChristmasTree;
		private var score:Number;
		public function Main() {
			score=0;
			christmasTree=new ChristmasTree();
			christmasTree.y=10;
			addChild(christmasTree);
			targetPositionVector=new Vector.();
			targetPositionVector.push(new Point(100,100));
			targetPositionVector.push(new Point(200,200));
			targetPositionVector.push(new Point(300,300));
			targetVector=new Vector.();
			for (var i:Number=0; i();
			fallingInterval=1500;
			fallingTimer=new Timer(fallingInterval);
			fallingTimer.addEventListener(TimerEvent.TIMER, newStuff);
			fallingTimer.start();
			addEventListener(Event.ENTER_FRAME,update);
		}
		private function newStuff(e:TimerEvent):void {
			var stuff:Stuff=new Stuff();
			stuff.x=320+24+Math.random()*272;
			stuff.y=-32;
			stuff.fallingSpeed=fallingSpeed-fallingSpeed*0.2+Math.random()*fallingSpeed*0.4;
			stuff.placed=false;
			stuff.kill=false;
			stuff.gotoAndStop(Math.ceil(Math.random()*3));
			stuff.buttonMode=true;
			stuff.addEventListener(MouseEvent.MOUSE_DOWN,stuffClicked);
			fallingVector.push(stuff);
			addChild(stuff);
		}
		private function stuffClicked(e:MouseEvent):void {
			if (movingStuff==null) {
				movingStuff=e.target as Stuff;
				movingStuff.score=480-movingStuff.y;
				stage.addEventListener(MouseEvent.MOUSE_UP,stuffReleased);
			}
		}
		private function stuffReleased(e:MouseEvent):void {
			if (movingStuff!=null) {
				var matched:Boolean=false;
				stage.removeEventListener(MouseEvent.MOUSE_UP,stuffReleased);
				for (var i:Number=0; i=0; i--) {
				if (fallingVector[i].placed) {
					fallingVector[i].y--;
				}
				else {
					fallingVector[i].y+=fallingVector[i].fallingSpeed;
				}
				if (fallingVector[i].kill) {
					fallingVector[i].alpha-=0.02;
				}
				if (fallingVector[i].y>550||fallingVector[i].alpha<=0) {
					removeChild(fallingVector[i]);
					fallingVector.splice(i,1);
				}
			}
			if (movingStuff!=null) {
				movingStuff.x=mouseX;
				movingStuff.y=mouseY;
			}
		}
	}
}

Download the source code and show me your games built upon this prototype.

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