Flash 貪食蛇:
Flash 貪食蛇程式:
package{
import flash.display.*;
import flash.events.*
import flash.utils.Timer;
public class Snake extends MovieClip{
var sprite:Sprite=new Sprite();
var arrSnake:Array=new Array();
var food:MovieClip=new FoodSprite();
var time:Timer=new Timer(100);
var numX:Number=1;
var numY:Number=0;
var speed:Number=10;
const left:Number=37;
const up:Number=38;
const right:Number=39;
const down:Number=40;
public function Snake(){
stop();
//設定背景為黑色
graphics.beginFill(0x000000);
graphics.drawRect(0,0,300,300);
addChild(sprite);
//建立 snake sprite
var snake:SnakeSprite=new SnakeSprite();
snake.x=100;
snake.y=100;
arrSnake.push(snake);
sprite.addChild(snake);
snake=new SnakeSprite();
snake.x=-10;
arrSnake.push(snake);
sprite.addChild(snake);
//初始 food
food.x=250;
food.y=250;
sprite.addChild(food);
//加入鍵盤事件
stage.addEventListener(KeyboardEvent.KEY_DOWN,key_Down);
//加入 Timer 事件
time.addEventListener(TimerEvent.TIMER,GameLoop);
time.start();
}
public function GameLoop(e:TimerEvent){
moveSnake();
//snake 移動
arrSnake[0].x=arrSnake[0].x+(numX*speed);
arrSnake[0].y=arrSnake[0].y+(numY*speed);
//如果 snake 移動出畫面邊緣,則遊戲結束
if(arrSnake[0].x<0 || arrSnake[0].x > 300-10 || arrSnake[0].y<0 || arrSnake[0].y>300-10){
end();
}
//如果 snake 碰觸到自己,則遊戲結束
for(var i:int=1;i<arrSnake.length;i++){
if(arrSnake[0].x==arrSnake[i].x && arrSnake[0].y==arrSnake[i].y){
end();
}
}
//snake 吃到 food
if(arrSnake[0].x == food.x && arrSnake[0].y == food.y){
//food 出現的位置,不得與 snake 重疊
var isCover:Boolean
do{
isCover=false;
food.x=Math.floor((Math.random()*300)/10)*10;
food.y=Math.floor((Math.random()*300)/10)*10;
for(var j:int=0;j<arrSnake.length;j++) {
if(arrSnake[j].x == food.x && arrSnake[j].y == food.y){
isCover=true;
break;
}
}
}while(isCover)
//建立新的 snake sprite
var newSnake:SnakeSprite
newSnake=new SnakeSprite();
arrSnake.push(newSnake);
newSnake.x=-10;
newSnake.y=-10;
sprite.addChild(newSnake);
}
}
//移動貪食蛇
public function moveSnake(){
for(var i:int=arrSnake.length-1;i>0;i--) {
arrSnake[i].x = arrSnake[i-1].x;
arrSnake[i].y = arrSnake[i-1].y;
}
}
//遊戲結束
public function end(){
//移除事件
time.removeEventListener(TimerEvent.TIMER,GameLoop);
stage.removeEventListener(KeyboardEvent.KEY_DOWN,key_Down);
//移除 sprite
removeChild(sprite);
//跳到遊戲結束影格
nextFrame();
}
//鍵盤事件
public function key_Down(e:KeyboardEvent){
if(e.keyCode == up){
//貪食蛇向下,按下向上方向鍵無效
if(numY!=1){
numX=0;
numY=-1;
}
}
if(e.keyCode == down){
//貪食蛇向上,按下向下方向鍵無效
if(numY!=-1){
numX=0;
numY=1;
}
}
if(e.keyCode == left){
//貪食蛇向右,按下向左方向鍵無效
if(numX!=1){
numX=-1;
numY=0;
}
}
if(e.keyCode == right){
//貪食蛇向左,按下向右方向鍵無效
if(numX!=-1){
numX=1;
numY=0;
}
}
}
}
}
檔案下載:Snake.rar
全站熱搜
留言列表