見出し画像

FizzBuzzゲームをプログラミングで実現する。

彼女がjavascriptの基本について勉強していたので、
FizzBuzzゲームを作ってみようと提案しました!

「FizzBuzzゲームについて」
プログラミングの練習でよく使用されるゲームのことで
1から順番に数字を発言していき、
3で割り切れる場合→「Fizz」
5で割り切れる場合→「Buzz」
両方で割り切れる場合→「FizzBuzz」
と発言するゲームのことです。

このルールに沿ってFizzBuzzゲームを実装してと
お願いしました。
少し、ルール追加をして、
数字はコマンドライン上で入力された数字を受け取り
その数字を1ずつカウントアップしてFizzBuzzゲームを行うとします。

また、使用した言語はNode.jsです。
以下に作成したコードを載せています。

const readline = require("readline");

// 入力された数字を受け取る
const inputNumber = () => {
  return new Promise((resolve, reject) => {
    // コマンドラインから数字を入力させる
    const read = readline.createInterface({
      input: process.stdin,
      output: process.stdout,
    });
    read.question("好きな2桁以上の数字を入れてください。", (answer) => {
      //数字以外の場合は、処理を終了させる。
      if (isNaN(answer)) {
        read.close();
        reject("失敗!!");
      } else {
        if (String(answer).length > 1) {
          //数字の場合は、処理を続行させる。
          read.close();
          resolve(answer);
        } else {
          read.close();
          reject("失敗!!");
        }
      }
    });
  });
};

// メイン処理
const main = async () => {
  const number = await inputNumber().catch((e) => {
    console.log(e);
  });
  if (number == null) {
    return;
  }

  console.log("0から入力された数字まで1ずつ増やして出力します。");
  console.log("3で割り切れる場合は、Fizzを出力します。");
  console.log("5で割り切れる場合は、Buzzを出力します。");
  console.log("3と5両方で割り切れる場合は、FizzBuzzを出力します。");
  console.log("それではスタート!!!");

  // 数字を繰り返してfizz or buzz or fizzbuzzを出力
  for (let index = 1; index <= number; index++) {
    // ここでfizzbuzzwordを作成する
    // 出力するときは、console.logを使う。

    // fizzbuzz問題
    // 3で割り切れる場合=3の倍数また3で割ったあまりが0になるときは、Fizzを出力
    // 5で割り切れる場合=5の倍数また5で割ったあまりが0になるときはは、Buzzを出力
    // 15で割り切れる場合=15の倍数また15で割ったあまりが0になるときは場合は、FizzBuzzを出力
    // 上記以外の場合は、数字をそのまま出力する
    if (index % 15 === 0) {
      console.log("FizzBuzz");
    } else if (index % 5 === 0) {
      console.log("Buzz");
    } else if (index % 3 === 0) {
      console.log("Fizz");
    } else {
      console.log(index);
    }
  }
};

// 実行
main();

注意点として、実行する順番に気をつけて作成しないと
両方とも割り切れる場合に、
3で割り切れる
5で割り切れる
という条件を通ってしまいます。
またif、else if 、else を使用した方がすっきりとしたコードを
書けますが他にも同様の内容を出力する方法はあります。
結果として彼女はFizzBuzzゲームを完成させることはできませんでしたが、
何がダメで実現できなかったのかを理解することができました。
彼女にはもっと考えることの面白さ、考えた後にプログラミングで
実現して動いた時の感動を実感して欲しいなと思いました。
まだ、勉強途中ということなので
もう少し勉強が進んだら改めてFizzBuzzゲームを作ってもらいたいなと
思いました!

以上です!
ありがとうございました。

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