Frame 1
if ((getBytesLoaded() / getBytesTotal()) == 1) {
gotoAndPlay (2);
} else {
_root.loaderstatus.text = (String(getBytesLoaded()) + " / ") + String(getBytesTotal());
_root.loaderbar.GotoAndStop(int((getBytesLoaded() / getBytesTotal()) * 100));
gotoAndPlay (1);
}
Frame 101
com.novelgames.flashgames.common.MainDevelopment.initialize(this);
Symbol 17 MovieClip [ball] Frame 1
#initclip 12
Object.registerClass("ball", com.novelgames.flashgames.arkanoid.Ball);
#endinitclip
Symbol 18 MovieClip Frame 31
gotoAndPlay (1);
Symbol 22 MovieClip Frame 31
gotoAndPlay (1);
Symbol 26 MovieClip Frame 31
gotoAndPlay (1);
Symbol 27 MovieClip [block] Frame 1
#initclip 8
Object.registerClass("block", com.novelgames.flashgames.arkanoid.Block);
#endinitclip
Symbol 39 MovieClip [gameOverDialog] Frame 1
#initclip 9
Object.registerClass("gameOverDialog", com.novelgames.flashgames.arkanoid.GameOverDialog);
#endinitclip
Symbol 39 MovieClip [gameOverDialog] Frame 19
gameOverAnimationFinished();
Symbol 39 MovieClip [gameOverDialog] Frame 34
gameWinAnimationFinished();
Symbol 43 MovieClip [board] Frame 1
#initclip 10
Object.registerClass("board", com.novelgames.flashgames.arkanoid.Board);
#endinitclip
Symbol 57 MovieClip [game] Frame 1
#initclip 11
Object.registerClass("game", com.novelgames.flashgames.arkanoid.Game);
#endinitclip
Symbol 59 Button
on (release) {
getURL ("http://www.startgames.ws", "_blank");
}
Symbol 66 MovieClip Frame 101
_root.play();
Symbol 137 MovieClip [__Packages.com.novelgames.flashgames.arkanoid.Block] Frame 0
class com.novelgames.flashgames.arkanoid.Block extends MovieClip
{
var _x, _y, score, state, gotoAndStop, lives, level;
function Block () {
super();
}
function initialize(x, y) {
_x = x * com.novelgames.flashgames.arkanoid.Config.BLOCK_WIDTH;
_y = com.novelgames.flashgames.arkanoid.Config.BLOCKSTARTY + (y * com.novelgames.flashgames.arkanoid.Config.BLOCK_HEIGHT);
score = (com.novelgames.flashgames.arkanoid.Config.DIMENSION_Y - y) * com.novelgames.flashgames.arkanoid.Config.SCOREPERROW;
state = NORMAL;
gotoAndStop(y + 1);
}
function getScore() {
return(score);
}
function getLives() {
return(lives);
}
function getLevel() {
return(level);
}
function getState() {
return(state);
}
function setState(state) {
this.state = state;
if (state == EXTRABALL) {
(gotoAndStop("ball"));// not popped
} else if (state == WIDEBOARD) {
(gotoAndStop("wide"));// not popped
} else if (state == NARROWBOARD) {
(gotoAndStop("narrow"));// not popped
}
}
static var NORMAL = 0;
static var EXTRABALL = 1;
static var WIDEBOARD = 2;
static var NARROWBOARD = 3;
}
Symbol 138 MovieClip [__Packages.com.novelgames.flashgames.arkanoid.Config] Frame 0
class com.novelgames.flashgames.arkanoid.Config extends MovieClip
{
function Config () {
super();
}
static var FIELD_X = -110;
static var FIELD_Y = -190;
static var FIELD_WIDTH = 400;
static var FIELD_HEIGHT = 380;
static var BLOCKSTARTY = 60;
static var DIMENSION_X = 10;
static var DIMENSION_Y = 6;
static var BLOCK_WIDTH = 40;
static var BLOCK_HEIGHT = 20;
static var BALLSPEED_1 = 10;
static var BALLSPEED_2 = 20;
static var BEGINANGLE_LOW = -0.785398163397448;
static var BEGINANGLE_HIGH = (Math.PI/4);
static var BOARDANGLEMAX = 0.15707963267949;
static var SCOREPERROW = 10;
static var SPECIALBLOCKNO_EXTRABALL = 2;
static var SPECIALBLOCKNO_WIDE = 1;
static var SPECIALBLOCKNO_NAROOW = 1;
}
Symbol 139 MovieClip [__Packages.com.novelgames.flashgames.arkanoid.GameOverDialog] Frame 0
class com.novelgames.flashgames.arkanoid.GameOverDialog extends MovieClip
{
var gotoAndStop, gotoAndPlay, stop, playAgainButton, _parent;
function GameOverDialog () {
super();
(gotoAndStop("hide"));// not popped
}
function startGameOverAnimation() {
(gotoAndPlay("gameOver"));// not popped
}
function startGameWinAnimation() {
(gotoAndPlay("gameWin"));// not popped
}
function gameOverAnimationFinished() {
(stop());// not popped
playAgainButton.onRelease = function () {
this._parent._parent.playAgain();
};
_parent.showEnterHighScores();
}
function gameWinAnimationFinished() {
(stop());// not popped
playAgainButton.onRelease = function () {
this._parent._parent.playAgain();
};
_parent.showEnterHighScores();
}
}
Symbol 140 MovieClip [__Packages.com.novelgames.flashgames.arkanoid.Board] Frame 0
class com.novelgames.flashgames.arkanoid.Board extends MovieClip
{
var gotoAndStop;
function Board () {
super();
(gotoAndStop("normal"));// not popped
}
function changeToNarrow() {
(gotoAndStop("narrow"));// not popped
}
function changeToWide() {
(gotoAndStop("wide"));// not popped
}
}
Symbol 141 MovieClip [__Packages.com.novelgames.flashgames.arkanoid.Game] Frame 0
class com.novelgames.flashgames.arkanoid.Game extends MovieClip
{
var gameStarted, ballStarted, blocks, blocksHolder, balls, ballsHolder, board, ballsNo, _parent, _xmouse, soundBall, soundNarrow, soundWide, soundBlock, soundBoard, soundDead, gameOverDialog, soundLose, soundWin;
function Game () {
super();
var _local4;
gameStarted = true;
ballStarted = false;
score = 0;
lives = 3;
level = 1;
_root.aniviewer.gotoAndStop(2);
blocks = new Array(com.novelgames.flashgames.arkanoid.Config.DIMENSION_X * com.novelgames.flashgames.arkanoid.Config.DIMENSION_Y);
_local4 = 0;
while (_local4 < (com.novelgames.flashgames.arkanoid.Config.DIMENSION_X * com.novelgames.flashgames.arkanoid.Config.DIMENSION_Y)) {
blocks[_local4] = blocksHolder.attachMovie("block", "block" + _local4, _local4);
blocks[_local4].initialize(_local4 % com.novelgames.flashgames.arkanoid.Config.DIMENSION_X, Math.floor(_local4 / com.novelgames.flashgames.arkanoid.Config.DIMENSION_X));
_local4++;
}
_local4 = 0;
while (_local4 < com.novelgames.flashgames.arkanoid.Config.SPECIALBLOCKNO_EXTRABALL) {
addBlockState(com.novelgames.flashgames.arkanoid.Block.EXTRABALL);
_local4++;
}
_local4 = 0;
while (_local4 < com.novelgames.flashgames.arkanoid.Config.SPECIALBLOCKNO_WIDE) {
addBlockState(com.novelgames.flashgames.arkanoid.Block.WIDEBOARD);
_local4++;
}
_local4 = 0;
while (_local4 < com.novelgames.flashgames.arkanoid.Config.SPECIALBLOCKNO_NAROOW) {
addBlockState(com.novelgames.flashgames.arkanoid.Block.NARROWBOARD);
_local4++;
}
balls = new Array();
balls[0] = ballsHolder.attachMovie("ball", "ball0", 0);
balls[0]._x = board._x - ballsHolder._x;
balls[0]._y = (board._y - ballsHolder._y) - (balls[0]._height / 2);
balls[0].speedX = 0;
balls[0].speedY = 0;
balls[0].speed = 0;
ballsNo = 1;
addSound("soundBoard");
addSound("soundBlock");
addSound("soundBall");
addSound("soundNarrow");
addSound("soundWide");
addSound("soundDead");
addSound("soundWin");
addSound("soundLose");
}
function showEnterHighScores() {
_parent.showEnterHighScore(score);
}
function onEnterFrame() {
moveBalls();
}
function onMouseMove() {
moveBoard();
}
function onMouseDown() {
startBall();
}
function addBlockState(theState) {
var _local2;
do {
_local2 = Math.floor(Math.random() * blocks.length);
} while (blocks[_local2].getState() != com.novelgames.flashgames.arkanoid.Block.NORMAL);
blocks[_local2].setState(theState);
}
function startBall() {
var _local2;
if (!gameStarted) {
return(undefined);
}
if (ballStarted) {
return(undefined);
}
_local2 = (Math.random() * (com.novelgames.flashgames.arkanoid.Config.BEGINANGLE_HIGH - com.novelgames.flashgames.arkanoid.Config.BEGINANGLE_LOW)) + com.novelgames.flashgames.arkanoid.Config.BEGINANGLE_LOW;
balls[0].speed = com.novelgames.flashgames.arkanoid.Config.BALLSPEED_1;
balls[0].speedX = com.novelgames.flashgames.arkanoid.Config.BALLSPEED_1 * Math.sin(_local2);
balls[0].speedY = (-com.novelgames.flashgames.arkanoid.Config.BALLSPEED_1) * Math.cos(_local2);
ballStarted = true;
}
function moveBoard() {
if (!gameStarted) {
return(undefined);
}
board._x = _xmouse;
if (board._x < (com.novelgames.flashgames.arkanoid.Config.FIELD_X + (board._width / 2))) {
board._x = com.novelgames.flashgames.arkanoid.Config.FIELD_X + (board._width / 2);
} else if (board._x > ((com.novelgames.flashgames.arkanoid.Config.FIELD_X + com.novelgames.flashgames.arkanoid.Config.FIELD_WIDTH) - (board._width / 2))) {
board._x = (com.novelgames.flashgames.arkanoid.Config.FIELD_X + com.novelgames.flashgames.arkanoid.Config.FIELD_WIDTH) - (board._width / 2);
}
if (!ballStarted) {
balls[0]._x = board._x - ballsHolder._x;
}
}
function moveBalls() {
var _local2;
if (!gameStarted) {
return(undefined);
}
if (!ballStarted) {
return(undefined);
}
_local2 = 0;
while (_local2 < balls.length) {
if (!balls[_local2]._visible) {
} else {
balls[_local2]._x = balls[_local2]._x + balls[_local2].speedX;
balls[_local2]._y = balls[_local2]._y + balls[_local2].speedY;
checkHitBlock(balls[_local2]);
checkHitWall(balls[_local2]);
checkHitBoard(balls[_local2]);
checkDead(balls[_local2]);
}
_local2++;
}
}
function checkHitBlock(theBall) {
var _local3;
var _local4;
_local3 = 0;
while (_local3 < blocks.length) {
if (!blocks[_local3]._visible) {
} else if (blocks[_local3].hitTest(theBall)) {
_local4 = getHitDirection(theBall, blocks[_local3]);
if (_local4 == HITFROMBOTTOM) {
theBall.speedY = -theBall.speedY;
theBall._y = ((blocks[_local3]._y + blocks[_local3]._height) + (theBall._height / 2)) + (((blocks[_local3]._y + blocks[_local3]._height) + (theBall._height / 2)) - theBall._y);
} else if (_local4 == HITFROMTOP) {
theBall.speedY = -theBall.speedY;
theBall._y = (blocks[_local3]._y - (theBall._height / 2)) - ((theBall._y + (theBall._height / 2)) - blocks[_local3]._y);
} else if (_local4 == HITFROMRIGHT) {
theBall.speedX = -theBall.speedX;
theBall._x = ((blocks[_local3]._x + blocks[_local3]._width) + (theBall._width / 2)) + (((blocks[_local3]._x + blocks[_local3]._width) + (theBall._width / 2)) - theBall._x);
} else if (_local4 == HITFROMLEFT) {
theBall.speedX = -theBall.speedX;
theBall._x = (blocks[_local3]._x - (theBall._width / 2)) - ((theBall._x + (theBall._width / 2)) - blocks[_local3]._x);
}
score = score + (blocks[_local3].getScore() * ballsNo);
checkSpecialBlock(blocks[_local3]);
blocks[_local3]._visible = false;
checkGameWin();
}
_local3++;
}
}
function getHitDirection(theBall, theBlock) {
if (theBall.speedY < 0) {
if (((theBall._y - (theBall._height / 2)) < (theBlock._y + theBlock._height)) && (((theBall._y - (theBall._height / 2)) - theBall.speedY) >= (theBlock._y + theBlock._height))) {
return(HITFROMBOTTOM);
}
}
if (theBall.speedY > 0) {
if (((theBall._y + (theBall._height / 2)) > theBlock._y) && (((theBall._y + (theBall._height / 2)) - theBall.speedY) <= theBlock._y)) {
return(HITFROMTOP);
}
}
if (theBall.speedX < 0) {
if (((theBall._x - (theBall._width / 2)) < (theBlock._x + theBlock._width)) && (((theBall._x - (theBall._width / 2)) - theBall.speedX) >= (theBlock._x + theBlock._width))) {
return(HITFROMRIGHT);
}
}
if (theBall.speedX > 0) {
if (((theBall._x + (theBall._width / 2)) > theBlock._x) && (((theBall._x + (theBall._width / 2)) - theBall.speedX) <= theBlock._x)) {
return(HITFROMLEFT);
}
}
return(HITFROMBOTTOM);
}
function checkSpecialBlock(theBlock) {
var _local5 = theBlock.getState();
var _local3;
var _local6;
if (_local5 == com.novelgames.flashgames.arkanoid.Block.EXTRABALL) {
_local3 = balls.length;
balls[_local3] = ballsHolder.attachMovie("ball", "ball" + _local3, _local3);
balls[_local3]._x = theBlock._x + (theBlock._width / 2);
balls[_local3]._y = theBlock._y + (theBlock._height / 2);
_local6 = (Math.random() * (com.novelgames.flashgames.arkanoid.Config.BEGINANGLE_HIGH - com.novelgames.flashgames.arkanoid.Config.BEGINANGLE_LOW)) + com.novelgames.flashgames.arkanoid.Config.BEGINANGLE_LOW;
balls[_local3].speed = com.novelgames.flashgames.arkanoid.Config.BALLSPEED_1;
balls[_local3].speedX = com.novelgames.flashgames.arkanoid.Config.BALLSPEED_1 * Math.sin(_local6);
balls[_local3].speedY = (-com.novelgames.flashgames.arkanoid.Config.BALLSPEED_1) * Math.cos(_local6);
_root.aniviewer.gotoAndPlay(16);
ballsNo++;
soundBall.start();
} else if (_local5 == com.novelgames.flashgames.arkanoid.Block.NARROWBOARD) {
board.changeToNarrow();
_root.aniviewer.gotoAndPlay(29);
soundNarrow.start();
} else if (_local5 == com.novelgames.flashgames.arkanoid.Block.WIDEBOARD) {
board.changeToWide();
_root.aniviewer.gotoAndPlay(29);
soundWide.start();
} else {
soundBlock.start();
}
}
function checkHitWall(theBall) {
if (theBall._x < (theBall._width / 2)) {
theBall._x = ((theBall._width / 2) + (theBall._width / 2)) - theBall._x;
theBall.speedX = -theBall.speedX;
} else if (theBall._x > (com.novelgames.flashgames.arkanoid.Config.FIELD_WIDTH - (theBall._width / 2))) {
theBall._x = (com.novelgames.flashgames.arkanoid.Config.FIELD_WIDTH - (theBall._width / 2)) - ((theBall._x - com.novelgames.flashgames.arkanoid.Config.FIELD_WIDTH) + (theBall._width / 2));
theBall.speedX = -theBall.speedX;
}
if (theBall._y < (theBall._height / 2)) {
theBall._y = ((theBall._height / 2) + (theBall._height / 2)) - theBall._y;
theBall.speedY = -theBall.speedY;
if (theBall.speed == com.novelgames.flashgames.arkanoid.Config.BALLSPEED_1) {
theBall.speed = com.novelgames.flashgames.arkanoid.Config.BALLSPEED_2;
theBall.speedY = theBall.speedY * (com.novelgames.flashgames.arkanoid.Config.BALLSPEED_2 / com.novelgames.flashgames.arkanoid.Config.BALLSPEED_1);
theBall.speedX = theBall.speedX * (com.novelgames.flashgames.arkanoid.Config.BALLSPEED_2 / com.novelgames.flashgames.arkanoid.Config.BALLSPEED_1);
}
}
}
function checkHitBoard(theBall) {
var _local3;
var _local5;
var _local4;
if (((theBall._y + (theBall._height / 2)) > (board._y - ballsHolder._y)) && (((theBall._y + (theBall._height / 2)) - theBall.speedY) <= (board._y - ballsHolder._y))) {
if ((theBall._x > ((board._x - ballsHolder._x) - (board._width / 2))) && (theBall._x < ((board._x - ballsHolder._x) + (board._width / 2)))) {
_local3 = ((theBall._x - (board._x - ballsHolder._x)) / (board._width / 2)) * com.novelgames.flashgames.arkanoid.Config.BOARDANGLEMAX;
_local5 = -Math.atan(theBall.speedX / theBall.speedY);
_local4 = _local3 + (_local3 - _local5);
theBall.speedX = theBall.speed * Math.sin(_local4);
theBall.speedY = (-theBall.speed) * Math.cos(_local4);
theBall._y = ((board._y - ballsHolder._y) - (theBall._height / 2)) - ((theBall._y + (theBall._height / 2)) - (board._y - ballsHolder._y));
soundBoard.start();
}
}
}
function checkDead(theBall) {
if ((theBall._y - (theBall._height / 2)) > com.novelgames.flashgames.arkanoid.Config.FIELD_WIDTH) {
theBall._visible = false;
ballsNo--;
soundDead.start();
checkGameOver();
}
}
function checkGameOver() {
if (ballsNo > 0) {
return(undefined);
}
if (lives > 1) {
balls[0] = ballsHolder.attachMovie("ball", "ball0", 0);
balls[0]._x = board._x - ballsHolder._x;
balls[0]._y = (board._y - ballsHolder._y) - (balls[0]._height / 2);
balls[0].speedX = 0;
balls[0].speedY = 0;
balls[0].speed = 0;
ballsNo = 1;
ballStarted = false;
lives--;
return(undefined);
}
gameStarted = false;
gameOver();
}
function checkGameWin() {
var _local2;
_local2 = 0;
while (_local2 < blocks.length) {
if (blocks[_local2]._visible) {
return(undefined);
}
_local2++;
}
if (level < 10) {
blocks = new Array(com.novelgames.flashgames.arkanoid.Config.DIMENSION_X * com.novelgames.flashgames.arkanoid.Config.DIMENSION_Y);
_local2 = 0;
while (_local2 < (com.novelgames.flashgames.arkanoid.Config.DIMENSION_X * com.novelgames.flashgames.arkanoid.Config.DIMENSION_Y)) {
blocks[_local2] = blocksHolder.attachMovie("block", "block" + _local2, _local2);
blocks[_local2].initialize(_local2 % com.novelgames.flashgames.arkanoid.Config.DIMENSION_X, Math.floor(_local2 / com.novelgames.flashgames.arkanoid.Config.DIMENSION_X));
_local2++;
}
_local2 = 0;
while (_local2 < (com.novelgames.flashgames.arkanoid.Config.SPECIALBLOCKNO_EXTRABALL + level)) {
addBlockState(com.novelgames.flashgames.arkanoid.Block.EXTRABALL);
_local2++;
}
_local2 = 0;
while (_local2 < (com.novelgames.flashgames.arkanoid.Config.SPECIALBLOCKNO_WIDE + level)) {
addBlockState(com.novelgames.flashgames.arkanoid.Block.WIDEBOARD);
_local2++;
}
_local2 = 0;
while (_local2 < (com.novelgames.flashgames.arkanoid.Config.SPECIALBLOCKNO_NAROOW + level)) {
addBlockState(com.novelgames.flashgames.arkanoid.Block.NARROWBOARD);
_local2++;
}
balls[0] = ballsHolder.attachMovie("ball", "ball0", 0);
balls[0]._x = board._x - ballsHolder._x;
balls[0]._y = (board._y - ballsHolder._y) - (balls[0]._height / 2);
balls[0].speedX = 0;
balls[0].speedY = 0;
balls[0].speed = 0;
ballsNo = 1;
ballStarted = false;
level++;
lives++;
return(undefined);
}
gameStarted = false;
gameWin();
}
function gameOver() {
gameOverDialog.startGameOverAnimation();
soundLose.start();
}
function gameWin() {
gameOverDialog.startGameWinAnimation();
soundWin.start();
}
function playAgain() {
_parent.gotoTitlePage();
}
function addSound(name) {
this[name] = new Sound(this);
this[name].attachSound(name);
_parent.registerSound(this[name]);
}
static var HITFROMBOTTOM = 1;
static var HITFROMTOP = 2;
static var HITFROMLEFT = 3;
static var HITFROMRIGHT = 4;
var score = 0;
var level = 1;
var lives = 3;
}
Symbol 142 MovieClip [__Packages.com.novelgames.flashgames.arkanoid.Ball] Frame 0
class com.novelgames.flashgames.arkanoid.Ball extends MovieClip
{
function Ball () {
super();
}
}
Symbol 143 MovieClip [__Packages.com.novelgames.flashgames.common.MainDevelopment] Frame 0
class com.novelgames.flashgames.common.MainDevelopment extends MovieClip
{
var gotoAndStop, startButton, highScoresButton, creditsButton;
function MainDevelopment () {
super();
}
static function initialize(movieClip) {
movieClip.__proto__ = com.novelgames.flashgames.common.MainDevelopment.prototype;
movieClip.gotoTitlePage();
}
function gotoTitlePage() {
(gotoAndStop("title"));// not popped
startButton.onRelease = function () {
this._parent.gotoInstructionsPage();
};
highScoresButton.onRelease = function () {
this._parent.showHighScores();
};
creditsButton.onRelease = function () {
this._parent.showCredits();
};
}
function gotoInstructionsPage() {
(gotoAndStop("game"));// not popped
}
function gotoGamePage() {
(gotoAndStop("game"));// not popped
}
function showHighScores() {
trace("showHighScores()");
}
function showCredits() {
trace("showCredits()");
}
function showEnterHighScore(score) {
trace(("showEnterHighScore(" + score) + ")");
}
function registerSound(theSound) {
trace("registerSound");
}
}
Symbol 100 Button
on (release) {
getURL ("http://www.startgames.ws", "_blank");
}
Symbol 107 MovieClip Frame 101
gotoAndPlay (1);
Symbol 111 Button
on (release) {
getURL ("http://www.startgames.ws/games_for_websites.html", "_blank");
}
Symbol 120 Button
on (release) {
getURL ("http://www.startgames.ws", "_blank");
}
Symbol 133 MovieClip Frame 1
stop();
Symbol 133 MovieClip Frame 2
stop();
Symbol 133 MovieClip Frame 28
gotoAndStop (2);
Symbol 133 MovieClip Frame 43
gotoAndStop (2);
Symbol 136 Button
on (release) {
stopAllSounds();
}