敵にショットを撃たせてみよう

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

敵にショットを撃たせてみよう

#1

投稿記事 by Ausuto » 13年前

敵にショットを撃たせてみようの最初のこれ

void enter_shot(int i){
int j;
for(j=0;j<SHOT_MAX;j++){//フラグのたって無いenemyを探す
if(shot[j].flag==0){//未使用の弾幕データがあれば
memset(&shot[j],0,sizeof(shot_t));//初期化して登録
shot[j].flag=1;//フラグをたてる
shot[j].knd=enemy.blknd;//弾の種類
shot[j].num=i;//num=どの敵から発射されたものか。
shot[j].cnt=0;
return ;
}
}
}

//敵の行動制御
void enemy_act(){
int i;
for(i=0;i<ENEMY_MAX;i++){
if(enemy.flag==1){//その敵のフラグがオンになってたら
if(0<=enemy.pattern && enemy.pattern<ENEMY_PATTERN_MAX){
enemy_pattern[enemy.pattern](i);
enemy.x+=cos(enemy.ang)*enemy.sp;
enemy.y+=sin(enemy.ang)*enemy[i].sp;
enemy[i].x+=enemy[i].vx;
enemy[i].y+=enemy[i].vy;
enemy[i].cnt++;
enemy[i].img=enemy[i].muki*3+(enemy[i].cnt%18)/6;
//敵が画面外に外れたら消す
if(enemy[i].x<-20 || FIELD_MAX_X+20<enemy[i].x || enemy[i].y<-20 || FIELD_MAX_Y+20<enemy[i].y)
enemy[i].flag=0;
if(enemy[i].bltime==enemy[i].cnt)
enter_shot(i);
}
else
printfDx("enemy[i].patternの%d値が不正です。",enemy[i].pattern);
}
}
}

どうすればいいかがわからないです教えてください

nil
記事: 428
登録日時: 13年前

Re: 敵にショットを撃たせてみよう

#2

投稿記事 by nil » 13年前

どうすればいいのかわからないと言われても質問者さんが何をわかっていないのかわからない我々では
とてもお答えすることはできません。
フォーラムルール投稿前チェックをしっかりと読んでください。

Ausuto

Re: 敵にショットを撃たせてみよう

#3

投稿記事 by Ausuto » 13年前

言い方変えます

敵にショットを撃たせてみようのところの
最初の enemy.cpp がありますけど
追加するのか変更するのかそれともなにもしなくていいのかがわからないんです

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: 敵にショットを撃たせてみよう

#4

投稿記事 by softya(ソフト屋) » 13年前

既に同じ関数名があれば変更でなければ追加です。
意味を理解するためにも、そのまま写すのではなく今何故こうするのかを考えてやらないと意味がありません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 14年前
住所: 北海道札幌市
連絡を取る:

Re: 敵にショットを撃たせてみよう

#5

投稿記事 by Dixq (管理人) » 13年前

まず、現在のプロジェクトに
enter_shotという関数が存在するか確認して下さい。なければ追加すべきことが分かります。
既にあれば、差分を見てどこが変わったか確認して修正して下さい。

また、ソースコードは一式配布しておりますので、そちらでご確認頂いても良いかと思います。

アバター
Tatu
記事: 445
登録日時: 14年前
住所: 北海道

Re: 敵にショットを撃たせてみよう

#6

投稿記事 by Tatu » 13年前

>>Ausutoさん

enter_shotはそのまま追加。
enemy_actは赤字部分を変更、または全体を置き換えればよいです。

>>Dixqさん

13章の
---- enemy.cpp ----を
---- enemy.cppを変更 ----とすればよいのではないでしょうか。
他は変更とか追加とか書かれているのに
これはファイルの名前だけなのが気になったのでしょう。

あと、
http://dixq.net/forum/viewtopic.php?f=3&t=11281
に回答するときに14章のページを見たのですが

エクセルデータはそれまでのを変更ではなく、
配布プロジェクトと同じように14章用のcsvとして保存とし、
load_story()のファイルパスの変更も書いたほうがよいでしょう。

---- define.h に以下を「追加」 ----

#define SHOT_KND_MAX 7
となっていますが 
13章に
#define SHOT_KND_MAX 1
があるので「変更」ですね。

最後の文で脱字。
実行結果のように色々な弾幕を敵「が」撃てば成功です。

Ausuto

Re: 敵にショットを撃たせてみよう

#7

投稿記事 by Ausuto » 13年前

皆さんありがとうございます。

ではこの場合は
--- shot.cpp (のinclude文の直後) に以下を追加 ---
と書いてありますが(のinclude文の直後)とはどれなのでしょうか?
スイマセンがこれもお答えして欲しいです。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: 敵にショットを撃たせてみよう

#8

投稿記事 by softya(ソフト屋) » 13年前

Ausuto さんが書きました:皆さんありがとうございます。

ではこの場合は
--- shot.cpp (のinclude文の直後) に以下を追加 ---
と書いてありますが(のinclude文の直後)とはどれなのでしょうか?
スイマセンがこれもお答えして欲しいです。
これはinclude文が何か分からないという質問でしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
Tatu
記事: 445
登録日時: 14年前
住所: 北海道

Re: 敵にショットを撃たせてみよう

#9

投稿記事 by Tatu » 13年前

>>Ausutoさん

include文というのは
#include "../include/GV.h"
のことですがそれまでのページには書いていませんね。

shot.cppの最初に
#include "../include/GV.h"
を追加してください。

>>Dixqさん

13章のshot.cppの追加内容に
#include "../include/GV.h"
を追加してください。

1章のページに脱字。
今後章ごとにダウ「ン」ロードしたファイルはこのように追加して行って下さい。

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 14年前
住所: 北海道札幌市
連絡を取る:

Re: 敵にショットを撃たせてみよう

#10

投稿記事 by Dixq (管理人) » 13年前

>Tatuさん

ご指摘ありがとうございます。
修正しました。
14章用のcsvとして保存する件については、確かに仰る通りですね。検討させて下さい。

閉鎖

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