初心者プログラマーがJavascriptは楽しいと感じた学習方法(クリックゲームを作成する)

## 執筆者のプログラミングレベル
プログラミング入門レベルを学習して3ケ月。
HTML,CSS,Javascriptを学習。
プログラミング練習としてホームページの模写コーディングも実装済み。


## 【楽しい学習方法】何か簡単なゲームやアプリを作る

せっかく学習をしたからには、何か面白いものを作成しながら勉強していきたいと思いました。
今回は「クリックゲーム」を作成してみました。
まだまだ技術力不足ですが、何かを作成していくことは楽しい学習方法だと感じています。

<strong>作成画面</strong>

![スクリーンショット 2023-10-06 211733.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570673/d5446ced-335d-7f59-1d05-67168ac90386.png)

<br/>
<br/>

<strong>ソースコード</strong>
```
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>クリックゲーム</title>
  <style>
    body {
      display: flex;
      justify-content: center;
      align-items: center;
      height: 100vh;
      margin: 0;
      background-color: #f0f0f0;
      font-family: Arial, sans-serif;
    }

    .container {
      text-align: center;
    }

    .game-info {
      padding: 20px;
      background-color: #3498db;
      border-radius: 10px;
      color: white;
    }

    #clicker, #start, #reset {
      font-size: 1.5em;
      padding: 10px 20px;
      margin: 10px;
      border: none;
      border-radius: 5px;
      cursor: pointer;
    }

    #clicker:disabled {
      background-color: #bdc3c7;
      cursor: not-allowed;
    }

    #reset {
      background-color: #e74c3c;
    }

    #reset:hover {
      background-color: #c0392b;
    }

    #start {
      background-color: #27ae60;
    }

    #start:hover {
      background-color: #219d54;
    }
  </style>
</head>
<body>
  <div class="container">
    <div class="game-info">
      <h1>クリックゲーム</h1>
      <button id="clicker" disabled>クリックボタン</button>
      <div id="score">クリック数: 0</div>
      <div id="timer">残り時間: 10 秒</div>
      <button id="start" onclick="startGame()">スタート</button>
      <button id="reset" onclick="resetGame()">リセット</button>
    </div>
  </div>

  <script>
    let score = 0;
    let timer = 10;
    let timerInterval;

    const startButton = document.getElementById('start');
    const clickerButton = document.getElementById('clicker');
    const scoreDisplay = document.getElementById('score');
    const timerDisplay = document.getElementById('timer');

    clickerButton.addEventListener('click', () => {
      score++;
      scoreDisplay.textContent = `クリック数: ${score}`;
    });

    function startGame() {
      score = 0;
      timer = 10;
      scoreDisplay.textContent = `クリック数: ${score}`;
      timerDisplay.textContent = `残り時間: ${timer} 秒`;

      clickerButton.disabled = false;
      startButton.disabled = true;

      timerInterval = setInterval(() => {
        timer--;
        timerDisplay.textContent = `残り時間: ${timer} 秒`;

        if (timer === 0) {
          clearInterval(timerInterval);
          clickerButton.disabled = true;
          startButton.disabled = false;
          alert('ゲーム終了！');
        }
      }, 1000);
    }

    function resetGame() {
      clearInterval(timerInterval);
      window.location.reload();
    }
  </script>
</body>
</html>

```

## 学習目的
プログラミング学習をしてIT転職を考えている。
プログラミングは楽しいので、Web系のエンジニアなどの転職を視野に入れている。

## 今後の学習内容
HTML,CSS,Javascriptで何かゲームやアプリを作成しながら学習していきたい。
<strong>転職活動にはポートフォリオが必要ですが、最終的には質の高いポートフォリオ作成を目指したいです。</strong>

## 気になる学習サイト
javascriptで簡単なゲームを作成しているのを紹介しているサイトです。

https://kazutameblog.com/javascript/js-question-list/