Programming C, C++, Java, PHP, Ruby, Turing, VB
Computer Science Canada 
Programming C, C++, Java, PHP, Ruby, Turing, VB  

Username:   Password: 
 RegisterRegister   
 Help with my snake game!
Index -> General Discussion
View previous topic Printable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic
Author Message
jusher




PostPosted: Wed Feb 02, 2011 11:38 am   Post subject: Help with my snake game!

HI! i need help with some problems im facing in creating a snake game! i cant figure out how to make the snake eat the bad food properly. For example, when I eat the powerup, the minusPower(bad food) appears and successfully ends my life after i eat it. but the problem is that, when i eat another powerup, the first minusPower that appear becomes ineffective and only the latest minusPower that appears work. my teacher asks me to use an array but i do not know how. please help ): i need to know how to do it asap.

Heres my code:

package {
import flash.display.*;
import flash.events.*;

public class drugGame extends MovieClip {
private var score,life:Number;
private var dirX,dirY:Number;
private var left,right,up,down:Boolean;
private var snakeBody:Array;
private var mcPowerUp:PowerUp;
private var mcMinusPower:minusPower;

public function Snake() {

}

public function startGame() {
score=0;
life=3;
dirX=1;
dirY=0;

snakeBody = new Array();
snakeBody.push(mcPlayer);
addEventListener(Event.ENTER_FRAME,update);
stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownHandler);
stage.addEventListener(KeyboardEvent.KEY_UP,keyUpHandler);
}

private function keyDownHandler(evt:KeyboardEvent) {
if (evt.keyCode==37) {
left=true;

} else if (evt.keyCode==39) {
right=true;

} else if (evt.keyCode==38) {
up=true;

} else if (evt.keyCode==40) {
down=true;
}

}

private function keyUpHandler(evt:KeyboardEvent) {
if (evt.keyCode==37) {
left=false;

} else if (evt.keyCode==39) {
right=false;

} else if (evt.keyCode==38) {
up=false;

} else if (evt.keyCode==40) {
down=false;
}

}

public function update(evt:Event) {
//This is the game loop
//Handle user input
if (left) {
dirX=-1;
} else if (right) {
dirX=1;
} else if (up) {
dirY=-1;
} else if (down) {
dirY=1;
}


//Handle game logic
//snake is moving up or down then player puch left arrow
if (left&&(dirX!=1)) {
dirX=-1;
dirY=0;
} else if (right&&(dirX!=-1)) {
dirX=1;
dirY=0;
} else if (up&&(dirY!=1)) {
dirY=-1;
dirX=0;
} else if (down&&(dirY!=-1)) {
dirY=1;
dirX=0;
}
//Update the Snake
if (snakeBody.length>1) {
for (var i = snakeBody.length-1; i>=1; i--) {
snakeBody[i].x=snakeBody[i-1].x;
snakeBody[i].y=snakeBody[i-1].y;
}

}

//Move the Snake Head
if (dirX>0) {
mcPlayer.x+=5;
} else if (dirX < 0) {
mcPlayer.x-=5;
} else if (dirY > 0) {
mcPlayer.y+=5;
} else if (dirY < 0) {
mcPlayer.y-=5;
}
//Add new PowerUps
if (mcPowerUp==null) {
//create powerup
mcPowerUp = new PowerUp();
mcPowerUp.x=Math.random()*480+ 20;
mcPowerUp.y=Math.random()*330+ 60;
addChild(mcPowerUp);
}

//Check for collisions between Snake and its body and walls
//top,right,left,bottom walls
//top
if (mcPlayer.y<50) {

collided();
}
//bottom
if (mcPlayer.y>stage.stageHeight) {
collided();
}
//left
if (mcPlayer.x<0) {
collided();
}
//right
if (mcPlayer.x>stage.stageWidth) {
collided();
}
//collision with own body
for (var j = snakeBody.length - 1; j>= 1; j--) {
if ((mcPlayer.x == snakeBody[j].x) &&
(mcPlayer.y == snakeBody[j].y)) {
collided();
break;
}
}


//check for game over


//Check for collisions between PowerUp and Snake


if (mcPowerUp!=null) {
if (mcPlayer.hitTestObject(mcPowerUp)) {
//add score
score+=10;

removeChild(mcPowerUp);
mcPowerUp=null;


if(score % 20 == 0){//Pill appears after every 20 points
mcMinusPower = new minusPower();
mcMinusPower.x=Math.random()*480+20;
mcMinusPower.y=Math.random()*330+60;
addChild(mcMinusPower);
}
/*for (var k = mcMinusPower.length; k>= 1; k--) {
if ((mcPlayer.x == mcMinusPower[k].x) &&
(mcPlayer.y == mcMinusPower[k].y)) {
collided();
break;
}
}*/

var newBody = new Player();
newBody.x=snakeBody[snakeBody.length-1].x;
newBody.y=snakeBody[snakeBody.length-1].y;
snakeBody.push(newBody);
addChild(newBody);
}
}

/*if(mcMinusPower!=null){
if(mcPlayer.hitTestObject(mcMinusPower)){
collided();
}
}*/
//Check for Game Over

if (life==0) {
gameOver();
}//Handle display
txtScore.text=String(score);
txtLife.text=String(life);




}//end of update

private function collided() {

life-=1;
if (life>0) {
resetGame();
}

}

private function resetGame() {
mcPlayer.x=275;
mcPlayer.y=200;

for (var i = snakeBody.length - 1; i >= 1; i--) {
removeChild(snakeBody[i]);
}
removeChild(mcMinusPower);

snakeBody = new Array();
snakeBody.push(mcPlayer);
}

private function gameOver() {
removeEventListener(Event.ENTER_FRAME,update);
stage.removeEventListener(KeyboardEvent.KEY_DOWN,keyDownHandler);
stage.removeEventListener(KeyboardEvent.KEY_UP,keyUpHandler);
}

}//end class
}//end package
Sponsor
Sponsor
Sponsor
sponsor
Display posts from previous:   
   Index -> General Discussion
View previous topic Tell A FriendPrintable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic

Page 1 of 1  [ 1 Posts ]
Jump to:   


Style:  
Search: