【ハウツー】
このゲームでは座標を分かりやすくするために背景画像をグリッド(方眼紙)にしてあります。グリッドを目安にすれば、かなり近い座標をタッチすることが可能です。ゲームをより、難しいものにするには背景画像をなくしてしまう、つまり真っ白など単色にしてしまう方法もあります。また、タッチした瞬間の座標を取得していますが、タッチし終わった時の座標にしてみるのもよいでしょう。
*なお、このプログラムは自由に改造して配布しても問題ありません。画像やプログラム書き換えて楽しんでください。
<!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>
| iPhoneゲーム自作工房2 - 隕石破壊ゲームの作成 [2008/7/30] |
| iPhoneゲーム自作工房 - iPhone用ゲームを手軽に作る [2008/7/28] |
| 【レポート】マカフィーの世界の専門家の意識調査「サイバー防衛報告書」とセキュリティソリューション [21:15 5/25] |
| アップル、Aperture 3.2.4を公開 - バグ修正、安定性向上など [20:51 5/25] |
| 【レポート】GTC 2012 - VGXでエンタープライズ環境でのGPU需要開拓を狙うNVIDIA [20:07 5/25] |
| デル、期間限定キャンペーンに特価アイテム追加、アップグレード無料も継続 [19:41 5/25] |
| 上海問屋、iPhoneとほぼ同じ薄さのバッテリ内蔵ヘッドホンアンプ [19:05 5/25] |
|
【特集】クライマックス突入記念! 『Fate/Zero』特集 [22:00 5/26] ホビー |
|
最もセクシーな男性「メン・オン・ファイア」21人をAARP誌が発表 [21:30 5/26] エンタメ |
|
【インタビュー】栗山千明 - ファンタジーという世界観だからできること [21:30 5/26] エンタメ |
|
ゲイリー・オールドマン、『ロボコップ』リメイク作品に科学者役で出演決定 [21:30 5/26] エンタメ |
|
ビースティ・ボーイズのマイクD、「アダムに一番美しい方法で嘘をつかれた」 [21:30 5/26] エンタメ |