Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 蛇游戏:如何在2D阵列中更新位置_Javascript_Jquery_Html_Css_Graphics - Fatal编程技术网

Javascript 蛇游戏:如何在2D阵列中更新位置

Javascript 蛇游戏:如何在2D阵列中更新位置,javascript,jquery,html,css,graphics,Javascript,Jquery,Html,Css,Graphics,我没有2D阵列的经验,所以我开始尝试学习。一件事导致了另一件事,我开始制作经典的蛇游戏。我一直在添加“tail”的过程中,即在2D数组中放置一个值,然后让它在遍历数组时模拟“head”值的移动。我尝试了一些东西,但没有什么值得张贴,因为它们没有效果 这是我的小提琴: 和代码段: var板=[]; var firstDraw=true; var运动; var方向=‘向上’; 无功转速=300; var gameinprogress=false; //生成作为游戏板的2d阵列 函数构建板(){

我没有2D阵列的经验,所以我开始尝试学习。一件事导致了另一件事,我开始制作经典的蛇游戏。我一直在添加“tail”的过程中,即在2D数组中放置一个值,然后让它在遍历数组时模拟“head”值的移动。我尝试了一些东西,但没有什么值得张贴,因为它们没有效果

这是我的小提琴:

和代码段:

var板=[];
var firstDraw=true;
var运动;
var方向=‘向上’;
无功转速=300;
var gameinprogress=false;
//生成作为游戏板的2d阵列
函数构建板(){
对于(i=0;i<50;i++){//行
var-arr=[];
对于(x=0;x<50;x++){//列
如果(i==0 | | i==49){//如果顶部或底部
arr[x]=1;
}否则{
如果(x==0 | | x==49){
arr[x]=1;
}否则如果(第一次绘制){
如果(x==25&&i==25){
arr[x]=2;
firstDraw=false;
}
}否则{
arr[x]=0;
}
}
}
板推(arr);
}
绞车();
}
//从二维阵列中绘制电路板
功能绘图板(){
$('.food').remove();
对于(i=0;i<50;i++){
对于(x=0;x<50;x++){
如果(板[i][x]==2){
$(“.board”)
.附加(
'');
}
如果(板[i][x]==3){
$(“.board”)
.附加(
'');
}
}
}
}
//在黑板上随意放置食物
功能食品{
$('.food').remove();
行=数学楼层((数学随机()*48)+1);
col=Math.floor((Math.random()*48)+1);
板[行][列]=3;
}
//按箭头键移动
函数move(){
var-nextprop;
对于(i=1;i<49;i++){
对于(x=1;x<49;x++){
var prop=董事会[i][x];
如果(prop==2){
开关(方向){
案例“左”:
nextprop=board[i][x-1];
董事会[i][x-1]=2;
打破
案例“向上”:
nextprop=板[i-1][x];
董事会[i-1][x]=2;
打破
案例“正确”:
nextprop=板[i][x+1];
董事会[i][x+1]=2;
打破
案例“关闭”:
nextprop=板[i+1][x];
董事会[i+1][x]=2;
打破
}
如果(下一步===1){
重置();
$('.board').text('youlose');
}
如果(下一步===3){
食物;
如果(速度>100)速度-=20;
}
板[i][x]=0;
$('.player').remove();
绞车();
}
}
}
}
//重置游戏板
函数重置(){
gameinprogress=false;
间隙(运动);
board.length=0;
firstDraw=true;
速度=300;
$('.player').remove();
$('.food').remove();
建筑板();
绞车();
}
/*
===================
按钮点击事件
===================
*/
//在单击时切换开始、停止按钮
$(“#开始,#停止”)。单击(函数(){
$(“#开始,#停止”).toggle();
});
//开始游戏(生成食物、绘制棋盘并开始移动)
$(“#开始”)。单击(函数(){
gameinprogress=true;
食物;
绞车();
移动=设置间隔(函数(){
移动(“向上”);
},速度);
});
//停止游戏(重置棋盘,删除游戏丢失的文字(如果有)
$('#停止')。单击(函数(){
$('.board')。文本('');
重置();
});
//检查按下了哪个箭头键,相应地移动
//如果(方向=='''''''';为防止“作弊”运动而实施
$(文档).keyup(函数(e){
如果(!gameinprogress)返回;
var-key=e.which;
开关(钥匙){
案例37:
如果(方向==‘左’)中断;
方向='左';
间隙(运动);
移动=设置间隔(函数(){
move();
},速度);
move();
打破
案例38:
如果(方向==‘向上’)中断;
方向=‘向上’;
间隙(运动);
移动=设置间隔(函数(){
move();
},速度);
移动(“向上”);
打破
案例39:
如果(方向==‘右’)中断;
方向='右';
间隙(运动);
移动=设置间隔(函数(){
move();
},速度);
move();
打破
案例40:
如果(方向==‘向下’)中断;
方向=‘向下’;
间隙(运动);
移动=设置间隔(函数(){
移动(“向下”);
},速度);
move();
打破
}
});
///主要
建筑板();
绞车()
.container{
文本对齐:居中;
宽度:95%;
身高:95%;
位置:绝对位置;
背景颜色:浅灰色;
}
.董事会{
位置:相对位置;
高度:250px;
宽度:250px;
保证金:0自动;
边框:5px黑色实心;
}
.边界{
框大小:边框框;
位置:绝对位置;
显示:内联块;
边框:1px纯黑;
宽度:5px;
高度:5px;
保证金:0;
}
.玩家{
背景颜色:浅绿色;
}
.食物{
背景颜色:橙色;
}

开始
停止
我建议你打破d