matlab游戏代码围住神经猫,html 围住神经猫 游戏

这段代码展示了一个使用EaselJS库实现的小游戏,玩家通过点击选择圆圈来引导猫咪移动。游戏逻辑包括猫咪的移动方向判断,当遇到已选圆圈时游戏结束。游戏中的圆圈有不同的状态,如未选中、已选中和代表猫咪的状态。
摘要由CSDN通过智能技术生成

html

circle.js

function Circle(){

createjs.Shape.call(this);

this.setCircleType=function(type){

this._circleType=type;

switch(type){

case Circle.TYPE_UNSELECTED:

this.setColor("#cccccc");

break;

case Circle.TYPE_SELECTED:

this.setColor("#ff6600");

break;

case Circle.TYPE_CAT:

this.setColor("#0000ff");

break;

}

}

this.setColor=function(colorString){

this.graphics.beginFill(colorString);

this.graphics.drawCircle(0,0,25);

this.graphics.endFill();

}

this.getCircleType=function(){

return this._circleType;

}

this.setCircleType(1);

}

Circle.prototype=new createjs.Shape();

Circle.TYPE_UNSELECTED=1;

Circle.TYPE_SELECTED=2;

Circle.TYPE_CAT=3;

app.js

var stage=new createjs.Stage("gameView");

createjs.Ticker.setFPS(30);

createjs.Ticker.addEventListener("tick",stage);

var gameView=new createjs.Container();

gameView.x=30;

gameView.y=30;

stage.addChild(gameView);

var circleArr=[[],[],[],[],[],[],[],[],[]];

var currentCat;

var MOVE_NONE=-1,MOVE_LEFT=0,MOVE_UP_LEFT=1,

MOVE_UP_RIGHT=2,MOVE_RIGHT=3,

MOVE_DOWN_RIGHT=4,MOVE_DOWN_LEFT=5;

function getMoveDir(cat){

var distanceMap=[];

var can=true;

for (var x=cat.indexX;x>=0;x--){

if(circleArr[x][cat.indexY].getCircleType()==Circle.TYPE_SELECTED){

can=false;

distanceMap[MOVE_LEFT]=cat.indexX-x;

break;

}

}

if(can){

return MOVE_LEFT;

}

can=true;

var x=cat.indexX,y=cat.indexY;

while (true){

if(circleArr[x][y].getCircleType()==Circle.TYPE_SELECTED){

can=false;

distanceMap[MOVE_UP_LEFT]=cat.indexY-y;

break;

}

if(y%2==0){

x--;

}

y--;

if(y<0||x<0){

break;

}

}

if(can){

return MOVE_UP_LEFT;

}

can =true;

x=cat.indexX,y=cat.indexY;

while(true){

if(circleArr[x][y].getCircleType()==Circle.TYPE_SELECTED){

can=false;

distanceMap[MOVE_UP_RIGHT]=cat.indexY-y;

break;

}

if(y%2==1){

x++;

}

y--;

if(y<0||x>8){

break;

}

}

if(can){

return MOVE_UP_RIGHT;

}

can=true;

for (var x=cat.indexX;x<9;x++){

if(circleArr[x][cat.indexY].getCircleType()==Circle.TYPE_SELECTED){

can=false;

distanceMap[MOVE_RIGHT]=x-cat.indexX;

break;

}

}

if(can){

return MOVE_RIGHT;

}

can=true;

x=cat.indexX,y=cat.indexY;

while(true){

if(circleArr[x][y].getCircleType()==Circle.TYPE_SELECTED){

can=false;

distanceMap[MOVE_DOWN_RIGHT]=y-cat.indexY;

break;

}

if(y%2==1){

x++;

}

y++;

if(y>8||x>8){

break;

}

}

if(can){

return MOVE_DOWN_RIGHT;

}

can=true;

x=cat.indexX,y=cat.indexY;

while(true){

if(circleArr[x][y].getCircleType()==Circle.TYPE_SELECTED){

can=false;

distanceMap[MOVE_DOWN_LEFT]=y-cat.indexY;

break;

}

if(y%2==0){

x--;

}

y++;

if(y>8||x<0){

break;

}

}

if(can){

return MOVE_DOWN_LEFT;

}

var maxDir=-1,maxValue=-1;

for (var dir=0;dir

if(distanceMap[dir]>maxValue){

maxValue=distanceMap[dir];

maxDir=dir;

}

}

if(maxValue>1){

return maxDir;

}else{

return MOVE_NONE;

}

}

function circleClicked(event){

if(event.target.getCircleType!=Circle.TYPE_CAT){

event.target.setCircleType(Circle.TYPE_SELECTED);

}else{

return;

}

if(currentCat.indexX==0||currentCat.indexX==8||currentCat.indexY==0||currentCat.indexY==8){

alert('gameover');

return;

}

var dir=getMoveDir(currentCat);

switch(dir){

case MOVE_LEFT:

currentCat.setCircleType(Circle.TYPE_UNSELECTED);

currentCat=circleArr[currentCat.indexX-1][currentCat.indexY];

currentCat.setCircleType(Circle.TYPE_CAT);

break;

case MOVE_UP_LEFT:

currentCat.setCircleType(Circle.TYPE_UNSELECTED);

currentCat.circleArr[currentCat.indexY%2?currentCat.indexX:currentCat.indexX-1][currentCat.indexY-1];

currentCat.setCircleType(Circle.TYPE_CAT);

break;

case MOVE_UP_RIGHT:

currentCat.setCircleType(Circle.TYPE_UNSELECTED);

currentCat=circleArr[currentCat.indexY%2?currentCat.indexX+1:currentCat.indexX][currentCat.indexY-1];

currentCat.setCircleType(Circle.TYPE_CAT);

break;

case MOVE_RIGHT:

currentCat.setCircleType(Circle.TYPE_UNSELECTED);

currentCat=circleArr[currentCat.indexX+1][currentCat.indexY];

currentCat.setCircleType(Circle.TYPE_CAT);

break;

case MOVE_DOWN_RIGHT:

currentCat.setCircleType(Circle.TYPE_UNSELECTED);

currentCat=circleArr[currentCat.indexY%2?currentCat.indexX+1:currentCat.indexX][currentCat.indexY+1];

currentCat.setCircleType(Circle.TYPE_CAT);

break;

case MOVE_DOWN_LEFT:

currentCat.setCircleType(Circle.TYPE_UNSELECTED);

currentCat=circleArr[currentCat.indexY%2?currentCat.indexX:currentCat.indexX-1][currentCat.indexY+1];

currentCat.setCircleType(Circle.TYPE_CAT);

break;

default:

alert('gameover');

}

}

function addCircles(){

for(var indexY=0;indexY<9;indexY++){

for(var indexX=0;indexX<9;indexX++){

var c=new Circle();

gameView.addChild(c);

circleArr[indexX][indexY]=c;

c.indexX=indexX;

c.indexY=indexY;

c.x=indexY%2?indexX*55+25:indexX*55;

c.y=indexY*55;

if(indexX==4&&indexY==4){

c.setCircleType(3);

currentCat=c;

}else if(Math.random()<0.1){

c.setCircleType(Circle.TYPE_SELECTED);

}

c.addEventListener('click',circleClicked);

}

}

}

addCircles();

效果

813f1da9fe4985c195d973596a44cf1d.png

注意,easeljs.min.js这个文件是createjs套件里的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值