ミッション一覧に戻る
3秒チャレンジ

3秒チャレンジ

03/26 13:45
ミッション内容

「3秒チャレンジ」

ミッション:3秒以内にボタンを何回押せるか挑戦しよう!

コードを写そう

HTMLタブに下のコードを貼り付けてください。

html
<button id="startBtn">スタート</button>
<button id="hitBtn" disabled>たたけ!</button>
<p id="score">0</p>
<p id="message">スタートを押してね</p>

CSSタブに下のコードを貼り付けてください。

css
#hitBtn {
  font-size: 2rem;
  padding: 20px 40px;
  cursor: pointer;
}

#score {
  font-size: 3rem;
  font-weight: bold;
}

JSタブに下のコードを貼り付けてください。

js
const startBtn = document.querySelector('#startBtn');
const hitBtn   = document.querySelector('#hitBtn');
const score    = document.querySelector('#score');
const message  = document.querySelector('#message');

let count = 0;

startBtn.addEventListener('click', function() {
  count = 0;
  score.textContent = '0';
  message.textContent = '3秒でたたけ!';
  startBtn.disabled = true;
  hitBtn.disabled = false;

  setTimeout(function() {
    hitBtn.disabled = true;
    startBtn.disabled = false;
    message.textContent = count + '回!また挑戦する?';
  }, 3000);
});

hitBtn.addEventListener('click', function() {
  count = count + 1;
  score.textContent = count;
});

「スタート」を押して3秒間連打し、結果が表示されることを確認してください。

コードを読み解こう

ゲームの「状態管理」:disabled でボタンを制御する

js
startBtn.disabled = true;   // スタートボタンを押せなくする
hitBtn.disabled = false;    // たたくボタンを押せるようにする

disabled = true でボタンを操作できない状態にします。ゲーム中はスタートボタンを押せなくして、ゲーム終了後はたたくボタンを押せなくすることで、順番通りに遊んでもらえます。

setTimeout でゲームオーバーを作る

js
setTimeout(function() {
  hitBtn.disabled = true;
  startBtn.disabled = false;
  message.textContent = count + '回!また挑戦する?';
}, 3000);

「スタート」を押した3000ミリ秒(3秒)後にこの処理が実行されます。setTimeout は「反応速度測定」でも使いましたが、今回は「3秒後にゲームを終了させる」ために使っています。

count を毎回リセットする

js
count = 0;
score.textContent = '0';

「スタート」を押したときに count0 に戻しています。「数を刻む石板」のリセットボタンと同じ考え方で、もう一度ゲームを始めたときに前回のスコアが残らないようにしています。

改造しよう

ミッション:制限時間を変えよう

js
setTimeout(function() {
  ...
}, 3000);  ← ここを変える(ミリ秒)

30005000 にすると5秒チャレンジになります。


自己チェック

  • [ ] スタートを押すとたたくボタンが有効になる
  • [ ] 3秒後にたたくボタンが無効になり結果が表示される
  • [ ] setTimeout を使っている
  • [ ] スタートを押すたびにスコアが0に戻る