見出し画像

はじめてみよう。プログラミング!JavaScript! - 数当てゲーム(実行する関数)

実際に実行させる心臓部、関数です。

例えばということで以下が例示されています。実行すると、ブラウザからアラートが表示されます。

function checkGuess() {
 alert('ここに好きな文字を入れてください');
}

今回実行する関数としては以下となります。

それぞれ、HTMLは

 document.querySelector()

で取得しています。

const guesses = document.querySelector('.guesses');
const lastResult = document.querySelector('.lastResult');
const lowOrHi = document.querySelector('.lowOrHi');
const guessSubmit = document.querySelector('.guessSubmit');
const guessField = document.querySelector('.guessField');

他、ランダムの数字を得る変数などを定義しています。

let randomNumber = Math.floor(Math.random() * 100) + 1;

そして初回の予想かどうかの判定。

let guessCount = 1;

ゲームが終わったときにリセットして新しくゲームができるようにするボタンを作ります。

let resetButton;

変数全部です。

let randomNumber = Math.floor(Math.random() * 100) + 1;

const guesses = document.querySelector('.guesses');
const lastResult = document.querySelector('.lastResult');
const lowOrHi = document.querySelector('.lowOrHi');
const guessSubmit = document.querySelector('.guessSubmit');
const guessField = document.querySelector('.guessField');

let guessCount = 1;
let resetButton;

いよいよ関数ですが、JavaScriptでは関数は

function(){}

で定義します。checkGuess()関数を作ります。

"function checkGuess() {}"です。

function checkGuess() {
 let userGuess = Number(guessField.value);
 if (guessCount === 1) {
   guesses.textContent = '前回の予想: ';
 }
 guesses.textContent += userGuess + ' ';
 }

checkGuess()が実行された時には、まず、

let userGuess = Number(guessField.value);

で入力した文字が数字に変換されて、

guessCount === 1

の場合(初回入力の場合)は

guesses.textContent = '前回の予想: ';

guesses.textContent には'前回の予想: 'と文字が代入されて、ついで以下の命令で

guesses.textContent += userGuess + ' ';

"userGuess"(入力値)を先ほどの"guesses.textContent "に追記します。文字としては

前回の予想: 入力値

という感じになします。

次からの命令は"if"により条件で処理を選択します。

if (userGuess === randomNumber) {
   lastResult.textContent = 'おめでとう! 正解です!';
   lastResult.style.backgroundColor = 'green';
   lowOrHi.textContent = '';
   setGameOver();
 } else if (guessCount === 10) {
   lastResult.textContent = '!!!ゲームオーバー!!!';
   setGameOver();
 } else {
   lastResult.textContent = '間違いです!';
   lastResult.style.backgroundColor = 'red';
   if(userGuess < randomNumber) {
     lowOrHi.textContent='今の予想は小さすぎです!もっと大きな数字です。' ;
   } else if(userGuess > randomNumber) {
     lowOrHi.textContent = '今の予想は大きすぎです!もっと小さな数字です。';
   }
 }
userGuess === randomNumber

正解の数字 randomNumberと入力の数字userGuessを比較していきます。

userGuess === randomNumber

同じ時は正解!です。

不正解な場合は'間違いです!'ということで、

lastResult.textContent = '間違いです!';

背景を赤くして、

lastResult.style.backgroundColor = 'red';

正解の値が大きいか小さいかを指摘します。

if(userGuess < randomNumber) {
lowOrHi.textContent='今の予想は小さすぎです!もっと大きな数字です。' ;
} else if(userGuess > randomNumber) {
lowOrHi.textContent = '今の予想は大きすぎです!もっと小さな数字です。';
}

間違いの時の全文です。

else {
lastResult.textContent = '間違いです!';
lastResult.style.backgroundColor = 'red';
if(userGuess < randomNumber) {
lowOrHi.textContent='今の予想は小さすぎです!もっと大きな数字です。' ;
} else if(userGuess > randomNumber) {
lowOrHi.textContent = '今の予想は大きすぎです!もっと小さな数字です。';
}
}

if文が終わった時点で以下に進みます。

 guessCount++;
 guessField.value = '';
 guessField.focus();
guessCount++;

guessCountを"1"増やします。

guessField.value = ' ';

そしてguessField.valueを空欄にします。

guessField.focus();

入力欄にカーソルを移動します。

関数全文です。

function checkGuess() {
 let userGuess = Number(guessField.value);
 if (guessCount === 1) {
   guesses.textContent = '前回の予想: ';
 }
 guesses.textContent += userGuess + ' ';
 
 if (userGuess === randomNumber) {
   lastResult.textContent = 'おめでとう! 正解です!';
   lastResult.style.backgroundColor = 'green';
   lowOrHi.textContent = '';
   setGameOver();
 } else if (guessCount === 10) {
   lastResult.textContent = '!!!ゲームオーバー!!!';
   setGameOver();
 } else {
   lastResult.textContent = '間違いです!';
   lastResult.style.backgroundColor = 'red';
   if(userGuess < randomNumber) {
     lowOrHi.textContent='今の予想は小さすぎです!もっと大きな数字です。' ;
   } else if(userGuess > randomNumber) {
     lowOrHi.textContent = '今の予想は大きすぎです!もっと小さな数字です。';
   }
 }
 guessCount++;
 guessField.value = '';
 guessField.focus();
}

そして最後にこの関数が実行される処理を変数guessSubmitに紐ずけます。

guessSubmit.addEventListener('click', checkGuess); 

これでゲームが成立します。がもう少し手を加えた方がゲームらしくなりますので、次回に続けます。











この記事が気に入ったらサポートをしてみませんか?