[ create a new paste ] login | about

Link: http://codepad.org/XF7ucOP4    [ raw code | output | fork ]

C, pasted on Jun 4:
// 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;
}

// おわり


Output:
1
2
キャラA は キャラB から 10 のダメージを受けた!
キャラB は キャラA から 7 のダメージを受けた!


Create a new paste based on this one


Comments: