JavaScript
数当てっぽい2015/11/22
簡単な数当てゲームを作ってみた
4桁の数字を当ててね
- 遊び方 -
テキストボックスに4桁の数字を入れて[go!]ボタンをクリックしましょう
すると適当なヒントがもらえるので、それを頼りに数字を当てましょう
正解した後に[reset]ボタンを押すともう1回別の数字を当てるゲームが始まります
script.js
4桁の数字を当ててね
- 遊び方 -
テキストボックスに4桁の数字を入れて[go!]ボタンをクリックしましょう
すると適当なヒントがもらえるので、それを頼りに数字を当てましょう
正解した後に[reset]ボタンを押すともう1回別の数字を当てるゲームが始まります
$(function(){
var randnum = Math.floor(Math.random() * 9000)+1000; // 乱数を生成
var count = 1; // 手数を初期化
$("#goButton").click(function clickFunc(){ // ボタンがクリックされたら
var num = $("#number").val(); // 入力値を取得
if(num.match(/\d{4}/) == num){ // 入力値が4桁の数字なら
var diff = num - randnum; // 入力値と乱数の差を算出
if(diff > 5000){ // ~5001
post_mes(count++ + "手:" + num + ":とても遠い!もっと小さいです");
}else if(diff > 1000){ // 5000 ~ 1001
post_mes(count++ + "手:" + num + ":もーっと小さいです");
}else if(diff > 100){ // 1000 ~ 101
post_mes(count++ + "手:" + num + ":もっと小さいです");
}else if(diff > 10){ // 100 ~ 11
post_mes(count++ + "手:" + num + ":もうちょっと小さいです")
}else if(diff > 0){ // 10 ~ 1
post_mes(count++ + "手:" + num + ":とても近い!もう少し小さいです");
}else if(diff == 0){
post_mes(count++ + "手:" + num + ":正解です!").css({
"color": "red",
"font-weight": "bold"
});
// clickイベントを変更
$("#goButton").val(" reset ").unbind("click").bind("click",
function(){
post_mes("new game start !"); // メッセージを出力
count = 1; // 手数を初期化
randnum = Math.floor(Math.random() * 9000)+1000; // 乱数を生成
$(this).unbind("click").bind("click", clickFunc).val(" go! "); // クリックイベントを復活
}
);
}else if(diff > -10){ // -1 ~ -9
post_mes(count++ + "手:" + num + ":とても近い!もう少し大きいです");
}else if(diff > -100){ // -10 ~ -99
post_mes(count++ + "手:" + num + ":もうちょっと大きいです");
}else if(diff > -1000){ // -100 ~ -999
post_mes(count++ + "手:" + num + ":もっと大きいです");
}else if(diff > -5000){ // -1000 ~ -4999
post_mes(count++ + "手:" + num + ":もーっと大きいです");
}else{ // -5000 ~
post_mes(count++ + "手:" + num + ":とても遠い!もっと大きいです");
}
}else{ // 入力エラー
post_mes(num + ":半角数字を4桁入力してください");
}
});
// メッセージを表示する関数、戻り値はjQueryオブジェクト
function post_mes(str){
var jquery_obj = $("<p>").text(str); // メッセージを作成
$("#message").prepend(jquery_obj); // メッセージを追加
return(jquery_obj); // メッセージを返す
}
});