使用js做的貪吃蛇游戲的知識總結


使用js做了一個貪吃蛇游戲,但是自己很多的地方都不成熟:

1,沒有用到原型,構造函數,繼承之類的東西,這些地方要特別的注意,以后要注意經常看看別人的代碼,學會一些思想

2,表現為邏輯混亂,不知道怎樣用更簡單的方法,以后這方面需要多加練習

在貪吃蛇游戲中收獲的部分:

實現數組中棧的方法,幾個API

棧方法(后進先出)

1,push()方法接收任意數量的參數,將他們逐個添加到數組末尾,並且返回修改后數組的長度,

2,pop()方法從數組末尾移除最后一項,減少數組的length值,然后返回移除的項

隊列方法(先進先出)

1,shift()方法用於移除數組中的第一個項並返回該值,結合push()方法可以實現隊列的方法

1,與shift()相反的還有一個unshift()方法,這個方法可以在數組前端添加任意一個項並且返回新數組的長度

同時:unshift()方法和pop()方法可以實現從反向位置模擬隊列,就是從數組前端添加項,從數組末端移除項

實現數組查重的幾種方法:

方法一:

使用indexOf()判斷:

代碼如下:

 window.onload=function(){
        var array=[1,2,3,4];
        repeat(array);
        function repeat(arr){
            var arrStr=JSON.stringify(arr);
            for(var i=0;i<arr.length;i++){
                if(arrStr.indexOf(arr[i])!==arrStr.lastIndexOf(arr[i])){
                    alert("數組重復")
                }
            }
        }
    }

  應用字符串中的indexOf和lastIndexOf()方法來求:原理是如果在數組中存在兩個相同的元素,使用indexOf和lastIndexOf()方法得到的數組索引是不相同的,但是因為這兩個方法存在於字符串中,因此在使用前使用JSON將數組元素轉化為字符串是必須的,使用API(JSON.stringfy(arr))

在使用這個方法的時候,最好不要將如果檢測到有重復元素后發生的事件放到for循環內,因為這樣會重復好多次,可以定義一個bJuge來判斷,如果有重復的元素,將bJuge設為true

 2,使用sort()方法:

 var array=[1,2,3,2];
        //repeat(array);
        var nary=array.sort();
        for(var i=0;i<array.length;i++){
            if (nary[i]==nary[i+1]){
                alert("數組重復內容:"+nary[i]);
            }
        }  

代碼如上:

缺點:當數組中的元素為字符串的時候就不適用了,有局限性

3,

 var array=["天津","山東","濟南","濟南"];
        var s = array.join(",")+",";
        for(var i=0;i<array.length;i++) {
            if(s.replace(array[i]+",","").indexOf(array[i]+",")>-1) {
                alert("數組中有重復元素:" + array[i]);
                break;
            }
        }

方法:

使用的是兩個API join()和replace()的方法:

arrayObject.join(separator)  

上面這行代碼的意思是:
以separator 分割開  arrayObject 將每個元素分割成字符串,然后字符串間用separator分開

replace()方法:用於替換數組元素:

上面的代碼:

if(s.repplace(array[a]+","," ").indexOf(array[i]+",")>-1)

使用空格來替換掉array[a]+","元素,然后再繼續查找這個元素,如果發現替換掉之后這個元素依然存在,這說明數組中這個元素是存在的

4,最后一種是一種非常奇特的方法,作為了解即可:

  var array=["天津","山東","濟南","濟南"];
        isRepeat(array);
        function isRepeat(arr){
            var hash = {};
            for(var i in arr) {
                if(hash[arr[i]]){
                       alert(arr[i]);//"濟南

}
                    hash[arr[i]] = true;
            }
        }  

 這種方法很奇怪哎:

我們看:

var hash={};定義了一個對象

hash[arr[i]]給hash對象賦予了一個屬性,並且使用for循環給數組中的每一個元素都設置為hash對象的屬性,並且將這些屬性都設為true,在for循環中,使用了一個if判斷語句,

如果存在兩個重復元素的話,因為已經將第一個重復元素設為了true,那么如果檢測到后面沒被賦值的數組元素為true的話,這說明這個元素之前已經被賦予過值,從而我們可以得知在數組中存在重復元素

以上:

如果有別的感想我再更新

 

 

                                                                                                                                                                                                                                                                                                                                                                                      


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM