贪吃蛇

作者: yamei_wu | 来源:发表于2017-10-14 17:05 被阅读0次

    贪吃蛇应该是接触手机玩的第二款游戏,那时候肯定没有想过有一天我也会码它的代码哈哈哈

    思路

    一. 找对象

            对象                                   属性                                          方法
    1.   游戏引擎          场景 (方格)、 食物 、蛇        游戏开始、游戏结束 
     2.  食物                     大小、颜色                                  出现、改变位置 
    3.   蛇      长度、颜色、位置、头、移动方向               吃、移动、长大
    

    二.实现对象

    1.HTML文件

     <!doctype html>
    <html lang="en">
     <head>
      <meta charset="UTF-8">
      <meta name="Generator" content="EditPlus®">
      <meta name="Author" content="">
      <meta name="Keywords" content="">
      <meta name="Description" content="">
      <title>贪吃蛇-selfdo</title>
      <style>
        table{
            border-collapse:collapse;/*消除表格间隙*/
            border:1px solid black;
        }
        td{
            width: 10px;
            height: 10px;
            /*background: red;*/
        }
        .food{
            background: red;
        }
      </style>
     </head>
     <body>
        <script src="food.js"></script>
        <script src="gameScene.js"></script>
        
      <script>
        
        gameScene.start();//调用方法才会显示表格
     // gameScene.allArr[3][2].className="food";//给某一个点设置样式
     // gameScene.allArr[this.y][this.x].className="food";//对象外面不能用this  没有指向
      </script>
     </body>
    </html>
    

    2.游戏引擎

    var gameScene={
        //属性
        rows:30,//行数
        cols:30,//列数
        allArr:[],
        food:null,
        //方法1.开始游戏
        start:function(){
            //游戏初始化
            gameScene.unit();
            this.food=new Food();
        },
        //方法1.初始化
        unit:function(){
            //创建表格(注意:在样式给table设样式)
            var oTable=document.createElement("table");
            for(var i=0;i<this.rows;i++){
                
                var arr=[];
                //创建行
                var oTr=document.createElement("tr");
                for(var j=0;j<this.cols;j++){
                    //每行创建元素
                    var oTd=document.createElement("td");
                    //添加
                    oTr.appendChild(oTd);
                    arr.push(oTd);
                }
                oTable.appendChild(oTr);
                gameScene.allArr.push(arr);
            }
            //添加到body中
            document.body.appendChild(oTable);
        }
        
    }
    

    3.食物

    /*                          属性                         方法
     * food                   大小、颜色                 出现、改变位置 
     */
    //构造函数Food
    function Food(){
        
        this.x=0;
        this.y=0;
        this.change();
    }
    //方法1.出现
    Food.prototype.display=function(){
        gameScene.allArr[this.y][this.x].className="food";
    }
    //方法2.改变位置
    Food.prototype.change=function(){
        this.x=parseInt(Math.random()*gameScene.cols);
        this.y=parseInt(Math.random()*gameScene.rows);
        //更新位置
        this.display();
    }
    
    

    4.蛇

    未完待续···
    

    总结

    1.在码程序的过程,我存在一个很大的弊病,经常写完一个js文件,却忘了调用,说到底还是学的不够扎实,在合文件也会出现诸如此类的问题。还是练得少了呀。
    2.比如在HTML文件里,
    gameScene.allArr[this.y][this.x].className="food";这一句,本意的this是指环境中出现的食物,而在页面上用的this指向的是window,window对象上是找不到那两个属性的,找不到自然就是undefined啦,所以会报下图的错误:


    pict1.png

    3.平时学似乎觉得也不难,但只有你真正做一个东西的时候才是考验,是不是能把学到的轻松相结合、运用,让它变成你脑袋里的东西。
    4.未来的录还长···

    相关文章

      网友评论

          本文标题:贪吃蛇

          本文链接:https://www.haomeiwen.com/subject/dptfuxtx.html