javascript 编写的贪吃蛇
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<style>
.container{height: 300px;width: 300px;position: relative;margin: 100px auto;background: #c2e2ae;}
.bgTable{border: 1px solid black;border-spacing: 0;border-collapse:collapse;position: absolute}
.bgTable td{height: 20px;width: 20px;border: 1px solid black}
.bgTable tr{height: 20px;width: 100px;border: 1px solid black}
.cube{display: block;height:22px;width: 22px;background: red;position: absolute;margin: 1px}
#cu2{top: 0px;left:115px }
</style>
</head>
<body>
<div class="container">
<table class="bgTable">
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
</table>
<span class="cube" id="cu1"></span>
<span class="cube" id="cu2"></span>
</div>
<script>
var container=document.querySelector('.container');
var cube=document.querySelector('.cube');
var up=38,down=40,left=37,right=39;// 上下左右 方向键的键码(keyCode)是38、40、37和39,
var t1,t2,t3,t4;
var cu1=document.querySelector('#cu1');
var cu2=document.querySelector('#cu2');
var randomdot=[0,23,46,69,92,115,138,161,184,207,230,253,276];//随机自由点位置
var n=2; var arrLeft=[],arrTop=[];//用来存储第一个方块每一步的位置 /*设置向上下左右移动*/
function moveLeft(obj){
t1=setInterval(function(){
obj.style.left=obj.offsetLeft-24+'px';
arrLeft.push(obj.offsetLeft);//存储位置
arrTop.push(obj.offsetTop);
if(obj.offsetLeft<=20){clearInterval(t1);}
},500)
}
function moveRight(obj){
t2=setInterval(function(){
obj.style.left=obj.offsetLeft+22+'px';
arrLeft.push(obj.offsetLeft);
arrTop.push(obj.offsetTop);
if(obj.offsetLeft>=270){clearInterval(t2);}
},500)
}
function moveTop(obj){
t3=setInterval(function(){
obj.style.top=obj.offsetTop-24+'px';
arrLeft.push(obj.offsetLeft);
arrTop.push(obj.offsetTop);
if(obj.offsetTop<=20){clearInterval(t3);}
},500)
}
function moveBottom(obj){
t4=setInterval(function(){
obj.style.top=obj.offsetTop+22+'px';
arrLeft.push(obj.offsetLeft);
arrTop.push(obj.offsetTop);
if(obj.offsetTop>=270){clearInterval(t4);}
},500)
}
/*对上下左右按键进行监听,按下某一个,会取消其他方向的移动,*/
document.onkeydown=function(){
var obj=cu1;
if(event.keyCode==up){
clearInterval(t1);
clearInterval(t2);
clearInterval(t3);
clearInterval(t4);
moveTop(obj);
}else if(event.keyCode==down){
clearInterval(t1);
clearInterval(t2);
clearInterval(t3);
clearInterval(t4);
moveBottom(obj);
}else if(event.keyCode==left){
clearInterval(t1);
clearInterval(t2);
clearInterval(t3);
clearInterval(t4);
moveLeft(obj);
}else if(event.keyCode==right){
clearInterval(t1);
clearInterval(t2);
clearInterval(t3);
clearInterval(t4);
moveRight(obj);
}
};
/*用来产生随机位置的自由方块*/
function newdot(){
var dot=document.createElement('span');
dot.className='cube';
container.appendChild(dot);
console.log(container.childElementCount);
var top1=Math.floor(Math.random()*14);
dot.style.top=''+randomdot[top1]+'px';
var left1=Math.floor(Math.random()*14);
dot.style.left=''+randomdot[left1]+'px';
}
/*当第一个方块和自由方块的位置重叠,自由方块将跟随第一个方块移动*/
function together(){
var container=document.querySelector('.container');
var small=container.lastElementChild;
if(cube.offsetLeft==small.offsetLeft&&cube.offsetTop==small.offsetTop){
var a=n;//用a将n的某一次的值固定
setInterval(function(){
/*自由方块1的位置为第一个方块倒一步的位置,自由方块2的位置为第一个方块倒两步的位置,以此内推*/
small.style.left=arrLeft[arrLeft.length-a]-1+'px';
small.style.top=arrTop[arrTop.length-a]-1+'px';
},10);
newdot();
n++;
}
}
T=setInterval(function(){
together();
},500); </script>
</body>
</html>
采用JavaScript编写的贪吃蛇,用了数组和定时器,坐标相关的知识,用了一下午,还是挺好玩的,就是没有写游戏结束,还有一些逻辑没有完成,永远都不会死的。。。
javascript 编写的贪吃蛇的更多相关文章
- JavaScript实现的--贪吃蛇
总的实现思路: 一.效果部分: 1.编写html代码,加上样式. 二.JavaScript部分: 1.利用dom方法创建一块草坪,即活动区域: 2.创建一条蛇,并设置其初始位置: ...
- JavaScript 小游戏 贪吃蛇
贪吃蛇 代码: <!DOCTYPE html><html><head> <meta charset="UTF-8"> <met ...
- JavaScript新手入门 贪吃蛇
从小就在玩贪吃蛇,但是知道今天自己做了一遍才知道原理的具体的实现步骤. 刚进入界面时显示开始游戏(不重要,本人比较喜欢吹毛求疵) 中间黑色部分为游戏的主要展示部分 主要步骤及源码: body中代码,红 ...
- javascript实现游戏贪吃蛇
1.设计蛇:属性有宽.高.方向.状态(有多少节),方法:显示,跑 2.设计食物:属性宽.高 3.显示蛇:根据状态向地图里加元素 4.蛇跑起来:下一节到前一节的位置,蛇头根据方向变,删除原来的蛇,新建蛇 ...
- 原生JavaScript实现的贪吃蛇
github代码地址:https://github.com/McRayFE/snake 涉及到的知识点: 键盘事件 setInterval()定时器 javascript中数组的使用 碰撞的检测 of ...
- JavaScript 面向对象思想 贪吃蛇游戏
js代码: 游戏的对象 ,食物,蛇 ,游戏控制思路如下 (完整代码在https://github.com/774044859yf/ObjectSnakeGame下载) var snake = { aS ...
- C - 简易贪吃蛇的编写
不多废话,直接进入正题——用C编写简易贪吃蛇.附上拙劣的源码 * c-snake * 首先说明使画面动起来的原理:通过 system("cls"); 清除当前控制台的显示,再pri ...
- 用 Python 写个贪吃蛇,保姆级教程!
本文基于 Windows 环境开发,适合 Python 新手 本文作者:HelloGitHub-Anthony HelloGitHub 推出的<讲解开源项目>系列,本期介绍 Python ...
- JavaScript版—贪吃蛇小组件
最近在学习JavaScript,利用2周的时间看完了<JavaScript高级编程>,了解了Js是一门面向原型编程的语言,没有像C#语言中的class,也没有私有.公有.保护等访问限制的级 ...
随机推荐
- Hierarchical cluster算法介绍
突然想记录几个聚类算法,由于实力有限就先介绍一下层次聚类算法(Hierarchical cluster algorithm),这个聚类算法思想简单,但实现起来感觉复杂度挺大:以前看过<集体智慧编 ...
- (转)php的扩展和嵌入--php的生命周期与变量详述
本文转自http://blog.csdn.net/cedricliang/article/details/17247749?9435:这是在我想在js的循环中加入一段php,这段php代码会在每次执行 ...
- POJ 2349 Arctic Network (最小生成树)
Arctic Network 题目链接: http://acm.hust.edu.cn/vjudge/contest/124434#problem/F Description The Departme ...
- HDU 5762 Teacher Bo (暴力)
Teacher Bo 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5762 Description Teacher BoBo is a geogra ...
- Spring SimpleJdbcTemplate Querying examples
Here are few examples to show how to use SimpleJdbcTemplate query() methods to query or extract data ...
- Spring Object/XML mapping example
In this tutorial, we will extend last Maven + Spring hello world example by adding JDBC support, to ...
- Spring EL Operators example
Spring EL supports most of the standard mathematical, logical or relational operators. For example, ...
- Java 8 正式发布,新特性全搜罗
经过2年半的努力.屡次的延期和9个里程碑版本,甲骨文的Java开发团队终于发布了Java 8正式版本. Java 8版本最大的改进就是Lambda表达式,其目的是使Java更易于为多核处理器编写代码: ...
- Chrome的Postman的使用
Chrome提供了一个很好的Web App 名为 Postman 使用这个web app,你可以输入一个url,然后可以很清楚的看到返回的各种结果 直接在Google中输入Postman, 找到它 ...
- TypeScript学习笔记(七):模块
JavaScript中的模块 在学习TypeScript的模块之前我们先看看在JavaScript中的模块是如何实现的. 模块的好处 首先我们要了解使用模块的好处都有什么? 模块化.可重用: 封装变量 ...