JavaScript
アイキャッチ 猫

こんにちは。前回はJavaScriptを使って、ビンゴカードを作成してみました。


今回はビンゴマシンを作成してみましょう!

HTML

まずはHTMLを作成しています。
divのwrapperで全体的に囲み、
・ルーレット div要素
・ルーレットの開始・停止ボタン div要素
・ルーレット停止後、出た数字を一覧で追加する枠 ul要素
で作成しています。

// 全体的な枠
<div class="wrapper">
    // ルーレット
    <div id="result" class="result centering"></div>
    // ルーレット開始、停止のボタン
    <div class="wrapper-button">
        <button id="button" class="button">START</button>
    </div>
    // ルーレットを停止後、出た数字を一覧で表示
    <ul id="number" class="number"></ul>
</div>

CSS

こちらがCSSです。
HTMLで設定した要素に対して、スタイルを設定していきます。
この辺りはコピペで好きなところを調整してもいいと思います!

@charset "utf-8";

body {
    font-family: arial, sans-serif;
}

.wrapper {
    margin: 0 auto;
    text-align: center;
}

.centering {
    display: flex;
    justify-content: center;
    align-items: center;
    margin: 0 auto;
}

/* ルーレット */
.result {
    border: solid 1px #B78D4A;
    border-radius: 50%;
    font-size: 70px;
    
    margin-bottom: 20px;
    width: 130px;
    height: 130px;
}

/* 出た数字の一覧 */
.number {
    color: #B78D4A;
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-start;
    margin: 0 auto;
    list-style: none;
    width: 80%;
    padding: 0;
}

.number li {
    background-color: #B78D4A;
    color: #fff;
    border-radius: 10px;
    height: 40px;
    margin: 4px;
    width: 40px;
}

/* ボタン */
.wrapper-button {
    padding: 20px 0;
}

.button {
    font-size: 30px;
    display: inline-block;
    padding: .8rem 1.6rem;
    border: none;
    border-radius: 25px;
    color: #FFF;
    background-image: linear-gradient(45deg, #B78D4A 0%, #D4BB92 100%);
}

.button:hover {
    background-image: linear-gradient(45deg, #D4BB92 0%, #FDE0A5 100%);
}

JavaScript

Jqueryを使っています。

まずは、ビンゴの数字一覧を作成します。この一覧を使ってルーレットを回します。

次にSTARTとSTOPのクリックイベントでルーレットを回したり、結果を表示させたりします。
詳しくはコメントを記載していますので、確認してください。

$(function () {

    // 1~75まで、bingoの数字一覧を作成
    var max = 75;
    var bingo = [];
    for (var i = 1; i <= max; i++) {
        bingo.push(i);
    }

    var timer;
    var random;
    // START・STOPボタンクリックのイベント
    $("#button").on("click", function () {
        // START
        if ($(this).text() == "START") {
            // ボタンのテキストを"STOP"に変更
            $(this).text("STOP");

            // ルーレットタイマーを設定
            timer = setInterval(function () {
                random = Math.floor(Math.random() * bingo.length);
                $("#result").text(bingo[random]);
            }, 10);
        // STOP
        } else {
            // ボタンのテキストを"START"に変更
            $(this).text("START");

            // ルーレットタイマーを停止
            clearInterval(timer);

            // 停止時の数字を結果に反映
            var result = bingo[random];
            // 一覧から削除(次のルーレットに表示させないため)
            bingo.splice(random, 1);

            // 数字一覧に追加
            $("#number").append($("<li>").text(result));
            $("#number li").addClass("centering");
        }
    });
});

デモ

こちらがデモページです。
STARTボタンをクリックしてルーレットが開始、一定時間後にSTOPボタンをクリックすることで、数字を止めることができます。

ボタンの下に今まで出た数字が一覧で表示されるので、カードを再チェックするときに活用することができます。

まとめ

前回のビンゴカードと合わせることで、ビンゴゲームをすることができます。
これならカードをビンゴゲーム一式を購入する必要もないので、簡単に遊ぶことができます。
良かったら遊んでみてくださいね!

本記事作成に当たり、こちらのサイトを参考にさせていただきました。ありがとうございます。

HTML / CSS / JavaScript(jQuery)でビンゴゲームを作成

良かったら他の記事も見てみてくださいね!