Code:
//{ region === initialisation
const MAP_WIDTH = 16
const MAP_HEIGHT = 11
const TILE_WIDTH = 40
restart_btn.visible = false;
rescued_mc.visible = false;
var map:Array = [
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 5, 6, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 1],
[1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1],
[1, 5, 1, 0, 1, 7, 0, 0, 0, 6, 0, 1, 0, 1, 0, 1],
[1, 0, 1, 0, 1, 6, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1],
[1, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1],
[1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1],
[1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1],
[1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1],
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
]
var LEFT, RIGHT, UP, DOWN:Boolean = false;
var koalas:Array = new Array()
var TNTs:Array = new Array()
var displayMap:Array = new Array();
for (var row = 0; row < MAP_HEIGHT; row++){
displayMap[row] = new Array();
for (var col = 0; col < MAP_WIDTH; col++){
var tile:Tile = new Tile();
displayMap[row][col] = tile;
tile.x = TILE_WIDTH / 2 + (col) * TILE_WIDTH;
tile.y = TILE_WIDTH / 2 + (row + 1) * TILE_WIDTH;
tile.visible = false;
addChild(tile);
tile.gotoAndStop(1);
switch (map[row][col]){
case 1:
tile.gotoAndStop(2);
break;
case 5:
var myKoala_mc:Koala = new Koala();
addChild(myKoala_mc);
myKoala_mc.addEventListener(Event.ENTER_FRAME, moveKoala);
myKoala_mc.x = TILE_WIDTH / 2 + (col) * TILE_WIDTH;
myKoala_mc.y = TILE_WIDTH / 2 + (row + 1) * TILE_WIDTH;
myKoala_mc.visible = false;
myKoala_mc.row = row;
myKoala_mc.col = col;
koalas.push(myKoala_mc)
break;
case 6:
var TNT_mc:TNT = new TNT();
addChild(TNT_mc);
TNT_mc.x = TILE_WIDTH / 2 + (col) * TILE_WIDTH;
TNT_mc.y = TILE_WIDTH / 2 + (row + 1) * TILE_WIDTH;
TNT_mc.visible = false;
TNT_mc.row = row;
TNT_mc.col = col;
TNTs.push(TNT_mc)
break;
case 7:
var exit_one:exit1 = new exit1();
addChild(exit_one);
exit_one.x = TILE_WIDTH / 2 + (col) * TILE_WIDTH;
exit_one.y = TILE_WIDTH / 2 + (row + 1) * TILE_WIDTH;
exit_one.visible = false;
exit_one.row = row;
exit_one.col = col;
break;
}
}
}
setChildIndex(myKoala_mc, numChildren - 1);
//} endregion initialisation ====
// other listeners==================
splash_mc.start_btn.addEventListener(MouseEvent.CLICK, startGame);
restart_btn.addEventListener(MouseEvent.CLICK, reStartGame);
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
// Event Handlers===================
function startGame(m:MouseEvent){
splash_mc.visible = false;
for (var row = 0; row < MAP_HEIGHT; row++){
for (var col = 0; col < MAP_WIDTH; col++){
displayMap[row][col].visible = true;
}
}
for each (var bear in koalas) {
bear.visible = true;
for each (var deer in TNTs) {
deer.visible = true;
}
}
restart_btn.visible = true;
exit_one.visible = true;
rescued_mc.visible = true;
}
function reStartGame(m:MouseEvent){
splash_mc.visible = true;
for (var row = 0; row < MAP_HEIGHT; row++){
for (var col = 0; col < MAP_WIDTH; col++){
displayMap[row][col].visible = false;
}
}
for each (var bear in koalas) {
bear.visible = false;
for each (var deer in TNTs) {
deer.visible = false;
}
}
myKoala_mc.visible = false;
restart_btn.visible = false;
TNT_mc.visible = false;
exit_one.visible = false;
rescued_mc.visible = false;
}
//{ region moving koala
const DIR_RIGHT = 1;
const DIR_LEFT = -1;
const DIR_UP = -1;
const DIR_DOWN = 1;
function moveKoala(evt:Event){
var temp = evt.currentTarget as Koala;
with (temp){
if (LEFT && canMoveX(temp, DIR_LEFT)){
moveX(temp, DIR_LEFT);
} else if (RIGHT && canMoveX(temp, DIR_RIGHT)){
moveX(temp, DIR_RIGHT);
} else if (UP && canMoveY(temp, DIR_UP)){
moveY(temp, DIR_UP);
} else if (DOWN && canMoveY(temp, DIR_DOWN)){
moveY(temp, DIR_DOWN);
} else {
gotoAndStop("stand");
}
}
}
function canMoveX(aKoala, aDirection):Boolean {
var canMove:Boolean;
if (map[aKoala.row][aKoala.col + aDirection] == 6 || map[aKoala.row][aKoala.col + aDirection] == 7|| map[aKoala.row][aKoala.col + aDirection] == 0)
{
return true;
}
else return false;
}
function moveX(aKoala, aDirection){
with (aKoala){
if (aDirection == DIR_LEFT) gotoAndStop("left");
else gotoAndStop("right");
map[row][col] = 0;
displayMap[row][col].gotoAndStop(1);
col = col +aDirection;
map[row][col] = 5;
x = (col + 0.5) * TILE_WIDTH;
}
}
function canMoveY(aKoala, aDirection):Boolean {
var canMove:Boolean;
if (map[aKoala.row + aDirection][aKoala.col ] == 6 || map[aKoala.row + aDirection][aKoala.col ] == 7 || map[aKoala.row+ aDirection][aKoala.col ] == 0)
{
return true;
}
else return false;
}
function moveY(aKoala, aDirection){
with (aKoala){
if (aDirection == DIR_UP) gotoAndStop("up");
else gotoAndStop("down");
map[row][col] = 0;
displayMap[row][col].gotoAndStop(1);
row = row + aDirection;
map[row][col] = 5;
y = (row + 1.5) * TILE_WIDTH;
}
}
//} endregion
function keyDownHandler(k:KeyboardEvent){
var key = k.keyCode;
switch (key){
case Keyboard.LEFT:
LEFT = true;
break;
case Keyboard.RIGHT:
RIGHT = true;
break;
case Keyboard.UP:
UP = true;
break;
case Keyboard.DOWN:
DOWN = true;
break;
}
}
function keyUpHandler(k:KeyboardEvent){
var key = k.keyCode;
switch (key){
case Keyboard.LEFT:
LEFT = false;
break;
case Keyboard.RIGHT:
RIGHT = false;
break;
case Keyboard.UP:
UP = false;
break;
case Keyboard.DOWN:
DOWN = false;
break;
}
}
Any help would be appreciated, thank you.