一時間も経たずに連続投稿申し訳ありません。
現在、選択した数字によって展開が分岐する簡単なアドベンチャーを作っているのですが、下記のプログラムがうまく動作しません。
#include "stdafx.h"
#include "stdlib.h"
int sentakua(int);
int sentakub(int);
int _tmain(int argc, _TCHAR* argv[/url])
{
int a,b,d,e;
printf("\"敵\"が現れた!\n"
"-------------------------------------------------\n"
"どうしますか?\n"
"(1:攻撃する,2:様子を伺う,3:逃げる)---");
scanf("%d", &a);
sentakua;
if(a==1){
printf("-------------------------------------------------\n");
printf("\"敵\"の反撃!\n"
"\"自分\"は 109 のダメージを受けた!\n"
"-------------------------------------------------\n"
"どうしますか?\n"
"(1:攻撃する,2:様子を伺う,3:回復する,4:逃げる)---");
scanf("%d", &b);
}
else if(a==2){
printf("-------------------------------------------------\n"
"どうしますか?\n"
"(1:攻撃する,2:様子を伺う,3:逃げる)---");
scanf("%d", &d);
}
else if(a==3){
printf("-------------------------------------------------\n"
"どうしますか?\n"
"(1:攻撃する,2:様子を伺う,3:逃げる)---");
scanf("%d", &e);
}
sentakub;
system("pause");
return 0;
}
//-----------------------------------------------------------------------------
int sentakua(int a){
switch(a){
case 1:
printf("-------------------------------------------------\n"
"攻撃が当たった!\n"
"\"敵\"に 55 のダメージを与えた!\n");
break;
case 2:
printf("-------------------------------------------------\n"
"\"敵\"もこちらの様子を伺っているようだ。\n");
break;
case 3:
printf("-------------------------------------------------\n"
"しかし、\"敵\"に回り込まれてしまった!\n");
break;
default:
printf("-------------------------------------------------\n"
"間違った選択をする事は\"死\"を意味します。\n");
return 0;
}
return 0;
}
int sentakub(int b){
switch(b){
case 1:
printf("-------------------------------------------------\n"
"\"敵\"にクリティカルヒット!\n"
"\"敵\"に 126 のダメージを与えた!!\n");
break;
case 2:
printf("-------------------------------------------------\n"
"\"敵\"はキズを舐めてダメージを回復した!\n");
break;
case 3:
printf("-------------------------------------------------\n"
"\"自分\"は手持ちの薬草を使った!\n"
"HPを 68 回復した!\n");
break;
case 4:
printf("-------------------------------------------------\n"
"うまく逃げ切れた!\n"
"---END---\n");
system("pause");
return 0;
default:
printf("-------------------------------------------------\n"
"間違った選択をする事は\"死\"を意味します。\n");
system("pause");
return 0;
}
return 0;
}
最初に 1 を選択すると、 sentakua はきちんと動作するのですが、2回目の 1 を選択すると sentakub がうまく動作しません。
どうすれば sentakub がうまく動作するのか教えて頂けると助かります。
関数が動きません
Re:関数が動きません
sentakua(&a)
sentakub(&b)
↑この二つの関数へはa,bそれぞれのアドレスを渡すようにします。
int sentakua(int *a)
int sentakub(int *b)
↑そしてこの関数は、上記のようにint型のポインタで受け取ります
switch(*a){
}
↑そしてswitch文のaは*a、bは*bとして下さい。
意味が分からなければ、値渡し、参照渡し、ポインタを勉強して下さい。
追記:
一部修正しました。

sentakub(&b)
↑この二つの関数へはa,bそれぞれのアドレスを渡すようにします。
int sentakua(int *a)
int sentakub(int *b)
↑そしてこの関数は、上記のようにint型のポインタで受け取ります
switch(*a){
}
↑そしてswitch文のaは*a、bは*bとして下さい。
意味が分からなければ、値渡し、参照渡し、ポインタを勉強して下さい。
追記:
一部修正しました。

Re:関数が動きません
sentakuaをsentakua(a)に
sentakubをsentakub(b)にしてください。
シエルさんはポインタを使っていますが、
sentakua関数・sentakub関数ではa,bの値を変更しないため
ポインタを使う必要はないと思います。
sentakubをsentakub(b)にしてください。
シエルさんはポインタを使っていますが、
sentakua関数・sentakub関数ではa,bの値を変更しないため
ポインタを使う必要はないと思います。
Re:関数が動きません
パコネコさん:返答ありがとうございます!
すいません・・・起動してませんでした。
シエルさん:返答ありがとうございます!
意味はわかりませんでしたが、今後のために勉強しようと思います。
ご指摘ありがとうございます。
白い時空さん:返答ありがとうございます!
無事に動きました!
ありがとうございます!
すいません・・・起動してませんでした。
シエルさん:返答ありがとうございます!
意味はわかりませんでしたが、今後のために勉強しようと思います。
ご指摘ありがとうございます。
白い時空さん:返答ありがとうございます!
無事に動きました!
ありがとうございます!