以前からこの質問掲示板を見させていただき、みなさんの意見を参考にさせていただいています。
さっそく質問なんですが、
要点だけ話ますと
printfのように、任意の数(printfの場合%dの数)引数を定義できる関数の作り方
ifやwhileのように中括弧を使える関数の使い方
です。
私は龍神録を参考にSTGを作っているのですが、
敵の移動パターンをいくつか作り、それを一つの関数にまとめたのですが、
その移動パターンをまとめた時、
・移動して、一定の時間がたつと引数waitの時間だけ停止、その後また移動を始める
・引数angleの値だけ旋回して移動
これらを一つにまとめEnemyMoveという関数を作り、
//敵の移動パターンと描画をする関数
void EnemyMove(int x,int y,int number,int movepattern,int wait,int angle){
//ゲームのカウントと引数のカウントがあうと、敵を描画移動させるフラグを立てる処理
if(movepattern==0)
//移動して、一定の時間がたつと引数waitの時間だけ停止、その後また移動を始める処理
if(movepattern==1)
//引数angleの値だけ旋回して移動する処理
DrawGraph(x,y,enemy[number].img,TRUE);//敵キャラの描画
}
void EnemyMain(){
EnemyMove(100,100,0,0,150,0);
EnemyMove(200,100,1,0,150,0);
EnemyMove( 50, 0,2,1,0,PI);
EnemyMove( 50, 50,3,1,0,PI);
EnemyMove( 100,100,4,1,0,PI/2);
}
EnemyMainにEnemyMoveを追加することで書いた関数の数だけ敵が表示できるようになっています
この時、引数MovePatternが0の時(つまり移動中一旦停止する移動パターン)の時、引数angleは移動の処理に関係なく、
1の時(移動時に旋回する移動パターン)の時はwaitの変数が必要ありません
これを引数MovePatternに0が入った時、1が入った時、さらにはまた移動パターンを追加することになると思いますが、引数MovePattern以降の引数の名前や数が変わるように関数を作成したいのです。
もうひとつの
ifやwhileのように中括弧を使える関数の使い方
についてですが
#include <stdio.h>
void a(int x){
//なんらかの処理
}
void main(){
int x=2;
a(x){
printf("ABC\n");
}
return 0;
}
説明不足かもしれませんが回答よろしくお願いします。