pc端贪吃蛇游戏
2016-09-02 07:44
295 查看
下面是用JavaScript语言来写的pc端贪吃蛇游戏,可以一起在探讨哦 也可以直接打开压缩包链接 http://download.csdn.net/detail/jscyl/9619350,欢迎留言
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>贪吃蛇</title>
<style type="text/css">
* {
margin: 0;
padding: 0;
}
h1 {
text-align: center;
}
#score {
text-align: center;
font-size: 50px;
}
#snakeMap {
margin: 0 auto;
border: 5px solid red;
}
.row {
height: 20px;
/*border: 1px solid blue;*/
}
.col {
height: 20px;
width: 20px;
border: 1px solid black;
float: left;
box-sizing: border-box;
}
.moveSnake {
background-color: green;
}
.food {
background-color: orange;
}
</style>
</head>
<body>
<h1>贪吃蛇</h1>
<h1>规则:按上下左右四个键控制方向</h1>
<div id="score">0</div>
<div id="snakeMap">
</div>
</body>
<script type="text/javascript">
var snakeMap = document.getElementById("snakeMap");
var score = document.getElementById("score");
var rowNumber = 20;
var colNumber = 14;
snakeMap.style.width = 20 * colNumber + "px";
snakeMap.style.height = 20 * rowNumber + "px";
var divsSnake = [];
for (var i = 0; i < rowNumber; i++) { //行
var rowDiv = document.createElement("div");
rowDiv.className = "row";
snakeMap.appendChild(rowDiv);
var rowArray = [];
for (var j = 0; j < colNumber; j++) { //列
var colDiv = document.createElement("div");
colDiv.className = "col";
rowDiv.appendChild(colDiv);
rowArray.push(colDiv);
}
divsSnake.push(rowArray);
}
var snakeBodys = []; //存储蛇身所占div
for (var i = 0; i < 3; i++) {
snakeBodys[i] = divsSnake[0][i];
divsSnake[0][i].className = "moveSnake col";
}
var directionSnake = "right";
var changeDirection = true;
var timeOut;
document.onkeydown = function(e) {
clearTimeout(timeOut);
//
if (!changeDirection) {
return;
}
var event1 = window.event || e;
if (directionSnake == "right" && event1.keyCode == 37) {
return;
} else if (directionSnake == "left" && event1.keyCode == 39) {
return;
} else if (directionSnake == "top" && event1.keyCode == 40) {} else if (directionSnake == "bottom" && event1.keyCode == 38) {
return;
}
switch (event1.keyCode) {
case 37:
{
directionSnake = "left";
break;
}
case 38:
{
directionSnake = "top";
break;
}
case 39:
{
directionSnake = "right";
break;
}
case 40:
{
directionSnake = "bottom";
break;
}
}
console.log(directionSnake);
changeDirection = false;
timeOut = setTimeout(function() {
changeDirection = true;
}, 300);
}
var x = 2;
var y = 0;
var foodX = 0;
var foodY = 0;
var scores = 0;
var timerMove = setInterval(function() {
clearTimeout(timeOut);
changeDirection = true;
switch (directionSnake) {
case "right":
{
x++;
break;
}
case "left":
{
x--;
break;
}
case "top":
{
y--;
break;
}
case "bottom":
{
y++;
break;
}
}
if (x < 0 || y < 0 || x >= colNumber || y >= rowNumber) {
clearTimeout(timerMove);
alert("gameover");
return;
}
for (var i = 0; i < snakeBodys.length; i++) {
if (snakeBodys[i] == divsSnake[y][x]) {
clearTimeout(timerMove);
alert("gameover");
return;
}
}
if (foodX == x && foodY == y) {
divsSnake[y][x].className = "moveSnake col";
snakeBodys.push(divsSnake[y][x]);
scores++;
score.innerHTML = scores;
ranFoods();
} else {
snakeBodys[0].className = "col";
snakeBodys.shift();
divsSnake[y][x].className = "col moveSnake";
snakeBodys.push(divsSnake[y][x]);
}
}, 500);
function randomFun(m, n) {
return Math.floor(Math.random() * (n - m + 1) + m);
}
function ranFoods() {
foodY = randomFun(0, rowNumber - 1);
foodX = randomFun(0, colNumber - 1);
if (divsSnake[foodY][foodX].className == "moveSnake col") {
ranFoods();
} else {
divsSnake[foodY][foodX].className = "food col";
}
}
ranFoods();
</script>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>贪吃蛇</title>
<style type="text/css">
* {
margin: 0;
padding: 0;
}
h1 {
text-align: center;
}
#score {
text-align: center;
font-size: 50px;
}
#snakeMap {
margin: 0 auto;
border: 5px solid red;
}
.row {
height: 20px;
/*border: 1px solid blue;*/
}
.col {
height: 20px;
width: 20px;
border: 1px solid black;
float: left;
box-sizing: border-box;
}
.moveSnake {
background-color: green;
}
.food {
background-color: orange;
}
</style>
</head>
<body>
<h1>贪吃蛇</h1>
<h1>规则:按上下左右四个键控制方向</h1>
<div id="score">0</div>
<div id="snakeMap">
</div>
</body>
<script type="text/javascript">
var snakeMap = document.getElementById("snakeMap");
var score = document.getElementById("score");
var rowNumber = 20;
var colNumber = 14;
snakeMap.style.width = 20 * colNumber + "px";
snakeMap.style.height = 20 * rowNumber + "px";
var divsSnake = [];
for (var i = 0; i < rowNumber; i++) { //行
var rowDiv = document.createElement("div");
rowDiv.className = "row";
snakeMap.appendChild(rowDiv);
var rowArray = [];
for (var j = 0; j < colNumber; j++) { //列
var colDiv = document.createElement("div");
colDiv.className = "col";
rowDiv.appendChild(colDiv);
rowArray.push(colDiv);
}
divsSnake.push(rowArray);
}
var snakeBodys = []; //存储蛇身所占div
for (var i = 0; i < 3; i++) {
snakeBodys[i] = divsSnake[0][i];
divsSnake[0][i].className = "moveSnake col";
}
var directionSnake = "right";
var changeDirection = true;
var timeOut;
document.onkeydown = function(e) {
clearTimeout(timeOut);
//
if (!changeDirection) {
return;
}
var event1 = window.event || e;
if (directionSnake == "right" && event1.keyCode == 37) {
return;
} else if (directionSnake == "left" && event1.keyCode == 39) {
return;
} else if (directionSnake == "top" && event1.keyCode == 40) {} else if (directionSnake == "bottom" && event1.keyCode == 38) {
return;
}
switch (event1.keyCode) {
case 37:
{
directionSnake = "left";
break;
}
case 38:
{
directionSnake = "top";
break;
}
case 39:
{
directionSnake = "right";
break;
}
case 40:
{
directionSnake = "bottom";
break;
}
}
console.log(directionSnake);
changeDirection = false;
timeOut = setTimeout(function() {
changeDirection = true;
}, 300);
}
var x = 2;
var y = 0;
var foodX = 0;
var foodY = 0;
var scores = 0;
var timerMove = setInterval(function() {
clearTimeout(timeOut);
changeDirection = true;
switch (directionSnake) {
case "right":
{
x++;
break;
}
case "left":
{
x--;
break;
}
case "top":
{
y--;
break;
}
case "bottom":
{
y++;
break;
}
}
if (x < 0 || y < 0 || x >= colNumber || y >= rowNumber) {
clearTimeout(timerMove);
alert("gameover");
return;
}
for (var i = 0; i < snakeBodys.length; i++) {
if (snakeBodys[i] == divsSnake[y][x]) {
clearTimeout(timerMove);
alert("gameover");
return;
}
}
if (foodX == x && foodY == y) {
divsSnake[y][x].className = "moveSnake col";
snakeBodys.push(divsSnake[y][x]);
scores++;
score.innerHTML = scores;
ranFoods();
} else {
snakeBodys[0].className = "col";
snakeBodys.shift();
divsSnake[y][x].className = "col moveSnake";
snakeBodys.push(divsSnake[y][x]);
}
}, 500);
function randomFun(m, n) {
return Math.floor(Math.random() * (n - m + 1) + m);
}
function ranFoods() {
foodY = randomFun(0, rowNumber - 1);
foodX = randomFun(0, colNumber - 1);
if (divsSnake[foodY][foodX].className == "moveSnake col") {
ranFoods();
} else {
divsSnake[foodY][foodX].className = "food col";
}
}
ranFoods();
</script>
</html>
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- 我是运营,我没有假期
- 最后一次说说闭包
- Ajax
- 每个 Linux 游戏玩家都绝不想要的恼人体验
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 设计模式---状态模式在web前端中的应用
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法