[ create a new paste ] login | about

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

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

// -------------------------------------------------------------------------------------
//
// 関数が欲しいとプログラマが思う最初の動機は、おそらく「似たような処理を何度も書きたくない」だと思う。
// それをさておいたとしても、似たような処理は ちょいと工夫をして 一つにまとめた方が効率がいいのは明白。
//
// そんな話は置いておいて、

void proc_A()
{
	int atk = 10;	// 攻撃力のつもり
	int def =  5;	// 防御力のつもり

	printf("%d の力で攻撃した! %d のダメージを与えた!\n", atk, (def-atk));
}

//
// こんな説明用のコードであっても、俺は、
// 「あぁ、一続きに処理を書いてしまうと説明しづらいなぁ」という「俺の都合から」
// これ自身を関数に分けた。こんな動機でも関数を使う事があるが、大抵は上にも書いた通り
//
// 「似たような処理をまとめてしまう」為に書いたりする。
//

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

	int damage_A, damage_B;
	
	damage_A = atk_A - def_B;
	damage_B = atk_B - def_A;

	printf("キャラAは %d のダメージを受けた!\n", damage_B);
	printf("キャラBは %d のダメージを受けた!\n", damage_A);
	
	// ↑このAとBを戦わせたい! → キャラは今後C,D,E…と増える予定
	// なので、この「戦わす」処理を抽出して、関数の形にまとめてみる。
	//
	// Q)どうなってたらいい?:
	// A)攻撃力と防御力ってパラメタがあるの? 引き算したらダメージなの?
	//   ならその計算をして、ダメージ値を返す関数とかあれば使いまわし出来るんじゃね?
	// 
}

// ダメージ値を返す関数
int calc_damage(int atk, int def)
{
	int damage;
	damage = atk - def;
	
	return damage;	// ※面倒なら return atk - def; でおk
}

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

	int atk_C = 10;	// キャラCの攻撃力のつもり
	int def_C =  5;	// キャラCの防御力のつもり

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


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

// --------------- ここまでが前提


Output:
1
2
3
4
5
6
10 の力で攻撃した! -5 のダメージを与えた!
キャラAは 5 のダメージを受けた!
キャラBは 5 のダメージを受けた!
キャラAはキャラBから、5 のダメージを受けた!
キャラBはキャラCから、5 のダメージを受けた!
キャラCはキャラAから、5 のダメージを受けた!


Create a new paste based on this one


Comments: