[ペチパーの大冒険] ゲーム制作#021「プログラミング謎解き 中級編3」

2025/02/25

ゲーム 開発

t f B! P L
eyecatch 仕事の多忙さで、自分の会社のゲーム作りが滞っています。 誰か助けてください。 開発依頼が止まりません。 でも、自分のゲーム作りも止めるつもりも、微塵もないですけどね。 というわけで、今回もゲーム内で使う予定の、謎解きプログラミング問題を作ってみました。

謎解き: ポーションの品質チェック

シナリオ

あなたは王国の 錬金術師 です。ある日、街の市場で「粗悪なポーションが売られている」という噂が広まりました。 商人たちは「このポーションはちゃんと効果がある!」と主張していますが、市民は「本当に大丈夫なの?」と疑っています。 そこで、あなたは ポーションの品質をチェックする関数 を作ることになりました。

問題

ポーションの品質は、以下の 3つの要素 に基づいて評価されます。
- potency(効果の強さ): 数値が高いほど良い。(例: 50 以上なら優秀) - purity(純度): 100% に近いほど良い。(例: 90%以上なら安全) - stability(安定性): 0 以上の整数で、値が低いほど良い。(例: 5 以下なら問題なし)
あなたの仕事は、これらの値をチェックし、ポーションが "良質 (Good)", "普通 (Normal)", "危険 (Dangerous)" のどれに分類されるか判定することです。 以下のルールでポーションを評価してください。
- すべての基準を満たす → "Good" - 1つでも基準を満たさない → "Normal" - 2つ以上の基準を満たさない → "Dangerous"

条件

function checkPotionQuality(potency, purity, stability) { // ここに処理を書く } // テストケース console.log(checkPotionQuality(60, 95, 3)); // "Good" console.log(checkPotionQuality(40, 85, 4)); // "Normal" console.log(checkPotionQuality(30, 80, 10)); // "Dangerous" この関数を実装し、ポーションの品質をチェックしてください! 王国の人々が安心してポーションを使えるよう、あなたのプログラムにかかっています!

解答プログラミングを打ち込む

※ checkPotionQuality()関数を完成させてください。

答え

回答(サンプル)

function checkPotionQuality(potency, purity, stability) { potency = Number.isInteger(potency) ? potency : 0 purity = Number.isInteger(purity) ? purity : 0 stability = Number.isInteger(stability) ? stability : 0 const goodPotency = potency >= 50 const goodPurity = purity >= 90 const goodStability = stability <= 5 const passedChecks = goodPotency + goodPurity + goodStability // true を数値化 switch(passedChecks){ case 1: case 2: return "Normal" case 3: return "Good" default: return "Dangerous" } }

解説

  1. 各基準 (potency, purity, stability) が合格基準を満たしているかを true / false で判定。
  2. true を 1 に変換し、合計値を passedChecks に格納。
  3. passedChecks の数によって "Good", "Normal", "Dangerous" を返す。(if文で書いても良い)
  4. 送られてきた値が数値かどうか判別して、違う場合は 0 を代入する。

あとがき

問題を理解して、読み解いて、答えを求めるということが必要になるんですよね。 問題がわかりにくい場合もあり、現実世界のエンジニアは、「言ってる意味が分からない」と言い放つことが多いようですが、 自分が理解する力が不足している場合も大いにあります。 これは、ドメイン認識力に依存するので、エンジニアの場合、何のインプット(送値)があって、どういう処理(関数処理)をして、どういうアウトプット(return)をすれば良いかを思考するといいでしょう。 え?それが難しいんだって? だからこういうゲームでプレ実行してみるのがいいんですよ!

人気の投稿

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。

ブログ アーカイブ