for文について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ヒューガ

for文について

#1

投稿記事 by ヒューガ » 14年前

はじめまして。初めてここを利用させてもらいます。

コード:

//空いている敵番号を検索
int enemy_num_search(){
    for(int i=0;i<ENEMY_MAX;i++){//フラグのたって無いenemyを探す
        if(enemy[i].flag==0){
            return i;//使用可能番号を返す
        }
    }
    return -1;//全部埋まっていたらエラーを返す
}

//敵情報を登録
void enemy_enter(){//敵の行動を登録・制御する関数
    int i,j,t;
    for(t=0;t<ENEMY_ORDER_MAX;t++){
        if(enemy_order[t].cnt==stage_count){//現在の瞬間がオーダーの瞬間なら
            if((i=enemy_num_search())!=-1){
                enemy[i].flag   =1;//フラグ
                enemy[i].cnt    =0;//カウンタ
                enemy[i].pattern=enemy_order[t].pattern;//移動パターン
                enemy[i].muki   =1;//向き
                enemy[i].knd    =enemy_order[t].knd;//敵の種類
                enemy[i].x      =enemy_order[t].x;//座標
                enemy[i].y      =enemy_order[t].y;
                enemy[i].sp     =enemy_order[t].sp;//スピード
                enemy[i].bltime =enemy_order[t].bltime;//弾の発射時間
                enemy[i].blknd  =enemy_order[t].blknd;//弾幕の種類
                enemy[i].blknd2 =enemy_order[t].blknd2;//弾の種類
                enemy[i].col    =enemy_order[t].col;//色
                enemy[i].wait   =enemy_order[t].wait;//停滞時間
                enemy[i].hp     =enemy_order[t].hp;//体力
                enemy[i].hp_max =enemy[i].hp;//体力最大値
                enemy[i].vx     =0;//水平成分の速度
                enemy[i].vy     =0;//鉛直成分の速度
                enemy[i].ang    =0;//角度
                for(j=0;j<6;j++)
                    enemy[i].item_n[j]=enemy_order[t].item_n[j];//落とすアイテム
            }
        }
    }
}
ここのコードですが、enemy_num_search関数のif(enemy.flag==0){ とreturn i;の間にprintfDx("%d",i);といれるとfor文は何度も繰り返すので一瞬で0からENEMY_MAXまでの数値を表示させるのかと思っていましたがそうならず、指定された敵の番号のみ表示されました。どうしてなのでしょう?

beatle
記事: 1281
登録日時: 14年前
住所: 埼玉
連絡を取る:

Re: for文について

#2

投稿記事 by beatle » 14年前

逆質問で申し訳ありませんが、「指定された敵の番号」とは具体的に何でしょうか。どこで「指定」しているのでしょうか。

jay
記事: 314
登録日時: 15年前
住所: 大阪市
連絡を取る:

Re: for文について

#3

投稿記事 by jay » 14年前

for文について、というよりはreturnについて調べてみれば自ずと答えは分かると思いますよ~
♪僕たちは まだ森の中 抜け出そう 陽のあたる場所へ

ヒューガ

Re: for文について

#4

投稿記事 by ヒューガ » 14年前

ごめんなさい。言い方が悪かったですね。
「フラグがたった敵の番号」と言ったほうがよろしいでしょうか。
あと
結構返事って早く来るものなんですね

beatle
記事: 1281
登録日時: 14年前
住所: 埼玉
連絡を取る:

Re: for文について

#5

投稿記事 by beatle » 14年前

フラグがたった敵の番号のみ表示されるのは、jayさんが言うようにreturn文があるからですね。
いや、正確には「フラグがたっていない敵の番号のみ」表示されているのですが。

ヒューガ

Re: for文について

#6

投稿記事 by ヒューガ » 14年前

ググったらWikipediaに書いてありました!
returnで関数から抜けるんですね!
お騒がせしました!ありがとうございます!

閉鎖

“C言語何でも質問掲示板” へ戻る