JavaScriptでじゃんけんゲームを作ろう!

JavaScript

JavaScriptを使ってじゃんけんゲームを作ろう!

手順

1.新規にjyankenフォルダを作成。
2.jyankenフォルダの中にimagesフォルダを作成する。
3.以下をダウンロード展開し、中に入っている3枚の画像をimagesフォルダに入れる。
(コピペを使って配置できる)

4.jyankenフォルダの中にcssフォルダを作成し、その中にmain.cssを作成する。
記述する内容は以下

body{
	display:flex;
	height:100vh;
	flex-direction:column;
	justify-content:space-around;
	align-items:center;
	font-family: "Nico Moji";
	background:#b7f3a9;
	color:#333;
}
form{
	font-size:6vmin;
}
input{
	width:4vmin;
	height:4vmin;
	position:relative;
	top:2px;
}
button{
	margin-top:5vmin;
	width:25vmin;
	height:8vmin;
	font-size:5vmin;
	font-family: "Nico Moji";
	color:#333;
}
div{
	display:flex;
	width:80%;
	justify-content:space-around;
}
img{
	width:35vmin;
	height:35vmin;
}
p{
	font-size:7vmin;
}

5.jyankenフォルダの中にindex.htmlを作成する。記述する内容は以下

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="css/main.css">
<link href="https://fonts.googleapis.com/earlyaccess/nicomoji.css" rel="stylesheet">
<title>じゃんけんぽん</title>
</head>
<body>
<form>
<input type="radio" name="hand" value="0">ぐー<br>
<input type="radio" name="hand" value="1">ちょき<br>
<input type="radio" name="hand" value="2">ぱー<br>
<button type="submit">ショウブ</button>
</form>
<div>
<img src="images/choki.png">
<img src="images/pa.png">
</div>
<p>アナタのかちです!</p>
<script>
//厳格モードでの実行
'use strict';
//画像の名前
const picts=['gu','choki','pa'];
//結果の文言
const results=['あいこ','アナタのまけです...','あなたのかちです!'];
//formを取得(今回は一つしかないので[0])
const form=document.forms[0];
//img要素を取得(今回は2つあるので配列として取得)
const images=document.querySelectorAll('img');
//div要素を取得(今回は一つしかない 同意-> document.getElementsByTagName('div')[0])
const imgBox=document.querySelector('div');
//最初は非表示
imgBox.style.display='none';
//p要素を取得(今回は一つしかない)
const result=document.querySelector('p');
//最初は非表示
result.style.display='none';
//フォームにサブミットボタンを押したときの挙動を登録
form.addEventListener('submit',function(eve){
  //submitボタンを押した時にページ遷移するのを防ぐ
  eve.preventDefault();
  //ラジオのvalueはform.ネーム属性.valueで取得できる。それを整数に変換
  let radioValue=form.hand.value;
  //何も選択しなかった場合valueは空文字になる
  if(radioValue===''){return;}
  let userHand=Number(radioValue);
  //Math.floorで小数点以下を切り捨て整数に変換
  let pcHand=Math.floor((Math.random()*3));
  //画像を決定
  for(let i=0;i<images.length;i++){
    images[i].src= 'images/' + picts[i==0? userHand:pcHand] + '.png';
  }
  //imgBox要素を表示
  imgBox.style.display='flex';
  //勝敗の文言の作成
  result.textContent=results[(userHand+3 -pcHand) % 3];
  //文言の表示
  result.style.display='block';
});
</script>
</body>
</html>

実行

ブラウザで実行してみよう。

手を選択してショウブを押すと結果が表示される。

関連記事

以下の記事で今回作成したゲームのhtmlとcssについて解説しています。

コメント

タイトルとURLをコピーしました