[ create a new paste ] login | about

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

C, pasted on Jun 4:
// C(/C++)言語の関数の話・初心者向け・2 ---------------------------------------------------------------

//
// Q)引き算一度するだけなら関数とかいらないのでは?
// A)多分いらないです
//
// でも、今後この↓計算は変わる予定がある。例えばサイコロの値を加えたいと考えた時、
// 

int calc_damage_1(int atk, int def)
{
	int dice = rand()%6 + 1;		// ダメージ計算を関数に分けておいたおかげで、
	int damage = atk + dice - def;	// この関数内に書き足して一発で済んだ
	return damage;
}

void proc_C()
{
	int atk_A = 10;	// キャラAの攻撃力のつもり
	int def_A =  5;	// キャラAの防御力のつもり
	
	int atk_B = 10;	// キャラBの攻撃力のつもり
	int def_B =  5;	// キャラBの防御力のつもり

	printf("キャラAはキャラBから、%d のダメージを受けた!\n", calc_damage_1(atk_B, def_A));
	printf("キャラBはキャラAから、%d のダメージを受けた!\n", calc_damage_1(atk_A, def_B));
}


// ---------------------------------------------------------------------------------------------------
//
// 上記のように書いてみて時が過ぎ、さらに気が付く「あ、printfしてる所も毎回書くのしんどいな」
// なので、例えばこうしてみる
//

int calc_damage_2(const char name[32], int atk, int def)
{
	//            ↑表示用の名前を渡す事にした
	
	int dice = rand()%6 + 1;
	int damage = atk + dice - def;
	
	printf("%s は、%d のダメージを受けた!\n", name, damage);	// ← そしてこの行を足した
	
	return damage;
}

void proc_D()
{
	int atk_A = 10;	// キャラAの攻撃力のつもり
	int def_A =  5;	// キャラAの防御力のつもり
	
	int atk_B = 10;	// キャラBの攻撃力のつもり
	int def_B =  5;	// キャラBの防御力のつもり

	calc_damage_2("キャラA", atk_B, def_A);
	calc_damage_2("キャラB", atk_A, def_B);
}

int main()
{
	proc_C();	// ※この説明用に1カタマリにまとめた処理
	proc_D();	//   〃
	
	return 0;
}

// 次で最後


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


Create a new paste based on this one


Comments: