- HTML5 Game Development HOTSHOT
- Makzan
- 400字
- 2021-12-08 12:42:45
Placing the patterns on the deck
In this task, we are going to list the pattern in the deck. Later, we will let the player select patterns from this deck.
Prepare for lift off
We are going to need a new module to handle the display of the composition. Let's create a new empty JavaScript file named composition-view.js
.
We need to import the file into the index.html
file, as follows:
<script src='js/composition-view.js'></script>
Engage thrusters
Let's work on the pattern with the following steps:
- In the game scene of the
index.html
file, we add two DOM elements, namely,#your-composition
and#deck
:<div id="game-scene" class="scene out"> ... <div id="your-composition"></div> <div id="deck" class="deck"></div> </div>
- In the template element, we add the template for the pattern's slot:
<div id="element-template"> <!-- for deck view --> <div class="pattern-slot"> <div class="pattern" data-pattern="1"></div> </div> ... </div>
- The following is our
composition-view.js
file:(function(){ var game = this.colorQuestGame = this.colorQuestGame || {}; // composition module game.compositionView = { node: document.getElementById('your-composition'), }; })();
- Before the end of the
gameScene.visualize
method, we add the visualization logic for the player's composition:// randomize the patterns array patternsToShow.sort(function(a, b){ return Math.random() - 0.5; }); // empty the current deck view var deckNode = document.getElementById('deck'); deckNode.removeAllChildren(); // add the pattern to the deck view for (var i in patternsToShow) { var patternSlotNode = document.querySelector('#element-template .pattern-slot').cloneNode(/*clone children=*/true); patternSlotNode.querySelector('.pattern').setAttribute('data-pattern', patternsToShow[i]); deckNode.appendChild(patternSlotNode); }
- From the
game.js
file, we remove all the selected patterns before starting a new level:nextLevel: function() { ... game.compositionView.node.removeAllChildren(); this.startLevel(); },
- We need the following CSS style for the composition and patterns:
/* player's composition and pattern */ #your-composition { position: absolute; width: 100px; height: 100px; right: 65px; top: 120px; border: 3px solid #999; } #your-composition > .pattern { width: 100px; height: 100px; position: absolute; } /* deck and pattern */ .deck { position: absolute; top: 360px; left: 20px; } .pattern-slot { width: 100px; height: 100px; outline: 4px solid #BC7702; float: left; border-radius: 3px; margin: 10px 0 0 10px; } .deck .pattern { width: 100%; height: 100%; }
We should have the following screenshot once this task is completed. The deck shows the patterns that a player needs to compose the quest:

Objective complete – mini debriefing
JavaScript comes with a sort
method for the array. Normally, we compare the given two array elements and return +1
or -1
to control elements' swapping.
We can randomize an array by randomly returning either +1
or -1
:
patternsToShow.sort(function(a, b){ return Math.random() - 0.5; });
After we randomize the patterns, we clone each pattern from the template and append them to the deck element.
- Hands-On Intelligent Agents with OpenAI Gym
- 西門子S7-200 SMART PLC從入門到精通
- 群體智能與數(shù)據(jù)挖掘
- 機器學(xué)習(xí)流水線實戰(zhàn)
- 變頻器、軟啟動器及PLC實用技術(shù)260問
- 筆記本電腦維修90個精選實例
- ZigBee無線通信技術(shù)應(yīng)用開發(fā)
- Natural Language Processing and Computational Linguistics
- 數(shù)據(jù)清洗
- Arduino創(chuàng)意機器人入門:基于ArduBlock(第2版)
- INSTANT R Starter
- fastText Quick Start Guide
- 華人動畫師的法蘭西印象
- 局域網(wǎng)組建與管理技術(shù)詳解
- SQL Server 2017 Machine Learning Services with R