dotinstallを参考にカードゲームを作ろうとしてます。
1-6までの数字を4枚出したいです。
JavaScriptを
card = cards.splice(Math.floor(Math.random() * cards.length), 1)[0];
から
card = cards.splice(Math.floor(Math.random() * 6), 1)[0];
にしてみましたが、0-3枚まで表示されるだけでした。
ソースは、以下です。
html
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>Soroeru Game</title> <link rel="stylesheet" href="css/styles.css"> </head> <body> <div class="container"> <div id="stage"> <!-- <div class="card-container"> <div class="card"> <div class="card-front">1</div> <div class="card-back">?</div> </div> </div> --> </div> </div> <script src="js/main.js"></script> </body> </html>
JavaScript
(function() { // function getRandomInt(max) { // return Math.floor(Math.random() * Math.floor(max)); // } // console.log(getRandomInt(3)); // expected output: 0, 1 or 2 'use strict'; var pairs = 2;//2*2=4 で4枚生成 var cards = [];//カード用の空の配列を用意 function init() {//初期設定? var i;//ループカウンタ? var card; for (i = 1; i <= pairs; i++) {//ペアの枚数分ループを回す? cards.push(createCard(i)); cards.push(createCard(i)); // document.getElementById('stage').appendChild(createCard(i)); // document.getElementById('stage').appendChild(createCard(i)); } while (cards.length) {//良くわからないのがここ card = cards.splice(Math.floor(Math.random() * cards.length), 1)[0];//// TODO: spliceを調べる。 //Array.prototype.splice() - JavaScript | MDN //https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/splice //"返値 //取り除かれた要素を含む配列です。" document.getElementById('stage').appendChild(card); } } function createCard(num) { var container; var card; var inner; inner = '<div class="card-front">' + num + '</div><div class="card-back">?</div>'; card = document.createElement('div'); card.innerHTML = inner; card.className = 'card'; card.addEventListener('click', function() { card.className = 'card open'; }); container = document.createElement('div'); container.className = 'card-container'; container.appendChild(card); return container; } init(); })();
css
body { background: #3498db; font-family: Arial, sans-serif; font-size: 16px; font-weight: bold; } .container { width: 240px; margin: 20px auto; } #stage { display: flex; flex-wrap: wrap; } .card-container { perspective: 100px; width: 50px; height: 70px; margin: 5px; } .card { cursor: pointer; width: 100%; height: 100%; transition: 0.8s; position: relative; transform-style: preserve-3d; } .card-front, .card-back { width: 100%; height: 100%; text-align: center; line-height: 70px; border-radius: 8px; position: absolute; top: 0; left: 0; backface-visibility: hidden; } .card-back { background: #f1c40f; color: #fff; } .card-front { background: #fff; color: #f1c40f; transform: rotateY(180deg); } .card.open { transform: rotateY(180deg); }
参考
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/20 13:27
2020/09/20 18:21