【ハウツー】

iPhoneゲーム自作工房3 - タッチポイントゲームを作成

4 完成コードとカスタマイズ

    古籏一浩  [2008/08/01]

    難易度の調整と改造について

    このゲームでは座標を分かりやすくするために背景画像をグリッド(方眼紙)にしてあります。グリッドを目安にすれば、かなり近い座標をタッチすることが可能です。ゲームをより、難しいものにするには背景画像をなくしてしまう、つまり真っ白など単色にしてしまう方法もあります。また、タッチした瞬間の座標を取得していますが、タッチし終わった時の座標にしてみるのもよいでしょう。

    *なお、このプログラムは自由に改造して配布しても問題ありません。画像やプログラム書き換えて楽しんでください。

    完成したプログラムコード

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
        <head>
        <meta http-equiv="content-type" content="text/html;charset=utf-8">
        <meta name="viewport" content="initial-scale=1, user-scalable=no">
        <title>タッチポイントゲーム</title>
        <style type="text/css"><!--
            h1 { font-size:14pt; }
            body { background-image:url(images/grid.gif) }
        --></style>
        <script type="text/javascript"><!--
            // ===============================================
            // イベントを設定
            // ===============================================
            window.addEventListener("load", function(){
                document.addEventListener("touchstart", checkPoint, false);
            });
            // ===============================================
            // タッチした時の座標を求めスコアに加算する
            // ===============================================
            function checkPoint(){
                if (!gameFlag) return;  // ゲーム中でなければ処理しない
                var x = event.touches[0].pageX; // タッチされた横位置を取得
                var y = event.touches[0].pageY; // タッチされた縦位置を取得
                var dx = Math.abs(px - x);  // 横の差分を求めて得点とする
                var dy = Math.abs(py - y);  // 縦の差分を求めて得点とする
                document.getElementById("result").innerHTML = "タッチした座標 ("+x+","+y+")/";
                document.getElementById("result").innerHTML += "誤差 ("+dx+","+dy+")";
                score = score + dx + dy;
                count--;
                if (count > 0) {    // 回数があるなら
                    newPoint(); // 新たな座標を示す
                    return;
                }else{  // 指定回数終わった時の処理
                    gameFlag = false;   // ゲームを終了
                    var txt = "あなたのタッチ誤差は"+score+"ポイントです。0を目指しましょう";
                    document.getElementById("msg").innerHTML = txt;
                    document.getElementById("result").innerHTML = "";
                    alert(txt);
                    document.getElementById("gameForm").style.visibility = "visible";
                }
            }
            // ===============================================
            // タッチするための座標値を生成
            // ===============================================
            function newPoint(){
                px = Math.floor(Math.random() * 200) + 50;  // 横は50~250まで
                py = Math.floor(Math.random() * 200) + 100; // 縦は100~300まで
                document.getElementById("msg").innerHTML = "座標("+px+","+py+")をタッチせよ!";
            }
            // ===============================================
            // ゲーム開始
            // ===============================================
            function gameStart(){
                document.getElementById("gameForm").style.visibility = "hidden";
                gameFlag = true;    // ゲーム中であることを示すフラグ
                score = 0;  // スコア(誤差)を0にする
                count = 10; // 10回タッチしたら終わり
                document.getElementById("msg").innerHTML = "";  // 表示されているメッセージを消去
                document.getElementById("result").innerHTML = "";   // 表示されている座標値を消去
                newPoint();
            }
        // --></script>
        </head>
        <body>
        <h1>タッチポイントゲーム</h1>
        <div id="msg"></div>
        <div id="result"></div>
        <form id="gameForm">
            <input type="button" value="ゲーム開始" onClick="gameStart()">
        </form>
        </body>
    </html>
    

    関連記事

    関連したタグ

    新着記事

    特設サイトの情報

      人気記事

      一覧

      新着記事

      特別企画

      マイナビニュースマガジン