// C(/C++)言語の関数の話・初心者向け・3 ---------------------------------------------------------------
//
// こんな(説明1、2)具合に、関数は「処理を何らかの単位で切り出す物」だけど、
// その考え方や動機は色々。
//
// 説明の為に分割させる俺もいれば、計算処理だけ(ホント数学で言う関数のような)をさせたい事もあれば、
// 表示処理まで任せようと思うこと(サブルーチン)もあれば、色々。
//
// そんな便利な「関数」だけど…
//
void fight_proc(
const char name_A[32], int atk_A, int def_A // ← 引数多すぎて使いづれぇwww
, const char name_B[32], int atk_B, int def_B
){
int dice_A = rand()%6 + 1;
int dice_B = rand()%6 + 1;
int damage_A = atk_B + dice_B - def_A;
int damage_B = atk_A + dice_A - def_B;
printf("%s は %s から %d のダメージを受けた!\n", name_A, name_B, damage_A);
printf("%s は %s から %d のダメージを受けた!\n", name_B, name_A, damage_B);
}
//
// …みたいな事になるので、そういった場合には次のステップで考え直してみる
//
// 1.この関数、どこまでやらすの? 何したい関数なの?
//
// 2.この関数、そもそもこれの中1箇所で全部書いちゃっていいの? もう一段階関数化出来ない?
//
// 3.やらせたい内容が合ってるつもりなら(他人に「こういう関数です」と説明出来るなら)
// 他の方法で、もっとすっきりと引数渡せないだろうか
//
// どうなればいいか、どうやりたい内容を「切り取ったらいいか」は、色々書いて慣れる事。
// そして特に上の3のケースについては、別途書いた「構造体の話」をどうぞ。
void proc_D()
{
int atk_A = 10; // キャラAの攻撃力のつもり
int def_A = 5; // キャラAの防御力のつもり
int atk_B = 10; // キャラBの攻撃力のつもり
int def_B = 5; // キャラBの防御力のつもり
fight_proc("キャラA", atk_A, def_A, "キャラB", atk_B, def_B);
}
int main()
{
proc_D(); // ※この説明用に1カタマリにまとめた処理
return 0;
}
// おわり