demo預覽->typewriter gameⅱ (chrome only 沒做相容)
別看一開始時速度不快,會線性增長的哦,反正樓主的score還沒達到過40...
為什麼叫ⅱ呢?之前寫了個打字機遊戲(試玩猛戳這裡),資料上只是簡單的手寫了50個單詞,全部輸入正確即可過關,本來想改一下做成競技類的(有分數的),但是一樣的小遊戲寫倆沒啥意思,正好最近看了下css3,突然有了某種靈感,於是typewriter gameⅱ粗線了。
之前的打字機遊戲是基於canvas和粒子系統的,這次是基於dom和css3的,不過思路都是一樣的。
在看下文之前,可以先回顧下《canvas之打字機遊戲》和《css3實踐之摩天輪式輪播+3d正方體+3d標籤雲(perspective、transform-style、perspective-origin)》,相同的內容就不多說了。
html檔案主要就是dom的一些css,核心檔案主要就是兩個js檔案。
初始化檔案,主要構造單詞陣列以及整個遊戲介面。
單詞直接從網上拉了個txt檔案(看檔案戳這裡),然後用ajax和正則將裡面的單詞提取放在array陣列中。
1
2
3
4
5
6
7
8
9
$.ajax (
});
不得不說正規表示式實在是太屌,有時間一定要好好看看。
接著構造了遊戲的主要介面,9個正方體圍成的乙個圈,構造方法和前文說的摩天輪式輪播類似,可以參考前文。
遊戲的核心檔案,控制整個小遊戲的邏輯。
簡單說說整個邏輯。監聽鍵盤,當正確打字時,字的顏色發生變化,不斷旋轉,不斷出現新的單詞,旋轉速度也不斷變快,直到遊戲結束。
這之中最糾結的是寫createword方法。因為得找乙個時機創造新的單詞替換舊單詞,最終我選擇當旋轉位置如下時呼叫方法:
剛好這一位置該div即將處在盲區,經過實踐發現旋轉角度滿足28+40*n 時呼叫方法即可,雜湊角度去重。
還有乙個問題,因為創造新的單詞前,先要去掉舊的單詞,jquery可以用empty方法,如果用原生的js將dom乙個乙個remove,要倒序寫:
1
2
3
4
5
var
c = d[i].getelementsbyclassname(
'cell'
);
// 必須倒著來 notice
for
(
var
j = c.length - 1; j >= 0; j--)
其他的話,主要是對旋轉速度的控制,以及遊戲過程中的各種index的控制,只要邏輯正確,隨便怎麼寫都行。
有興趣看完整的**可以猛戳:打字機遊戲ⅱ原始碼
css3很強大,正規表示式很強大,感概ing...
高階打字機
早苗入手了最新的高階打字機。最 自然有著與以往不同的功能,那就是它具備撤銷功能,厲害吧。請為這種高階打字機設計乙個程式,支援如下3種操作 t x 在文章末尾打下乙個小寫字母x。type操作 u x 撤銷最後的x次修改操作。undo操作 注意query操作並不算修改操作 q x 詢問當前文章中第x個字...
高階打字機
題目描述 請為一種高階打字機設計乙個程式,支援如下3種操作 2.u x 撤銷最後的x次修改操作。undo操作 注意query操作並不算修改操作 文章一開始可以視為空串。輸入描述 第1行 乙個整數n,表示運算元量。以下n行,每行乙個命令。保證輸入的命令合法。輸出描述 每行輸出乙個字母,表示query操...
高階打字機
題目描述 早苗入手了最新的高階打字機。最 自然有著與以往不同的功能,那就是它具備撤銷功能,厲害吧。請為這種高階打字機設計乙個程式,支援如下3種操作 1.t x 在文章末尾打下乙個小寫字母x。type操作 2.u x 撤銷最後的x次修改操作。undo操作 注意query操作並不算修改操作 3.q x ...