今回は ハイ&ロー ゲームを作るッピ!
ハイ&ロー?? なにそれ
・・・・!?
ユウキくんはハイ&ローを知らないッピか・・・純粋な子ッピね・・・。
ハイ&ローは、ゲームセンターのメダルゲーム等で、
場にあるトランプカードが、次にめくるカードより大きいか小さいかを当てるゲームッピ!
へ~ 面白そうじゃん! さっそくやっていこうぜ
サンプルゲームを置いとくッピ!
どんなものか試して遊んでみるッピよ~!!
ハイ&ロー ゲームの全体コード
<!-- 見えない部分 -->
<html>
<head>
<script>
let card = 1;// 場にあるトランプのカード番号
let Hi_L = 0;// Low(0) と High(1) どっちを選んだか仮の数字(実際にはクリックで決める)
let Result = "●●を選んで、あなたの●●";//勝ち負けの結果
function High_Low(Hi_L) {
document.getElementById("Card_img_Before").src="s_" + card + ".jpg";
let trump = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,]; // ハイアンドローをするカード番号
let trump_n = Math.floor( Math.random() * 13) +1 ;// ランダムで数字を決める
if (card < trump[trump_n]) {//賭けカードが、伏せカードより大きい場合
if (Hi_L === 0){ Result = " LOWを選んで、あなたの<span style='background:blue;'>『 負け 』</span>";}
if (Hi_L === 1){ Result = " HIGHを選んで、あなたの<span style='background:red;'>【 勝ち 】</span>";}
}
else if (card > trump[trump_n]) {//賭けカードが、伏せカードより小さい場合
if (Hi_L === 0){ Result = " LOWを選んで、あなたの<span style='background:red;'>【 勝ち 】</span>";}
if (Hi_L === 1){ Result = " HIGHを選んで、あなたの<span style='background:blue;'>『 負け 』</span>";}
}
else {Result = "引き分け!!";}
document.getElementById("Card_img_After").src="s_" + trump_n + ".jpg";
document.getElementById("After").innerHTML ="伏せカードは" + trump[trump_n] + Result + "<br />次のカードが今の数字より高いか低いか考えてみよう!";
document.getElementById("Before").innerHTML ="場にあるカードは" + card ;
card = trump[trump_n];//場にあるカードを新しく引いたカードに変える
}
</script>
</head>
<!-- ↓ここから見える部分↓ -->
<body>
<!-- ↓この下に入力してね!↓ -->
<img id="Card_img_Before" src="s_1.jpg" width="100" height="150" align="left">
*
<img id="Card_img_After" src="s_0.jpg" width="100" height="150">
<p id="Before">場にあるカードは1</p>
<p id="After">次のカードは場にあるカードより高いか低いか考えてみよう!</p>
<input type="button" value="High" onclick="High_Low(1);"/>
<input type="button" value="Low" onclick="High_Low(0);"/>
<!-- ここまで! -->
</body>
</html>
このプログラムをひとつひとつ、わかりやすく解説しながら作っていくッピ!
楽しみにしてるッピヨ~!
HIGH & LOW ゲームを作ろう
どんなゲームかだいたいわかったよ!
あれが作れるなんてワクワクするな~
むふふふ、ユウキくんも2時間もあればアレを作れるッピよ~!
今までの経験や知識をフル活用してチャレンジするッピ!
下のサンプルコードをベースに学んでいくッピ!
今日も一緒に頑張るッピよ~
<!-- 見えない部分 -->
<html>
<head>
<!-- ↓この下に入力してね!↓ -->
</head>
<!-- ↓ここから見える部分↓ -->
<body>
<!-- ↓この下に入力してね!↓ -->
<!-- ここまで! -->
</body>
</html>
トランプに必要な数字と乱数を作ろう
それではまず、トランプに必要な数字のリストを作るッピ!
これを<head></head>の中に入れるッピよ~
<script>
let trump = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,];
let trump_n = Math.floor( Math.random() * 13) +1 ;
</script>
これは
let trump = [0,1,2,3,4,5,….13,];
let trump_n = Math.floor( Math.random() *13) +1 ;
という意味ッピ!
コンピュータの数字は、 [ 1 ] はじまりじゃなく、[ 0 ] はじまりなんだよな!
そうッピ!
だから 『Math.random() *13 』(13個の乱数を作って)という命令文なのに、0~12 の数字ができてしまうッピ!
それをわかりやすくするために、 最後に【 +1 】をするッピよ~!
プログラムのセット【関数】を作ろう
次はプログラムの命令文セット、【関数】を作るッピ!
もう何回もやってるからバッチリだぜ!
Function 関数名 ( ) {命令文;} で、
好きなときにプログラムのセットを呼び出せるんだよな!
そのとおりッピ!
ユウキくん、だんだんプログラマーに近づいてきたでッピヨ~
一気に作るのではなく、少しずつ動作を確認しながら積み上げていくッピ!
まずは、さっき作ったランダム数字のトランプカードを文字表示してみるッピよ~
<head>
<script>
function High_Low(Hi_L) {
let trump = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,];
let trump_n = Math.floor( Math.random() * 13) +1 ;
document.getElementById("Before").innerHTML ="場にあるカードは" + trump[trump_n] ;
}
</script>
</head>
上のスプリクトを、<head></head>に、
下のスプリクトを<body></body>内に入れるッピ!
<body>
<p id="Before">場にあるカードは1</p>
</body>
これで合ってる?
いい感じッピネ!
次はこのプログラムを呼び出すボタンを作ってテストしてみるッピ!
プログラムを呼び出すボタンを設置しよう
<input type="button" value="プログラムを呼び出す" onClick="High_Low();">
上のHTMLコード(タグ)を<body></body>に入れるッピ!
<input type=”button” value=”プログラムを呼び出す” onClick=”High_Low();”>
という意味になるッピね~
ちなみに
<button onClick=”High_Low();”> プログラムを呼び出す </button>
でもOKっピ! コチラのほうが新しい記述方式ッピね~!
プログラミングも日々やり方が進化してるッピよ~
<!-- 見えない部分 -->
<html>
<head>
<!-- ↓この下に入力してね!↓ -->
<script>
function High_Low(Hi_L) {
let trump = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,]; // ハイアンドローをするカード番号
let trump_n = Math.floor( Math.random() * 13) +1 ;// ランダムで数字を決める
document.getElementById("Before").innerHTML ="場にあるカードは" + trump[trump_n] ;
}
</script>
</head>
<!-- ↓ここから見える部分↓ -->
<body>
<!-- ↓この下に入力してね!↓ -->
<p id="Before">場にあるカードは1</p>
<input type="button" value="プログラムを呼び出す" onClick="High_Low();">
<!-- ここまで! -->
</body>
</html>
ボタンをクリックして、数字が変わるか試してみるッピよ~
できてるできてる!
賭けのカードと伏せカード、2枚のカードを作ろう
HIGH & LOW は
賭けカードが、次にめくる伏せカードより、数字が大きいか小さいかを当てるゲームッピ!
つまりは賭けカードと伏せカード、2枚のカードを作らなきゃいけないッピネ~~!
let card = 1;
2枚めのカードのプログラムはこんな感じッピ!
let card = 1;
という意味ッピネ。
これを<script></script>の中の、最初に記述するッピ!
ずいぶん短いコードだな~
2枚めのカードは【 1~13 】まで作らないのか??
HIGH & LOW は、
今伏せているカードが、次の賭けカードにもなるゆえ・・・
勝敗が決まったあと、賭けカードの数字をコピーすれば良いッピよ~
うーん、よくわからん・・・
考えるな・感じろッピ!!!!!!!
難しいことは考えなくて良いッピヨ~
プログラミングなんてやってればカラダが自然に覚えるッピネ!!
なんか雑だなあ・・・
ついでにバグ防止に、他の変数も初期化しておくッピ!
記述するコードはこんな感じッピよ~
<!-- 見えない部分 -->
<html>
<head>
<!-- ↓この下に入力してね!↓ -->
<script>
let card = 1;// 場にあるトランプのカード初期化番号
let Hi_L = 0;// Low(0) と High(1) どっちを選んだか仮の数字(実際にはクリックで決める)
let Result = "●●を選んで、あなたの●●";//勝ち負けの結果の初期値
function High_Low(Hi_L) {
let trump = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,]; // ハイアンドローをするカード番号
let trump_n = Math.floor( Math.random() * 13) +1 ;// ランダムで数字を決める
document.getElementById("Before").innerHTML ="場にあるカードは" + trump[trump_n] ;
}
</script>
</head>
<!-- ↓ここから見える部分↓ -->
<body>
<!-- ↓この下に入力してね!↓ -->
<p id="Before">場にあるカードは1</p>
<input type="button" value="プログラムを呼び出す" onClick="High_Low();">
<!-- ここまで! -->
</body>
</html>
HIGH & LOW の 勝敗の判定機を作ろう
次は勝ち負けの判定機を作るッピ!
if文とelse文を駆使して、場のカードが伏せカードより数字が高いか低いかを判別し、さらに予想が合っているか外れているかを判定するッピネ!
ついでに HIGH ボタン と LOW ボタンも設置するッピよ~~!
<head>
<script>
let card = 1;// 場にあるトランプのカード番号
let Hi_L = 0;// Low(0) と High(1) どっちを選んだか仮の数字(実際にはクリックで決める)
let Result = "●●を選んで、あなたの●●";//勝ち負けの結果
function High_Low(Hi_L) {
let trump = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,]; // ハイアンドローをするカード番号
let trump_n = Math.floor( Math.random() * 13) +1 ;// ランダムで数字を決める
/* 追加した判定のプログラム */
if (card < trump[trump_n]) {//賭けカードが、伏せカードより大きい場合
if (Hi_L === 0){ Result = " LOWを選んで、あなたの『 負け 』";}
if (Hi_L === 1){ Result = " HIGHを選んで、あなたの【 勝ち 】";}
}
else if (card > trump[trump_n]) {//賭けカードが、伏せカードより小さい場合
if (Hi_L === 0){ Result = " LOWを選んで、あなたの【 勝ち 】";}
if (Hi_L === 1){ Result = " HIGHを選んで、あなたの『 負け 』";}
}
else {Result = "引き分け!!";}
document.getElementById("After").innerHTML ="伏せカードは" + trump[trump_n] + Result + "<br />次のカードが今の数字より高いか低いか考えてみよう!";
document.getElementById("Before").innerHTML ="場にあるカードは" + card ;
card = trump[trump_n];//場にあるカードを新しく引いたカードに変える
}
</script>
</head>
<body>
<p id="Before">場にあるカードは1</p>
<p id="After">次のカードは場にあるカードより高いか低いか考えてみよう!</p>
<input type="button" value="High" onclick="High_Low(1);"/>
<input type="button" value="Low" onclick="High_Low(0);"/>
</body>
おおおおおっ! できてるじゃーん!!
今回追加したしたプログラムについて解説していくッピネ!
2つのカードの説明
まずは今の場にどんなカードが置いているかを表示する命令文ッピ!
document.getElementById(“Before“).innerHTML = “場にあるカードは” + card;
次は、伏せカードを表示するプログラムッピよ~!
document.getElementById(“After“).innerHTML = “伏せカードは” + trump[trump_n] + Result + “<br />次のカードが今の数字より高いか低いか考えてみよう!“;
card = trump[trump_n] ;
という感じッピ!
プログラミングって本当にイロイロあってややこしいなあ~
まだまだ終わらないッピよ~
次は判定機の解説ッピ!
判定機の解説
if (card < trump[trump_m]) {
if (Hi_L === 0) {Result = “ LOWを選んで、あなたの負け” ;}
if (Hi_L === 1) {Result = “ HIGHを選んで、あなたの勝ち” ;}
}
else if (card > trump[trump_n]) {
if ( Hi_L === 0 ) { Result = “ LOWを選んで、あなたの【 勝ち 】”;}
if ( Hi_L === 1){ Result = “ HIGHを選んで、あなたの『 負け 』”;}
}
else { Result = “引き分け!!”;}}
という意味ッピ!
前回のジャンケンより簡単だな!
ボタンと呼び出すプログラムの解説
ボタンについては、さっきも説明したッピが・・・
<input type="button" value="High" onclick="High_Low(1);"/>
<input type="button" value="Low" onclick="High_Low(0);"/>
先程と違うのは onClick = “High_Low( 0 );” と onClick = “High_Low( 1 );” の部分ッピ!
0 = LOW 1 = HIGH として、どっちのボタンを選んだかで関数Function High_Low() の動作、Result の結果を変えたッピ!
この High_Low( 0 や 1 ) のことを【引数】って言うんだよな~!
引数で結果を変えられるって便利だよな~
ハイ&ロー ゲームに画像をつけてみよう!
次はゲームにイラストをつけてみるッピ!
まずは画像を用意するッピヨ~!
画像を用意しよう
保存した画像ファイルを、下の画像のように、作ったゲームHTMLファイルと同じ場所に置くッピ!
準備ができたら、
画像を追加するコードを書いていくッピ!
<head>
<script>
let card = 1;// 場にあるトランプのカード番号
let Hi_L = 0;// Low(0) と High(1) どっちを選んだか仮の数字(実際にはクリックで決める)
let Result = "●●を選んで、あなたの●●";//勝ち負けの結果
function High_Low(Hi_L) {
document.getElementById("Card_img_Before").src="s_" + card + ".jpg";
let trump = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,]; // ハイアンドローをするカード番号
let trump_n = Math.floor( Math.random() * 13) +1 ;// ランダムで数字を決める
if (card < trump[trump_n]) {//賭けカードが、伏せカードより大きい場合
if (Hi_L === 0){ Result = " LOWを選んで、あなたの『 負け 』";}
if (Hi_L === 1){ Result = " HIGHを選んで、あなたの【 勝ち 】";}
}
else if (card > trump[trump_n]) {//賭けカードが、伏せカードより小さい場合
if (Hi_L === 0){ Result = " LOWを選んで、あなたの【 勝ち 】";}
if (Hi_L === 1){ Result = " HIGHを選んで、あなたの『 負け 』";}
}
else {Result = "引き分け!!";}
document.getElementById("Card_img_After").src="s_" + trump_n + ".jpg";
document.getElementById("After").innerHTML ="伏せカードは" + trump[trump_n] + Result + "<br />次のカードが今の数字より高いか低いか考えてみよう!";
document.getElementById("Before").innerHTML ="場にあるカードは" + card ;
card = trump[trump_n];//場にあるカードを新しく引いたカードに変える
}
</script>
</head>
<body>
<img id="Card_img_Before" src="s_1.jpg" width="100" height="150" align="left">
*
<img id="Card_img_After" src="s_0.jpg" width="100" height="150">
<p id="Before">場にあるカードは1</p>
<p id="After">次のカードは場にあるカードより高いか低いか考えてみよう!</p>
<input type="button" value="High" onclick="High_Low(1);"/>
<input type="button" value="Low" onclick="High_Low(0);"/>
</body>
<head></head>–<body></body> に、上のコードを書くがッピ!
これでゲームの完成ッピヨ~
できた~~!!
画像を差し替えるプログラムの解説
関数の最初にあるものは
document.getElementById(“Card_img_Before“).src=“s_”+card+”.jpg”; という意味ッピネ
else の後にあるものは
document.getElementById(“Card_img_After“).src=”s_”+trump_n+”.jpg”; という意味ッピヨ~
<body></body>内の画像表示タグはオレにもわかるよ!
<img src=”s_1.jpg” id=”Card_img_Before“ />
<img src=”s_0.jpg” id=”Card_img_After“ />
って意味だな!?
そのとおりッピ! ユウキくんの成長を感じるッピ!
あとは<span>タグで【勝ち】と『負け』にわかりやすく背景色をつけるッピ!
判定機のプログラムを
if (card < trump[trump_n]) {//賭けカードが、伏せカードより大きい場合
if (Hi_L === 0){ Result = " LOWを選んで、あなたの<span style='background:blue;'>『 負け 』</span>";}
if (Hi_L === 1){ Result = " HIGHを選んで、あなたの<span style='background:red;'>【 勝ち 】</span>";}
}
else if (card > trump[trump_n]) {//賭けカードが、伏せカードより小さい場合
if (Hi_L === 0){ Result = " LOWを選んで、あなたの<span style='background:red;'>【 勝ち 】</span>";}
if (Hi_L === 1){ Result = " HIGHを選んで、あなたの<span style='background:blue;'>『 負け 』</span>";}
}
else {Result = "引き分け!!";}
に書き換えるッピよ~
変更した部分は勝ち負けの部分ッピ!
<span style=”background:red;“>【 勝ち 】</span>
<span style=“background:blue;”>『 負け 』</span>
っていう意味ッピよ~!
全体のコードの確認
<!-- 見えない部分 -->
<html>
<head>
<script>
let card = 1;// 場にあるトランプのカード番号
let Hi_L = 0;// Low(0) と High(1) どっちを選んだか仮の数字(実際にはクリックで決める)
let Result = "●●を選んで、あなたの●●";//勝ち負けの結果
function High_Low(Hi_L) {
document.getElementById("Card_img_Before").src="s_" + card + ".jpg";
let trump = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,]; // ハイアンドローをするカード番号
let trump_n = Math.floor( Math.random() * 13) +1 ;// ランダムで数字を決める
if (card < trump[trump_n]) {//賭けカードが、伏せカードより大きい場合
if (Hi_L === 0){ Result = " LOWを選んで、あなたの<span style='background:blue;'>『 負け 』</span>";}
if (Hi_L === 1){ Result = " HIGHを選んで、あなたの<span style='background:red;'>【 勝ち 】</span>";}
}
else if (card > trump[trump_n]) {//賭けカードが、伏せカードより小さい場合
if (Hi_L === 0){ Result = " LOWを選んで、あなたの<span style='background:red;'>【 勝ち 】</span>";}
if (Hi_L === 1){ Result = " HIGHを選んで、あなたの<span style='background:blue;'>『 負け 』</span>";}
}
else {Result = "引き分け!!";}
document.getElementById("Card_img_After").src="s_" + trump_n + ".jpg";
document.getElementById("After").innerHTML ="伏せカードは" + trump[trump_n] + Result + "<br />次のカードが今の数字より高いか低いか考えてみよう!";
document.getElementById("Before").innerHTML ="場にあるカードは" + card ;
card = trump[trump_n];//場にあるカードを新しく引いたカードに変える
}
</script>
</head>
<!-- ↓ここから見える部分↓ -->
<body>
<!-- ↓この下に入力してね!↓ -->
<img id="Card_img_Before" src="s_1.jpg" width="100" height="150" align="left">
*
<img id="Card_img_After" src="s_0.jpg" width="100" height="150">
<p id="Before">場にあるカードは1</p>
<p id="After">次のカードは場にあるカードより高いか低いか考えてみよう!</p>
<input type="button" value="High" onclick="High_Low(1);"/>
<input type="button" value="Low" onclick="High_Low(0);"/>
<!-- ここまで! -->
</body>
</html>
- let 変数 = [配列A,配列B,配列C,..]; で変数のリストが作れる
- if ( 条件 ) { 命令文 ;} / else { 命令文 ;} で、数字の高い・低い / 勝ち負けを判定できる
- Function 関数名 ( ) { 命令文 ;} で、命令文のセットを作る【関数】が作れる
- <input =”button” onClick=”関数( );”>で、プログラムを動かすボタンを設置できる
- <img id = “ID名(HTML内の住所)” >を使用し、document.getElementById(“ID名”)で画像を差し替えることができる
上手くつくれたッピか?
これからも色んなゲームを作っていくッピ!
次回も楽しみにしてるッピよ~