JavaScript

JavaScript 数当てゲームHitNumber4を作成してみた

読了時間: 約449
数当てゲーム HitNumber4

プログラミングをしていると、ツールを作成するのも良いのですが…。
私としては、やはりゲームを作ってみたいですよね〜。

そこで、今日はJavaScriptを使って、ちょっとしたミニゲームを作成してみました。
その名も「HitNumber4」と言います!

HitNumber4は、4桁の数字を当てる、いわゆる数あてゲームです。
数字が重複しない4桁の数字を、できるだけ少ない試行回数で当てるというものです。
実際やってみると、意外と難しいのですよね…。
適度に頭を使うので、ちょっとした脳トレにもなるかもしれませんよ。

今回の記事では、このHitNumber4の遊び方とその仕組みについて解説します。

HitNumber4とは?

HitNumber4というのは、重複しない数字4桁を当てる、一種の数あてゲームです。
何度か試行を繰り返して、正解の数字を導き出すのが目的です。

重複しない数字というのは、別の桁に他の桁の数字が無いということです。
例えば、1597はOKですが、1557はNGです。
1557の場合、5が重複していますよね?

HitNumber4のルール

試行をするたびに、正解状況のヒントが与えられます。
桁と数字が一致している場合は○、数字のみが一致していて桁の場所が違う場合は△となります。
例えば、正解が7538だとすると、以下のような試行をした場合のヒントがこちら。
○4になったときがクリアです。
基本的なルールが理解できたでしょうか?

7835 → ○1 △3
7358 → ○2 △2
7538 → ○4 △0

また、HitNumber4では点数制度を導入しています。
少ない試行回数でクリアするほど高い点数を得られます。
できるだけ高得点が取れるように頑張ってみてください。

HitNumber4の遊び方

HitNumber4は、以下のリンク先になります。
ルールの下にゲームの操作画面があります。

数当てゲーム HitNumber4

テキストエリアに、正解だと思う4桁の数字を入力します。
そして、隣にある「チェック」ボタンを押すと結果が表示されます。
別の数字を入力する際には、テキストエリアの数字を書き換えてください。
何度か試行を繰り返して、○4になればクリアです。

数当てゲーム HitNumber4

ちなみに、「リトライ」ボタンを押すと、正解の数字が変わって最初からやり直しになります。
ギブアップしたい時や、クリアしてもう一度やりたい時に押してください。

HitNumber4の仕組み

HitNumber4では、JavaScriptで主なゲームの処理を行っています。
ページを読み込むと、init関数が実行されて正解の数字を設定します。

function init() {
    score = 100;
    tryNum = 0;
    while(true) {
        var numList = Array(0,1,2,3,4,5,6,7,8,9);
        n = Array();
        for(var i = 0; i < 4; i++) {
            var index = random(0, numList.length-1);
            n.push(numList[index]);
            numList.splice(index, 1);
        }
        answer = 1000 * n[ 3] + 100 * n[ 2] + 10 * n[ 1] + n[0];
        if(answer >= 1000) {
            break;
        }
    }
}

テキストエリアに数字が入力されて、「チェック」ボタンが押されるとcheck関数が実行されます。
この関数では、入力された数字の桁ごとに正解と比較して、○と△の数を数えます。

function check() {
    try {
        inputNum = parseInt($('#input').val());
    } catch {
        inputNum = "Error";
        hit = 0;
        graze = 0;
        updateResult();
        return;
    }

    if(!(inputNum >= 1000 && inputNum <= 9999)) {
        inputNum = "Error";
        hit = 0;
        graze = 0;
        updateResult();
        return;
    }

    var num = inputNum;
    var digit = Array();

    digit.push(num % 10);
    num = Math.floor(num / 10);
    digit.push(num % 10);
    num = Math.floor(num / 10);
    digit.push(num % 10);
    num = Math.floor(num / 10);
    digit.push(num % 10);

    hit = 0;
    graze = 0;

    for(var i = 0; i < n.length; i++) {
        for(var j = 0; j < digit.length; j++) {
            if(i == j) {
                if(digit[j] == n[i]) {
                    hit++;
                    break;
                }
            } else {
                if(digit[j] == n[i]) {
                    graze++;
                    break;
                }
            }
        }
    }
    updateResult();
}

この辺りが、HitNumber4の核となる部分です。
全体的なソースコードに関しては、HitNumber4の「ページのソースを表示」で確認してください。

まとめ

今回の記事では、4桁の数字を当てる、数あてゲームHitNumber4を作成してみました。
試行錯誤をしながら正解の数字を導き出しましょう。
実際やってみると分かりますが結構難しいです。

私は何度か試してみましたよ。
その結果、70点が今の所の最高点です。
このゲームの法則性がもっと把握できれば、より高得点を狙えると思うのですが…。

HitNumber4は、シンプルながらもなかなか奥が深いミニゲームとなっています。
ちょっとした時間で遊べますので…。
ぜひあなたも試しにやってみてくださいね。

数当てゲーム HitNumber4

書いた人: 鈴木俊吾(すずしん)
フリーランスのライター・ブロガー・プログラマ。

大学卒業後、公務員を目指していたが失敗。
その後、仕事をしようとするも全て不採用に。
そのうち、心を病んで統合失調症を発症。
入退院を繰り返す。

「仕事をもらえないなら自分で作ればいい」「自分の好きな仕事だけをやろう!」と思うようになり、フリーランスに転身。
現在は、ブログの更新やアプリ開発を主な仕事にしている。

趣味は音楽鑑賞・読書・カラオケ・オセロ。
特に好きな歌手は水樹奈々で、ファンクラブにも所属している。
最近ハマっている曲は「恋想花火」。

フィードを登録していただくと、ブログの更新を把握しやすくなります。
あなたからの登録をお待ちしています!

Feedly
RSS

Twitter: @suzushin7

コメントを残す

%d人のブロガーが「いいね」をつけました。