ページ 11

HPを減少させるにはどうすればいいでしょうか

Posted: 2012年1月16日(月) 16:20
by アマ・プログラマ
RPGの戦闘の画面を作っている途中なのですが、敵のHPをダメージを与えた分だけ減少させるにはどうすればいいでしょうか?

一番初めのint main(void)にはcommand()と入力して、好きなコマンドを選択する関数に移るようにしておきます。
次は普通攻撃と魔法攻撃をする場合をvoid attack(void)やvoid magic(void)などで分けておき、HPを8にしたいので、それぞれの関数にstatic int HP = 8と入力しておきましたが、ここで問題が発生しました。普通攻撃をして倒せなかったときに、魔法攻撃に切り替えて攻撃したときにHPがまったくダメージを与えていない状態に戻されています。たとえば普通の攻撃で5ダメージを与えると、残りのHPは3になります。そこで魔法攻撃をして7ダメージを与えれば十分倒せるはずなのに、残りのHPは1となっており倒せません。

問題はstatic int HP = 8を入力したこと自体か、それを入力した場所に問題があると思うのですが、どうすればいいでしょうか?

わかりにくい質問ですがよろしくお願いします。

Re: HPを減少させるにはどうすればいいでしょうか

Posted: 2012年1月16日(月) 17:07
by softya(ソフト屋)
>問題はstatic int HP = 8を入力したこと自体か、それを入力した場所に問題があると思うのですが、どうすればいいでしょうか?

main側にHPを持たせてポインタで持ちまわるか、難しいと感じるなら関数外に出して変数を共有する必要があります。

Re: HPを減少させるにはどうすればいいでしょうか

Posted: 2012年1月17日(火) 15:51
by アマ・プログラマ
お返事いただきありがとうございます。

具体的にどのように入力すればいいのでしょうか?

何度ももうしわけないです。

Re: HPを減少させるにはどうすればいいでしょうか

Posted: 2012年1月17日(火) 16:10
by softya(ソフト屋)
元がどうなっているか分からないですが下記のように書き換える事です。

コード:

static int HP = 8;

void attack(void)
{
	
}
void magic(void)
{
	
}
【補足】ちなみにHPだけ独立してあるのは余り褒められたプログラム構造ではありません。プログラムが小さい間は分かりやすいので初心者向きですが大きくなると害が出るようになってきます。