FizzBuzzゲームをプログラミングで実現する。
彼女がjavascriptの基本について勉強していたので、
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ゲームを作ってもらいたいなと
思いました!
以上です!
ありがとうございました。
この記事が気に入ったらサポートをしてみませんか?