<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>贪食蛇</title></head>
<body>
<style type="text/css">
.table_back{width:320px;height:320px;border-bottom:1px solid black;border-right:1px solid black;}
.floor{border-left:1px solid black;border-top:1px solid black;font-size:1px;}
</style>
<script type="text/javascript"><!--
/*--
标题:简单的贪吃蛇
设计:王集鹄
博客:http://blog.csdn.net/zswang
日期:2010年1月22日
--*/
function Snake(options) {
var self = this;
options = options || {};
this.colCount = options.colCount || 20;
this.rowCount = options.rowCount || 20;
this.parent = options.parent || document.body; // 容器
this.speed = options.speed || 200; // 移动间隔时间
this.initLength = options.initLength || 3; // 初始长度
this.button_replay = document.createElement("input");
this.button_replay.type = "button";
this.button_replay.value = "replay";
this.button_replay.onclick = function() {
self.replay();
};
this.parent.appendChild(this.button_replay);
this.table_back = document.createElement("table");
this.table_back.className = "table_back";
this.table_back.cellPadding = "0px";
this.table_back.cellSpacing = "0px";
this.playing = false; // 是否在进行中
this.floors = {}; // 矩阵地板矩阵 [y,x]
for (var i = 0; i < this.rowCount; i++) {
var tr = this.table_back.insertRow(-1);
for (var j = 0; j < this.colCount; j++) {
var td = tr.insertCell(-1);
td.className = "floor";
td.innerHTML = " ";
this.floors[[i, j]] = {
td: td,
pos: [i, j]
};
}
}
this.parent.appendChild(this.table_back);
var documentKeydown = function(e) { // 处理按键
e = e || event;
var code = e.keyCode || e.which || e.charCode;
if (code < 37 || code > 40) return;
var direction = code - 37;
if (self.offsets[direction][0] == self.offsets[self.direction][0] &&
self.offsets[direction][1] == -self.offsets[self.direction][1]) return; // 不回头
if (self.offsets[direction][1] == self.offsets[self.direction][1] &&
self.offsets[direction][0] == -self.offsets[self.direction][0]) return; // 不回头
self.direction = direction;
if (e.preventDefault) e.preventDefault();
if (e.stopPropagation) e.stopPropagation();
e.cancelBubble = true;
e.returnValue = false;
};
if (document.addEventListener)
document.addEventListener("keydown", documentKeydown, true);
else if (document.attachEvent)
document.attachEvent("onkeydown", documentKeydown);
this.replay();
}
Snake.prototype = {
replay: function() { // 重新开始
var self = this;
this.direction = 0;
this.colorIndex = 0;
for (var i = 0; i < this.rowCount; i++)
for (var j = 0; j < this.colCount; j++) {
var floor = this.floors[[i, j]];
floor.color = "";
floor.type = "space"; // space: 空地 food: 食物 body: 身体
this.changeFloor(floor);
}
this.bodys = []; // 身体
var center = [Math.floor(this.rowCount / 2), Math.floor(this.colCount / 2)]; // 中心位置
for (var i = 0; i < this.initLength; i++) {
this.bodys.push({
floor: this.floors[center],
color: this.colors[this.colorIndex]
});
this.colorIndex = (this.colorIndex + 1) % this.colors.length;
}
// 头部
this.bodys[0].color = "#000";
this.bodys[0].floor.color = this.bodys[0].color;
this.bodys[0].floor.type = "body";
this.changeFloor(this.bodys[0].floor);
this.randmoFool();
clearInterval(this.timer);
this.timer = setInterval(function() { self.move(); }, this.speed);
},
offsets: [[0, -1], [-1, 0], [0, +1], [+1, 0]], // 移动偏移
gameover: function() {
clearInterval(this.timer);
alert("game over");
},
move: function() {
var head = [ // 移动头部坐标
this.bodys[0].floor.pos[0] + this.offsets[this.direction][0],
this.bodys[0].floor.pos[1] + this.offsets[this.direction][1]
];
if (!this.floors[head] ||
!/^(space|food)$/.test(this.floors[head].type)) { // 非食物和空地
this.gameover();
return;
}
var tail = this.bodys[this.bodys.length - 1].floor.pos; // 尾
if (this.floors[head].type == "food") { // 吃到食物
this.bodys.push({ color: this.floors[head].color });
this.randmoFool();
}
for (var i = this.bodys.length - 1; i > 0; i--) // 身体移动
this.bodys[i].floor = this.bodys[i - 1].floor;
this.bodys[0].floor = this.floors[head];
this.bodys[0].floor.color = this.bodys[0].color;
this.floors[tail].color = "";
this.floors[tail].type = "space";
this.changeFloor(this.floors[tail]); // 清除原尾部位置
for (var i = this.bodys.length - 1; i >= 0; i--) {
this.bodys[i].floor.color = this.bodys[i].color;
this.bodys[i].floor.type = "body";
this.changeFloor(this.bodys[i].floor);
}
},
colors: ["#f0f", "#c00", "#0c0", "#c00", "#880", "#808", "#088"], // 食物颜色
randmoFool: function() { // 随机投放食物
do {
var pos = [
Math.floor(Math.random() * this.rowCount),
Math.floor(Math.random() * this.colCount)
];
var floor = this.floors[pos];
} while(floor.type != "space"); // 食物需要投放在空地上
floor.type = "food";
floor.color = this.colors[this.colorIndex];
this.colorIndex = (this.colorIndex + 1) % this.colors.length;
this.changeFloor(floor);
},
changeFloor: function(floor) {
if (floor.td.style.backgroundColor != floor.color)
floor.td.style.backgroundColor = floor.color;
}
};
new Snake();
--></script>
</body>
</html>
分享到:
相关推荐
【JS贪吃蛇游戏代码】是一款基于JavaScript编写的网页小游戏,它将经典的贪吃蛇玩法移植到了浏览器环境中,为用户提供了丰富的游戏体验。这款游戏代码结构清晰,适合学习和研究JavaScript编程,尤其是对于游戏开发感...
【JS贪吃蛇游戏代码】是一个基于JavaScript实现的网页游戏,它将经典的贪吃蛇游戏带入了现代浏览器环境。这款游戏具有多个难度等级,包括初级、中级、高级、超高级和变态模式,满足不同玩家的需求,让游戏体验更加...
jQuery贪吃蛇网页版游戏代码,贪吃蛇网页版游戏代码基于jquery.1.11.3.min.js制作,贪吃蛇游戏是一款...利用jQuery实现网页版贪吃蛇游戏代码以及利用jQuery实现、网页版、贪吃蛇、游戏代码等js/jquery网页特效代码下载。
《简易贪吃蛇游戏代码详解》 贪吃蛇游戏,作为一个经典的编程练习项目,深受初级编程者喜爱。本文将深入解析一款基于JavaScript(JS)和HTML5开发的简易贪吃蛇游戏,同时涵盖CSS3的颜色特效和背景图片的实现,为...
总结来说,这个JavaScript贪吃蛇源代码是一个很好的学习案例,涵盖了JavaScript的基础知识,如事件处理、定时器、DOM操作、数组处理以及简单的图形渲染。通过阅读和理解这段代码,开发者可以深入理解JavaScript在...
### JS贪吃蛇游戏代码解析 #### 一、概述 本文将对提供的“JS贪吃蛇简单代码”进行详细分析,旨在帮助初学者理解并掌握使用JavaScript开发简单游戏的基本思路和技术要点。 #### 二、HTML结构搭建 首先,我们来看...
【标题】"js html5简单的贪吃蛇游戏代码下载"所涉及的知识点主要集中在JavaScript、HTML5以及网页游戏开发上。下面将详细讲解这些技术及其在实现贪吃蛇游戏中的应用。 JavaScript是一种广泛用于Web开发的脚本语言,...
在本项目中,我们讨论的是一个使用纯JavaScript(JS)编写的贪吃蛇小游戏。JavaScript是一种广泛用于网页和网络应用的编程语言,尤其在前端开发领域有着不可或缺的地位。这个小游戏的实现完全依赖于JS,无需其他框架...
在本项目中,我们讨论的是一个使用原生JavaScript编写的网页版贪吃蛇游戏。这个小游戏是学习和交流JavaScript编程技巧的一个良好实例。下面将详细解释这个游戏的核心知识点,包括HTML结构、CSS样式以及JavaScript...
【JS网页版贪吃蛇游戏代码.zip】是一个包含JavaScript实现的贪吃蛇游戏的源代码包,主要由以下几个文件组成: 1. **snake_v2.0.css**:这是游戏的样式表文件,定义了游戏界面的布局、颜色、字体等视觉元素。在CSS中...
在本资源中,我们得到了一个基于JavaScript和HTML5编写的简单贪吃蛇游戏的源代码。这个项目展示了如何利用这两种技术来创建一个交互式的网页应用。让我们深入探讨一下相关知识点。 1. HTML5:HTML(超文本标记语言...
在这个"贪吃蛇游戏代码.rar"压缩包中,我们找到了实现这一游戏的源代码,这为我们深入理解游戏背后的编程逻辑提供了宝贵的学习资料。 贪吃蛇游戏的基本玩法是控制一条由多个身体部分组成的小蛇在有限的区域内移动,...
将上述逻辑整合到一起,一个完整的JavaScript贪吃蛇游戏大致如下: ```javascript // 初始化 // ... document.addEventListener('keydown', (event) => { // ... }); function gameLoop() { // ... ...
JavaScript版贪吃蛇游戏,网页小游戏代码分享,这类小游戏可以很好的用JS来实现,游戏速度由快、中、慢可选,按“空格键” 开始/暂停,方向键控制蛇身运动方向,若要想研究代码原理,可关注代码中的注释,写的非常好...
在本主题中,我们将深入探讨如何使用原生JavaScript实现经典的贪吃蛇游戏。JavaScript作为Web开发中最常用的脚本语言,其灵活性和强大的功能使得开发者能够创建各种交互式应用,包括这款深受喜爱的游戏。 首先,...
在这个项目中,我们将探讨如何使用原生JavaScript来实现一个网页版的贪吃蛇游戏。 首先,让我们了解JavaScript的基础知识。JavaScript是一种广泛用于Web开发的脚本语言,它在浏览器端运行,负责处理用户交互、动态...
在这个贪吃蛇游戏中,`index.html`文件是整个项目的入口,包含游戏的基本框架。例如,它可能包含`<canvas>`元素来绘制游戏画面,`<script>`标签来引入JavaScript代码,以及一些其他元素如按钮或提示信息,用于用户...
《贪吃蛇游戏的HTML与JavaScript实现解析》 贪吃蛇游戏,作为一款深受各年龄段玩家喜爱的经典益智游戏,其简洁的规则和无限的挑战性使其在各种平台都有着广泛的应用,包括PC和移动设备。在当今Web技术高度发达的...
纯js 贪吃蛇 游戏源码。用了canvas。没有做手机滑屏功能。有3种难度选择。