Online Book Reader

Home Category

HTML5 Canvas [198]

By Root 6435 0
< Math.abs(hDiff)){

if (vDiff > 0){

directionsToTest.push("up");

directionsToTest.push("down");

}else if (vDiff <0){

directionsToTest.push("down");

directionsToTest.push("up");

}

if (hDiff >0){

directionsToTest.push("left");

directionsToTest.push("right");

}else if (hDiff <0){

directionsToTest.push("right");

directionsToTest.push("left");

}

}else if (Math.abs(hDiff) < Math.abs(vDiff)) {

if (hDiff >0){

directionsToTest.push("left");

directionsToTest.push("right");

}else if (hDiff<0){

directionsToTest.push("right");

directionsToTest.push("left");

}else if (vDiff > 0){

directionsToTest.push("up");

directionsToTest.push("down");

}else if (vDiff <0){

directionsToTest.push("down");

directionsToTest.push("up");

}

}else if (Math.abs(hDiff) == Math.abs(vDiff)) {

//make an educated random guess

if (Math.floor(Math.random()*2)==0){

//try vertical first

if (vDiff >0){

directionsToTest.push("up");

directionsToTest.push("down");

}else if (vDiff<0){

directionsToTest.push("down");

directionsToTest.push("up");

}

}else{

//try vertical first

if (hDiff >0){

directionsToTest.push("left");

directionsToTest.push("right");

}else if (hDiff<0){

directionsToTest.push("right");

directionsToTest.push("left");

}

}

}

var chooseRandom = false;

var moveFound = false;

var movePtr = 0;

var move;

if (Math.floor(Math.random()*100)> chanceRandomEnemyMovement){

//not random movement

while(!moveFound){

move = directionsToTest[movePtr];

switch(move){

case "up":

if (checkBounds(-1,0,tempEnemy)){

moveFound = true;

}

break;

case "down":

if (checkBounds(1,0,tempEnemy)){

moveFound = true;

}

break;

case "left":

if (checkBounds(0,-1, tempEnemy)){

moveFound = true;

}

break;

case "right":

if (checkBounds(0,1,tempEnemy)){

moveFound = true;

}

break

}

movePtr++

if (movePtr==directionsToTest.length){

//do not move if no move found

//this should be impossible

chooseRandom = true;

}

}

}else{

chooseRandom = true;

}

//pick random direction to test;

if (chooseRandom) {

while(!moveFound){

switch(Math.floor(Math.random()*4)){

case 0:

if (checkBounds(-1,0,tempEnemy)){

moveFound = true;

}else{

}

break;

case 1:

if (checkBounds(1,0,tempEnemy)){

moveFound = true;

}else{

}

break;

case 2:

if (checkBounds(0,-1, tempEnemy)){

moveFound = true;

}else{

}

break;

case 3:

if (checkBounds(0,1,tempEnemy)){

moveFound = true;

}else{

}

break

}

}

}

tempEnemy.destinationX = tempEnemy.nextCol*32;

tempEnemy.destinationY = tempEnemy.nextRow*32;

}else{

tempEnemy.nextCol = tempEnemy.col;

tempEnemy.nextRow = tempEnemy.row;

tempEnemy.destinationX = tempEnemy.nextCol*32;

tempEnemy.destinationY = tempEnemy.nextRow*32;

}

}

switchGameState(GAME_STATE_ANIMATE_ENEMY);

}

function gameStateAnimateEnemy(){

for (var eCtr=enemy.length-1;eCtr>=0;eCtr--){

var tempEnemy = enemy[eCtr];

if (!tempEnemy.moveComplete){

tempEnemy.x += tempEnemy.dx*tempEnemy.speed;

tempEnemy.y += tempEnemy.dy*tempEnemy.speed;

tempEnemy.currentTile++;

if (tempEnemy.currentTile==enemyTiles.length){

tempEnemy.currentTile = 0;

}

renderPlayField();

if (tempEnemy.x==tempEnemy.destinationX &&

tempEnemy.y==tempEnemy.destinationY){

tempEnemy.moveComplete = true;

enemyMoveCompleteCount++;

}

}

}

if (enemyMoveCompleteCount >= enemy.length){

enemyMoveCompleteCount = 0;

for (var eCtr=0;eCtrvar tempEnemy = enemy[eCtr];

tempEnemy.moveComplete = false;

}

switchGameState(GAME_STATE_EVALUATE_ENEMY_MOVE);

}

}

function gameStateEvaluateEnemyMove(){

for (var eCtr=enemy.length-1;eCtr>=0;eCtr--){

var tempEnemy = enemy[eCtr];

tempEnemy.row = tempEnemy.nextRow;

tempEnemy.col = tempEnemy.nextCol;

if (playField[tempEnemy.row][tempEnemy.col]==wallTile){

tempEnemy.hit = true;

}

if (player.row==tempEnemy.row && player.col==tempEnemy.col){

tempEnemy.hit = true;

player.hit = true;

}

//check against other enemy

for (var eCtr2=enemy.length-1;eCtr2>=0;eCtr2--){

var tempEnemy2 = enemy[eCtr2];

if (tempEnemy.row==tempEnemy2.row

Return Main Page Previous Page Next Page

®Online Book Reader