Working on websites with clients since 2006

BA Media Arts – Digital Media 2007 – New Jersey City University

Flash Shooter Game

Designed and built interactive video game.

Screen Capture


Play The Game Here

Requires Adobe Flash Player. Install or enable Flash to play the game http://www.adobe.com/go/getflash/

How to enable Flash Player in Chrome

Get Flash Player

Actionscript Code Sample

/***************import classes***************/
import mx.transitions.easing.*;
import mx.transitions.*;
/*********declare variables and instances*******/
var mcGunBarrel:MovieClip;
var bossHealth:MovieClip;
var nStageWidth:Number = Stage.width;
var nStageHeight:Number = Stage.height;
var nStageWidthTenth:Number = Stage.width/10;
var btnCrossHair:Button;
var nBulletStartY:Number = 550;
var nBulletStartX:Number = 300;
var bulletCount:Number = 1;
var bulletName:String;
var enemyCount:Number = 1;
var enemyName:String;
var sWindSound:Sound = new Sound();
var sGunSound:Sound = new Sound();
var nEnemySpeed:Number = 5;
var nEnemyFlySpeed:Number = 3;
var nHealth:Number = 156;
var nEnemyHitCount = 0;
var sEnemyType:String;
var nMouseXFromMiddle:Number;
var nMouseYFromMiddle:Number;
var nRandomEnemy:Number;
var nWave:Number;
var nBossSwitch:Boolean = true;
var mcEnemyOn:Boolean = false;
var mcEnemy2On:Boolean = false;
var mcEnemy3On:Boolean = false;
var mcEnemy4On:Boolean = false;
var mcEnemy5On:Boolean = false;
var mcEnemy6On:Boolean = false;
var nBossHealth:Number = 100;
var nHitCountAmountForBoss = 150;
var healthLowSoundOn:Boolean = false;
/****************create objects**************/
var oBullet:Object = new Object();
var oEnemy:Object = new Object();
var oEnemyFly:Object = new Object();
var enemyObject:Object;
var keyListner:Object = new Object();
/****************handle events**************/
keyListner.onKeyDown = function() {
	if (Key.getCode() == Key.RIGHT) {
	}
	if (Key.getCode() == Key.LEFT) {
	}
	if (Key.getCode() == Key.UP) {
	}
	if (Key.getCode() == Key.DOWN) {
	}
	if (Key.getCode() == Key.SPACE) {
		if (_root.mcShield._currentframe == _root.mcShield._totalframes) {
			_root.mcShield.gotoAndPlay("on");
		}
		if (_root.mcShield._currentframe == 10) {
			_root.mcShield.gotoAndPlay("off");
		}
	}
};
oBullet.onEnterFrame = function() {
	// ----------- BULLET MOVE ---------- \\
	if (this._y == nBulletStartY) {
		var flyX:Tween = new Tween(this, "_x", Strong.easeOut, nBulletStartX, _root.btnCrossHair._x, .5, true);
		var flyX:Tween = new Tween(this, "_y", Strong.easeOut, nBulletStartY, _root.btnCrossHair._y, .5, true);
		// Add shoot sound
	}
	this._yscale = this._y/3;
	this._xscale = this._y/3;
	// ----------- HITTEST ENEMY ---------- \\
	for (var i:Number = 1; i<=enemyCount; i++) {
		//check if enemy already dead
		// check it bullet hits target
		if (this.hitTest(this._parent["mcEnemy"+i])) {
			nEnemyHitCount++;
			if (nEnemyHitCount == 100) {
				displayMessage("USE SPACEBAR TO ACTIVATE SHIELDS");
			}
			if (nEnemyHitCount == nHitCountAmountForBoss) {
				sWindSound.stop();
				sWindSound.attachSound("hunterSeeker");
				sWindSound.start(1, 999);
			}
			_root.tbEnemyHitCount.text = nEnemyHitCount;
			this._parent["mcEnemy"+i].nextFrame();
			removeMovieClip(this);
		}
	}
	// ----------- HITTEST BOSS ---------- \\
	if (this.hitTest(_root.main.mcBoss.mcBossF1.mcBossWalk.mcBossTarget)) {
		nBossHealth--;
		sBossHit.start();
		if (nBossHealth<=0) {
			displayMessage("STAGE CLEAR");
			_root.gotoFinish.play();
			sHeartBeat.stop();
			sWindSound.stop();
		}
		_root.bossHealth._xscale = nBossHealth;
		if (nBossHealth<=0) { _root.main.mcBoss.mcBossF1.stop(); _root.main.mcBoss.mcBossF1.mcBossWalk.gotoAndPlay("die"); } } }; // ----------- WALKING ENEMY BEHAVIOR ---------- \\ oEnemy.onEnterFrame = function() { this._y = this._y+nEnemySpeed; // size enemy to y location this._xscale = this._y/3; this._yscale = this._y/3; // remove enemy at end of screen if (this._y>=Stage.height+30) {
		removeMovieClip(this);
	}
	// reduce health when enemy reaches 400                                  
	if (_root.mcShield._currentframe == 10) {
	} else {
		if (this._y>=500) {
			reduceHealth(1);
		}
	}
};
// ----------- FLYINH ENEMY BEHAVIOR ---------- \\
oEnemyFly.onEnterFrame = function() {
	this._y = this._y-nEnemyFlySpeed;
	// size enemy to y location
	this._xscale = 300-this._y;
	this._yscale = 300-this._y;
	// remove enemy at end of screen
	if (this._y<=-100) { removeMovieClip(this); } // reduce health when enemy reaches 400 if (this._y>=500) {
		reduceHealth(1);
	}
};
/******************functions****************/
function die() {
	//stopAllSounds();
	sHeartBeat.stop();
	sWindSound.stop();
	trace(nEnemyHitCount/bulletCount*100);
	_root.tbAccuracy.text = String(nEnemyHitCount/bulletCount*100);
	_root.gotoAndStop("gameover");
}
function reduceHealth(healthAmount) {
	// ----------- HEALTH MINUS HEALTH AMOUNT ---------- \\
	reduceHealthSound.start();
	if (healthLowSoundOn == false) {
		if (nHealth<=30) { sHeartBeat.start(0, 999); _root.mcHealthHolder.mcHealthBar.blink(true); healthLowSoundOn = true; } } nHealth = nHealth-healthAmount; _root.tbHealth.text = nHealth; if (_root.mcHealthHolder.mcHealthBar._rotation>=-156) {
		_root.mcHealthHolder.mcHealthBar._rotation = _root.mcHealthHolder.mcHealthBar._rotation-healthAmount;
	}
	//  ----------   GOTO DEATH ANIMATION --------- \\                                                                                                              
	if (nHealth<=0) { die(); } } function displayMessage(sMessage) { _root.mcWave.tbWave.text = String(sMessage); _root.mcWave.blink(true); _root.mcWave._visible = true; messageInterval = setInterval(messageVisible, 3000); } function messageVisible() { // add warning sound _root.mcWave.blink(false); _root.mcWave._visible = false; clearInterval(messageInterval); } function enemy() { // ----------- ADD RANDOM BADDY ---------- \\ nRandomEnemy = Math.random()*1000; //nWave = 1; //if (nWave == 1) { if (nRandomEnemy>=900) {
		if (mcEnemy5On == true) {
			sEnemyType = "mcEnemy5";
		}
	}
	if (nRandomEnemy>=800 and nRandomEnemy<=900) { if (mcEnemy4On == true) { sEnemyType = "mcEnemy4"; } } if (nRandomEnemy>=500 and nRandomEnemy<=800) { sEnemyType = "mcEnemy3"; } if (nRandomEnemy>=0 and nRandomEnemy<=500) {
		if (nRandomEnemy<300) {
			sEnemyType = "mcEnemy";
		} else {
			if (mcEnemy6On == true) {
				sEnemyType = "mcEnemy6";
			}
		}
	}
	if (sEnemyType == "mcEnemy6") {
		enemyObject = oEnemyFly;
	} else {
		enemyObject = oEnemy;
	}
	enemyName = "mcEnemy"+String(enemyCount);
	enemyDepth = this.getNextHighestDepth();
	this.attachMovie(sEnemyType, enemyName, enemyDepth, enemyObject);
	this[enemyName]._x = Math.random()*930-30;
	this[enemyName]._y = Math.random()*50+150;
	enemyCount++;
}
function startGame() {
	displayMessage("GET READY");
	startDrag(_parent.btnCrossHair, true);
	Mouse.hide();
	sWindSound.start(1, 999);
	sGunSound.attachSound("sLaser");
	_root.tbHealth.text = nHealth;
	//----------- 	CREATE ENEMIES SWITCH ON AND OFF ----------------\\
	createEnemy = setInterval(this, "enemy", 2000);
}
function shoot() {
	// 	IF SHILD OFF THEN SHOOT
	if (this._parent.mcShield._currentframe == 10) {
	} else {
		sGunSound.start();
		bulletName = "mcBullet"+String(bulletCount);
		bulletDepth = this.getNextHighestDepth();
		this.attachMovie("mcBullet", bulletName, bulletDepth, oBullet);
		this[bulletName]._x = nBulletStartX;
		this[bulletName]._y = nBulletStartY;
		bulletCount++;
	}
}
/****************set properties**************/
Key.addListener(keyListner);
_root.bossHealth._visible = false;
// SOUND
sWindSound.attachSound("notAfraid");
var reduceHealthSound:Sound = new Sound();
reduceHealthSound.attachSound("stab");
var sHeartBeat:Sound = new Sound();
sHeartBeat.attachSound("heartBeat");
var sBossHit:Sound = new Sound();
sBossHit.attachSound("bossHit");
_root.mcHealthHolder.mcHealthBar.blink(false);
/******************run now*****************/
startGame();
_root.btnCrossHair.onRelease = function() {
	shoot();
};
this._parent.mcGunBarrel.onEnterFrame = function() {
	var nMouseX:Number = _parent.btnCrossHair._x;
	if (nMouseX<=nStageWidthTenth && nMouseX>=0) {
		this.gotoAndStop(1);
	}
	if (nMouseX<=nStageWidthTenth*2 && nMouseX>=nStageWidthTenth) {
		this.gotoAndStop(2);
	}
	if (nMouseX<=nStageWidthTenth*3 && nMouseX>=nStageWidthTenth*2) {
		this.gotoAndStop(3);
	}
	if (nMouseX<=nStageWidthTenth*4 && nMouseX>=nStageWidthTenth*3) {
		this.gotoAndStop(4);
	}
	if (nMouseX<=nStageWidthTenth*5 && nMouseX>=nStageWidthTenth*4) {
		this.gotoAndStop(5);
	}
	if (nMouseX<=nStageWidthTenth*6 && nMouseX>=nStageWidthTenth*5) {
		this.gotoAndStop(6);
	}
	if (nMouseX<=nStageWidthTenth*7 && nMouseX>=nStageWidthTenth*6) {
		this.gotoAndStop(7);
	}
	if (nMouseX<=nStageWidthTenth*8 && nMouseX>=nStageWidthTenth*7) {
		this.gotoAndStop(8);
	}
	if (nMouseX<=nStageWidthTenth*9 && nMouseX>=nStageWidthTenth*8) {
		this.gotoAndStop(9);
	}
	if (nMouseX<=nStageWidthTenth*10 && nMouseX>=nStageWidthTenth*9) {
		this.gotoAndStop(10);
	}
};
this.onEnterFrame = function() {
	//----------- 	MAIN MOVEMENT----------------\\
	nMouseXFromMiddle = nStageWidth/2-this._xmouse;
	nMouseYFromMiddle = nStageHeight/2-this._ymouse;
	// - 400 to -1000
	if (this.main._x<=-1400 && this.main._x>=0) {
		var flyX:Tween = new Tween(_root.main, "_x", Strong.easeOut, _root.main._x, nMouseXFromMiddle/3.5, 1, true);
	}
	if (this.main._y<=-90 && this.main._y>=-20) {
		var flyY:Tween = new Tween(_root.main, "_y", Strong.easeOut, _root.main._y, nMouseYFromMiddle/5, 1, true);
	}
	//  ----------   TARGET TRAIL MOVEMENT --------- \\                                                                                                                        
	var targetX = _root.mcHelmit.mcTargetCircle;
	var targetY = _root.mcHelmit.mcTargetCircle;
	var targetFlyX:Tween = new Tween(targetX, "_x", Strong.easeOut, targetX._x, -nMouseXFromMiddle, 1, true);
	var targetFlyY:Tween = new Tween(targetY, "_y", Strong.easeOut, targetY._y, -nMouseYFromMiddle, 1, true);
	// ----------- Change Wave ---------- \\
	if (nEnemyHitCount<=50) {
		// ----------- SWITCH BOSS ON AND REMOVE ENEMY CREATION ---------- \\
	}
	if (nEnemyHitCount<=100 and nEnemyHitCount>50) {
		mcEnemy4On = true;
		mcEnemy5On = true;
		mcEnemy6On = true;
	}
	if (nEnemyHitCount == nHitCountAmountForBoss) {
		clearInterval(createEnemy);
		if (nBossSwitch == true) {
			_root.bossHealth._visible = true;
			_root.main.mcBoss.mcBossF1.gotoAndPlay(2);
			nBossSwitch = false;
		}
	}
};