こんばんわ。
num4を計算してからaを求めないといけないんですが、
そうなってないのでnum4が未定義ですよというエラーが発生しています。
何点か問題点があったので指摘しておきますね。
- 変数の名前がnum1などとなっているので、何に使われている変数なのかが非常にわかりにくい
- ダメージ値を計算しているのに、ゴーレムのヒットポイントから差し引いていない
- 1,2,3以外の数値が入力された場合に、再入力を促すメッセージが表示されてない
- ダメージ値が負の場合が考慮されていない
- do whileの判定条件が正しくない。num1==0となっているが、正しくはゴーレムのライフが正の値のとき
これぐらいですかね。
以上の課題を改善したコードを載せておきます。
参考にして下さい。
あと、作成されたコードはスクショで貼るのではなく、
テキストでお願いしますね。
一からコードを手打ちしないといけませんので。
それでは。
golem.cpp
1#include <iostream>
2#include <stdlib.h>
3#include <time.h>
4using namespace std;
5
6int main(){
7 int golem_hit_point_max = 300; // ゴーレムのヒットポイントの最大値
8 int golem_defence_point = 80; // ゴーレムの防御力
9 int golem_hit_point = golem_hit_point_max; // ゴーレムのヒットポイントの現在値
10 int attack_method; // 攻撃手段
11 int attack_point; // 攻撃力
12 int damage_point; // ダメージ値
13
14 srand((unsigned int)time(NULL));
15 cout << "ゴーレム HP : " << golem_hit_point << " 防御力 : " << golem_defence_point << endl;
16 do {
17 cout << "残りHP : " << golem_hit_point << endl;
18 cout << "攻撃手段を選択して下さい(1.攻撃 2.特技 3.魔法)" << endl;
19 cin >> attack_method;
20 if(attack_method == 1){
21 attack_point = 60 + rand() % 20;
22 damage_point = attack_point - golem_defence_point;
23 damage_point = damage_point >= 0 ? damage_point : 0; // ダメージ値が負なら0に補正
24 cout << "ダメージは" << damage_point << "です。" << endl;
25 golem_hit_point -= damage_point;
26 }else if(attack_method == 2){
27 attack_point = 50 + rand() % 30;
28 damage_point = attack_point - golem_defence_point;
29 damage_point = damage_point >= 0 ? damage_point : 0; // ダメージ値が負なら0に補正
30 cout << "ダメージは" << damage_point << "です。" << endl;
31 golem_hit_point -= damage_point;
32 }else if(attack_method == 3){
33 attack_point = 90 + rand() % 20;
34 damage_point = attack_point - golem_defence_point;
35 damage_point = damage_point >= 0 ? damage_point : 0; // ダメージ値が負なら0に補正
36 cout << "ダメージは" << damage_point << "です。" << endl;
37 golem_hit_point -= damage_point;
38 }else{
39 cout << "再入力して下さい。" << endl;
40 }
41
42 }while(golem_hit_point > 0);
43
44 cout << "ゴーレムを倒した!" << endl;
45 return 0;
46}