一、項目背景】
createjs是一個基于canvas的制作H5游戲、動畫、交互的庫。包括EaselJs、TweenJs、SoundJs、 PreloadJs四個部分。它基于容器進行展示,其中根容器是stage(舞臺)對象。
今天教大家用EaselJs、TweenJs結合做一個顏色配對游戲。
【二、項目準備】
1、去下方網站:
http://www.createjs.cc/
然后下載EaselJs、TweenJs這兩個模塊。
2、軟件:Dreamweaver
【三、項目目標】
隨機產生4種顏色,讓下方的色塊通過鼠標移動,匹配上方的顏色框。如果上方顏色框與下方色塊顏色相同。全部色塊匹配完成則為成功。
【四、項目實現】
1、導入EaselJs、TweenJs模塊。
<script src="js/easeljs-0.7.1.min.js"></script>
<script src="js/tweenjs-0.5.1.min.js"></script>
2、body 創建畫布canvas 設置畫布大小,畫布添加描邊 ,id屬性。
<canvas id="canvas" width="600" height="400" style="border: black solid 1px"></canvas>
3、創建shapes.js文件。定義一個初始化init()方法 ,創建stage對象。
function init() {
stage=new createjs.Stage("canvas");
}
4、定義畫圖形方法buildShapes(),調用createjs.Shape()方法 用graphics繪制描邊正方形。填充顏色。
function buildShapes() {
var colors=['blue', 'red', 'green', 'yellow'];
var i, shape, slot;
for (i=0; i < 4; i++) {
//slots 描邊正方形
slot=new createjs.Shape();
slots.push(slot);
//shapes 正方形
shape=new createjs.Shape();
shape.graphics.beginFill(colors[i]);
shape.graphics.drawRect(0, 0, 100, 100);
shape.regX=shape.regY=50;
shape.key=i;
shapes.push(shape);
}
}
5、設置正方形x,y的位置, for循環隨機填充顏色,添加在stage上。
slot.graphics.beginStroke(colors[i]);
slot.graphics.beginFill(createjs.Graphics.getRGB(255, 255, 255, 1));
slot.graphics.drawRect(0, 0, 100, 100);
slot.regX=slot.regY=50;
slot.key=i;
slot.y=80;
slot.x=(i * 130) + 100;
stage.addChild(slot);
6、定義setShapes方法,for循環隨機產生一個r值,添加到shapes。產生移動的正方形。添加到舞臺(stages)上。
function setShapes() {
var i, r, shape;
var l=shapes.length;
for (i=0; i < l; i++) {
r=Math.floor(Math.random() * shapes.length);
shape=shapes[r];
shape.homeY=320;
shape.homeX=(i * 130) + 100;
shape.y=shape.homeY;
shape.x=shape.homeX;
stage.addChild(shape);
shapes.splice(r, 1);
}
}
7、添加鼠標事件。控制正方形移動。
shape.addEventListener("mousedown", startDrag);
8、定義開始游戲方法startGame,設置游戲的幀數,添加監聽事件。
function startGame() {
createjs.Ticker.setFPS(60);
createjs.Ticker.addEventListener("tick", function (e) {
stage.update();
});
}
9、判斷游戲方法startDrag(e)
1)獲取當前鼠標的坐標。
var shape=e.target;
2)讓鼠標的坐標等于填充正方形的坐標。
stage.addEventListener('stagemousemove', function (e) {
shape.x=e.stageX;
shape.y=e.stageY;
});
3)hitTest方法。測試圖像是否與顏色相同的框有交集,判斷顏色是否相同。
if (slot.hitTest(pt.x, pt.y)) {
shape.removeEventListener("mousedown",startDrag);
score++;
createjs.Tween.get(shape).to({x:slot.x, y:slot.y}, 200, createjs.Ease.quadOut).call(checkGame);
console.log('h');
}
else {
}
4)TweenJs設置動畫效果。
createjs.Tween.get(shape).to({x:shape.homeX, y:shape.homeY}, 200, createjs.Ease.quadOut);
10、定義贏的方法checkGame ,用score分別代表四種顏色色塊,判斷score的值。
function checkGame(){
if(score==4){
alert('You Win!');
}
}
11、在init()中,調用方法,實現效果
buildShapes();
setShapes();
startGame();
【五、效果展示】
1、f12運行到chrome瀏覽器。
2、拖動隨機顏色塊,匹配顏色框。
3、四個顏色塊匹配完成 彈框 (勝利)!!
【六、總結】
1、本文主要介紹了createjs中EaselJs、TweenJs的用法,以及對stage是如何創建的,在stage上怎么去繪制圖形。在頁面上如何去呈現stage。
2、就本項目中的難點,重點,提供了詳細的講解和提供有效的解決方案。
3、大家可以嘗試了解createjs的其他模塊,官網上有對應的API文檔供大家學習。
4、按照操作步驟,自己嘗試去做。自己實現的時候,總會有各種各樣的問題,切勿眼高手低,勤動手,才可以理解的更加深刻。
5、需要本文源碼的小伙伴,后臺回復“顏色配對”四個字,即可獲取。
****看完本文有收獲?請轉發分享給更多的人****
想學習更多Python網絡爬蟲與數據挖掘知識,可前往專業網站:http://pdcfighting.com/
是一篇有趣的文章,我們精選了 JS13K 游戲編程挑戰的優秀作品,與大家分享。JS13K 是專為 JavaScript 開發者量身定制的編程競賽,報名參賽的開發者需要根據挑戰主題,利用 JS 開發一款不超過 13KB(譯者注:壓縮后檔案大小不超過 13KB,且不得使用任何托管的函式庫、圖片或資料)的游戲進行角逐。
我們精選了去年(譯者注:2018 年的主題為-離線游戲)參賽的優秀作品,你不光能體驗小游戲的樂趣,還可以搜尋一些編程的靈感。一起來瞧瞧吧!
這是一個很有挑戰性的關卡游戲,簡約的設計與有趣的音效讓游戲妙不可言。躲閃尖刺,躍過深坑,通過場景切換完成 25 個由易到難的關卡挑戰。作者還提供了一個很酷的關卡編輯器,讓你體驗創建關卡的樂趣。
游戲體驗:https://js13kgames.com/games/onoff/index.html
項目地址:https://github.com/starzonmyarmz/js13k-2018
Everyone's sky 是一款經典的科幻風格太空冒險游戲。除了主打太空冒險,這款游戲還兼具了一些 RPG 游戲要素。在游戲中,通過控制飛船移動,聯合太空中的其他勢力收集資源。你可以結交盟友,和平的完成任務,也可以攻擊你所遇到的一切勢力。和平還是毀滅,掌握在你的手中。
游戲體驗:https://js13kgames.com/games/everyones-sky/index.html
項目地址:https://github.com/remvst/everyones-sky
這是一款第三人稱射擊游戲。游戲主角被關在損壞的實驗室里,通過射殺變異的蜘蛛人,完成搜尋、重啟終端系統的任務。游戲運行流暢,而像素風格的場景與人物,出色的燈光與音效,也讓游戲蒙上一層陰暗、恐怖的氛圍。
游戲體驗:https://js13kgames.com/games/underrun/index.html
項目地址:https://github.com/phoboslab/underrun
這是一個簡單的即時戰略游戲。你需要清除病毒感染的系統節點,完成游戲挑戰。隨著關卡的深入,游戲難度會不斷遞增,你需要處理病毒感染的節點也會增多。這款游戲看似簡單,卻相當有挑戰。
游戲體驗:https://js13kgames.com/games/konnekt/index.html
項目地址:https://github.com/monsterkodi/konnekt
這款游戲與原版的超級馬里奧如出一轍。你需要控制主角移動、跳躍挑戰 30 個不同級別的關卡,而每個級別也引入了豐富的游戲機制,讓游戲妙趣橫生。此外,開發者還提供了關卡構建器,幫助你打造專屬的關卡并與朋友分享。
游戲體驗:
https://js13kgames.com/games/super-chrono-portal-maker/index.html
這是一個快節奏的跑酷游戲,你需要控制游戲主角奔跑、跳躍、沖刺躲避不同的障礙物。游戲里設置了自動保存點功能,省去了挑戰失敗而重新開始游戲的煩惱。游戲不僅運行流暢,游戲場景、動畫、音效也令人心情愉悅。
游戲體驗:https://js13kgames.com/games/offline-paradise/index.html
項目地址:https://github.com/sirxemic/js13k-game
Raven 是一款動作益智游戲。你的任務很簡單,通過調整游戲人物視角,在躲避神秘生物的同時完成修復安全攝像頭的目標。游戲看似簡單,但任務難度隨關卡的增加變得困難重重。
游戲體驗:https://js13kgames.com/games/raven/index.html
項目地址:https://github.com/elliot-nelson/js13k-2018-raven
這是一款相當鍛煉大腦的益智游戲。游戲的背景故事設定在破損的空間站內,你需要操縱主角在氧氣耗盡之前,修復空間站系統并逃生。游戲設置了三個級別難度,操作簡單(支持色盲模式),只需要利用鼠標就可以完成游戲。
游戲體驗:https://js13kgames.com/games/systems-offline/index.html
項目地址:https://github.com/eschatonic/SystemsOffline
Re-wire 是一款邏輯思維游戲。你需要躲避鋸齒的干擾,將線纜相連并插入插座。隨著游戲進程的深入,挑戰難度逐漸增加。開發者很有心,還提供了游戲自動保存功能。喜歡的朋友可以試試。
游戲體驗:https://js13kgames.com/games/re-wire/index.html
項目地址:https://github.com/JMankopf/js13k-rewire
這款游戲與跑酷游戲類似。你需要操作飛船,在太陽系各大行星上收集金幣,并躲避障礙,勇奪高分。游戲還提供了購買飛船的功能。
游戲體驗:https://js13kgames.com/games/spacecraft/index.html
項目地址:https://github.com/tricsi/spacecraft
感謝你的閱讀。若你有所收獲,歡迎點贊與分享。
注:
英文原文:10 Amazing JavaScript Games In Under 13kB of Code
作者:Georgi Georgiev
譯者:IT程序獅
譯文地址:
https://zhuanlan.zhihu.com/p/57789538
家好,我是你們的章魚貓。
掃雷大家都玩過吧,Windows 里面的經典游戲。我記得上初中那會,上計算機課,都是偷偷玩這個游戲,懷念呀。但是不得不說,掃雷相比紙牌難度還是大一點的,畢竟還要費一點腦子的。
今天要推薦的項目就是重溫經典,只通過 HTML/CSS(沒有任何 JavaScript)來實現的掃雷游戲。
這個游戲另外一個很有趣的地方就是,為了強調沒有使用 JavaScript,掃雷游戲中的雷就是 JS,哈哈哈。
整個項目使用最核心的技術就是 CSS 里面的是 Space Toggle,感興趣的同學可以了解一下哦。
通過如下網站可以試玩上面的掃雷游戲:
https://propjockey.github.io/css-sweeper/
更多項目詳情請查看如下鏈接。
開源項目地址:
https://github.com/propjockey/css-sweeper
*請認真填寫需求信息,我們會在24小時內與您取得聯系。