zoukankan      html  css  js  c++  java
  • 贪吃蛇全文

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>面向对象贪吃蛇</title>
    <style>
    html, body {
    margin: 0;
    padding: 0;
    background: rgb(162, 186, 103);
    }
    #wall {
    margin: 100px auto 0;
    background: linear-gradient(to top, #eae65d, #abea95, #896360);
    box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.53);
    position: relative;
    }
    .createBody {
    20px;
    height: 20px;
    background: #fffdf5;
    position: absolute;
    box-shadow: 0 0 1px 1px #000000 inset;
    }
    #yel {
    background: #a2ba67;
    }
    .createFood {
    -webkit-border-radius: 10px;
    -moz-border-radius: 10px;
    border-radius: 10px;
    20px;
    height: 20px;
    position: absolute;
    box-shadow: 0 0 1px 1px #000000 inset;
    background: #fffdf5;
    }
    .bord {
    -webkit-border-radius: 10px 10px 0 0;
    -moz-border-radius: 10px 10px 0 0;
    border-radius: 10px 10px 0 0;
    -webkit-box-shadow: 0 1px 2px 1px grey;
    -moz-box-shadow: 0 1px 2px 1px grey;
    box-shadow: 0 1px 2px 1px grey;
    150px;
    font-size: 40px;
    color: #a31d42;
    text-align: center;
    border-style: solid;
    border- 0 1px 1px;
    border-color: #c5c6b9 #808080;
    }
    .bord:first-child {
    position: absolute;
    top: 0;
    left: 110%;
    }
    .bord:nth-child(2) {
    position: absolute;
    bottom: 0;
    left: 110%;
    }
    #score, #level {
    height: 80px;
    line-height: 80px;
    }
    .word {
    -webkit-border-radius: 10px 10px 0 0;
    -moz-border-radius: 10px 10px 0 0;
    border-radius: 10px 10px 0 0;
    background: #eae65d;
    height: 30px;
    line-height: 30px;
    font-size: 18px;
    }
    .int {
    margin-left: 10px;
    color: #000;
    300px;
    height: 400px;
    font-size: 30px;
    float: left;
    }
    .int span {
    200px;
    display: inline-block;
    }
    @keyframes add {
    0% {
    font-size: 80px;
    }
    100% {
    font-size: 40px;
    }
    }
    .foot{
    text-align: center;
    font-size: 16px;
    }
    </style>
    </head>
    <body>
    <div class="int">
    <p><span>to top</span>↑</p>
    <p><span>to bottom </span>↓</p>
    <p><span>to left </span>←</p>
    <p><span>to right</span> →</p>
    <p><span>stop</span>space</p>
    </div>
    <div id="wall">
    <div class="bord">
    <div class="word">score</div>
    <div id="score">0</div>
    </div>
    <div class="bord">
    <div class="word">level</div>
    <div id="level">1</div>
    </div>
    </div>
    <div class="foot">
    代码出处:youngHeart9506 CSDN blog
    </div>
    </body>
    <script>
    var oWall = document.getElementById('wall');
    var oInsert = document.getElementById('insert');
    var wallWidth = 700;
    var wallHeight = 400;
    oWall.style.width = wallWidth + 'px';
    oWall.style.height = wallHeight + 'px';
    var snake = {
    aSnake: [],
    size: 20,
    top: 200,
    left: 400,
    speed: 250,
    level: 1,
    len: 3,//长度默认3个单位
    direction: 'left',//方向默认向左走
    create: function () {//创建初始蛇
    for (var i = 0; i < snake.len; i++) {
    var left = snake.left + snake.size * i;
    var top = snake.top;
    var oDiv = document.createElement('div');
    oDiv.style.left = left + 'px';
    oDiv.style.top = top + 'px';
    oDiv.className = 'createBody';
    oWall.appendChild(oDiv);
    snake.aSnake.push(oDiv);
    }
    snake.aSnake[0].id = 'yel'
    },
    move: function () {
    //移动时 遍历蛇的身体div 设置的位置等于前一个的位置
    for (var b = snake.aSnake.length - 1; b > 0; b--) {
    var s = snake.aSnake[b];
    var s2 = snake.aSnake[b - 1];
    s.style.left = s2.style.left;
    s.style.top = s2.style.top;
    }
    var fstS = snake.aSnake[1];
    var addS = snake.aSnake[0];
    if (snake.direction == 'left')
    addS.style.left = parseInt(fstS.style.left) - snake.size + 'px';
    else if (snake.direction == 'right')
    addS.style.left = parseInt(fstS.style.left) + snake.size + 'px';
    else if (snake.direction == 'top')
    addS.style.top = parseInt(fstS.style.top) - snake.size + 'px';
    else if (snake.direction == 'bottom')
    addS.style.top = parseInt(fstS.style.top) + snake.size + 'px';
    snake.check();
    snake.eat();
    },
    check: function () {
    // 检查蛇头部的位置(死亡 吃东西)
    var fstS = snake.aSnake[0];
    var sLeft = parseInt(fstS.style.left);
    var sTop = parseInt(fstS.style.top);
    if (sLeft <= -snake.size || sLeft >= wallWidth || sTop <= -snake.size || sTop >= wallHeight) {
    clearInterval(snake.move);
    var M = confirm('撞到墙上了,游戏结束!是否重新开始?');
    if (M) {
    document.location.reload();
    } else {
    game.stop();
    }
    return;//检验是否撞到墙上了
    }
    for (var c = 1; c < snake.aSnake.length; c++) {
    var sb = snake.aSnake[c];
    if (sLeft == parseInt(sb.style.left) && sTop == parseInt(sb.style.top)) {
    clearInterval(snake.move);
    var N = confirm('撞到自己了,游戏结束!是否重新开始?');
    if (N) {
    document.location.reload();
    } else {
    game.stop();
    }
    return;
    }
    }
    },
    grow: function () {
    var level = document.getElementById('level');
    var score = document.getElementById('score');
    var aBody = snake.aSnake.length;
    var inner = score.innerHTML;
    if (aBody != snake.len) {
    score.innerHTML = (aBody - snake.len) * snake.level * 10;
    }
    level.className = '';
    if (aBody > 15) {
    snake.level = 2;
    } else if (aBody > 40) {
    snake.level = 3;
    }
    if (snake.level != level.innerHTML) {
    level.innerHTML = snake.level;
    }
    var fstS = snake.aSnake[snake.aSnake.length - 2];
    var addS = snake.aSnake[snake.aSnake.length - 1];
    addS.style.left = parseInt(fstS.style.left) + 'px';
    addS.style.top = parseInt(fstS.style.top) + 'px';
    return snake.level;
    },
    eat: function () {
    var food = document.getElementsByClassName('createFood')[0];
    var fstS = snake.aSnake[0];
    var fLeft = parseInt(food.style.left);
    var fTop = parseInt(food.style.top);
    var sLeft = parseInt(fstS.style.left);
    var sTop = parseInt(fstS.style.top);
    if (fLeft == sLeft && sTop == fTop) {
    snake.aSnake.push(food);
    food.className = 'createBody';
    snake.grow();
    var ofood = new Food();
    ofood.create();
    return snake.aSnake;
    }
    }
    };
    function Food() {
    }
    Food.prototype.default = function () {
    var left = 300;
    var top = 200;
    var oDiv = document.createElement('div');
    oDiv.style.left = left + 'px';
    oDiv.style.top = top + 'px';
    oDiv.className = 'createFood';
    oWall.appendChild(oDiv);
    };
    Food.prototype.create = function () {
    var left = Math.floor(Math.random() * (wallWidth / snake.size)) * snake.size;
    var top = Math.floor(Math.random() * (wallHeight / snake.size)) * snake.size;
    for (var i = 0; i < snake.aSnake.length; i++) {
    var s = snake.aSnake[i];
    if (left == parseInt(s.style.left) && top == parseInt(s.style.top)) {
    var food = new Food();
    food.create();
    return;
    }
    var oDiv = document.createElement('div');
    oDiv.style.left = left + 'px';
    oDiv.style.top = top + 'px';
    oDiv.className = 'createFood';
    }
    oWall.appendChild(oDiv);
    };
    var game = {
    inter: 'inter',
    init: function () {//游戏初始化
    var food = new Food();
    food.default();//生成定位食物
    snake.create();//生成蛇
    document.onkeyup = function (event) {
    var code = event.keyCode;
    if (code == 37 && snake.direction != "right") {
    snake.move();
    game.stop();
    snake.direction = "left";
    game.start();
    }
    if (code == 38 && snake.direction != "bottom") {
    snake.move();
    game.stop();
    snake.direction = "top";
    game.start();
    }
    if (code == 39 && snake.direction != "left") {
    snake.move();
    game.stop();
    snake.direction = "right";
    game.start();
    }
    if (code == 40 && snake.direction != "top") {
    snake.move();
    game.stop();
    snake.direction = "bottom";
    game.start();
    }
    if (code == 32) {
    game.stop();
    }
    };
    },
    start: function () {
    game.inter = setInterval(snake.move, snake.speed / snake.level);
    },
    stop: function () {
    clearInterval(game.inter)
    }
    };
    window.onload = function () {
    game.init();
    };
    </script>
    </html>

  • 相关阅读:
    很多人都没用过的轻量级Oracle数据库数据导出工具SQLLDR2——性能超赞
    IT人员必备linux安全运维之Ssh用途、安全性、身份认证以及配置……【转】
    ps aux排序
    Oracle-AWR报告简介及如何生成【转】
    MySQL删除数据几种情况以及是否释放磁盘空间【转】
    MySQL登录问题1045 (28000)处理步骤【原创】
    nginx与PHP的关系和交互方式【转】
    MySQL常见错误代码说明
    xargs -i 和-I 的区别【转】
    linux中的计算【转】
  • 原文地址:https://www.cnblogs.com/520lin/p/5744139.html
Copyright © 2011-2022 走看看