敵のデータの構造体と配列

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

敵のデータの構造体と配列

#1

投稿記事 by suimasen » 14年前

敵のデータを構造体にして、8体のデータを配列にしたいです。
最終的にはEnemy.〇で呼び出したいです。

typedef struct{
 double x;
 double y;
 double muki;
 double radius;
 int image;
 int counter;
}Enemy_t;

ship3_image = LoadGraph("ship3.png");
Enemy_t Enemy[8];

Enemy_t Enemy[8]={
   {400, 50, 0, 10, ship3_image, 0},
   {400, 100, 0, 10, ship3_image, 0},
   {400, 150, 0, 10, ship3_image, 0},
   {400, 200, 0, 10, ship3_image, 0},
   {400, 250, 0, 10, ship3_image, 0},
   {400, 300, 0, 10, ship3_image, 0},
   {400, 350, 0, 10, ship3_image, 0},
   {400, 400, 0, 10, ship3_image, 0},
};

これで
   Enemy[0].x == 400
   Enemy[0].image == ship3_image
といった具合になるのでしょうか?


c言語初心者で3日悩んだけれども解決しなかったので、質問させて頂きます。
何か解決策があればご教授下さい。

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: 敵のデータの構造体と配列

#2

投稿記事 by h2so5 » 14年前

解決策も何も、そうなるかどうか確かめてみればいいのではないでしょうか?
それとも suimasenさんの思っているようにならなかったのですか?

suimasen

Re: 敵のデータの構造体と配列

#3

投稿記事 by suimasen » 14年前

>> h2so5
なりませんでした・・・

敵のデータの要素を8体分を手動で決める方法は何か御存じでないですか?
初期化がなかなかできません

お願いします

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: 敵のデータの構造体と配列

#4

投稿記事 by h2so5 » 14年前

suimasen さんが書きました:>> h2so5
なりませんでした・・・
ではどうなったのですか?
実際に動かしたときの完全なコードも見せてください。

non
記事: 1097
登録日時: 15年前

Re: 敵のデータの構造体と配列

#5

投稿記事 by non » 14年前

suimasen さんが書きました: Enemy_t Enemy[8];

Enemy_t Enemy[8]={
   {400, 50, 0, 10, ship3_image, 0},
   {400, 100, 0, 10, ship3_image, 0},
   {400, 150, 0, 10, ship3_image, 0},
   {400, 200, 0, 10, ship3_image, 0},
   {400, 250, 0, 10, ship3_image, 0},
   {400, 300, 0, 10, ship3_image, 0},
   {400, 350, 0, 10, ship3_image, 0},
   {400, 400, 0, 10, ship3_image, 0},
};
初期化できないというのは、2重定義のエラーが出るということでしょうか?
とにかく、質問の意味が分からないですよ。
non

suimasen

Re: 敵のデータの構造体と配列

#6

投稿記事 by suimasen » 14年前

このソースファイルはだいたいこんな感じです。

typedef struct{
int x;
int y;
double muki;
int radius;
int image;
int counter;
}Enemy_t;
static int ship3_image = LoadGraph("ship3.png");
Enemy_t Enemy[8]={
{400, 50, 0.0, 10, ship3_image, 0}, //{Enemy[0].x=400, ・・・,Enemy[0].image=ship3_image
{400, 100, 0.0, 10, ship3_image, 0}, //と格納されているのでしょうか?
{400, 150, 0.0, 10, ship3_image, 0},
{400, 200, 0.0, 10, ship3_image, 0},
{400, 250, 0.0, 10, ship3_image, 0},
{400, 300, 0.0, 10, ship3_image, 0},
{400, 350, 0.0, 10, ship3_image, 0},
{400, 400, 0.0, 10, ship3_image, 0},
};

void Enemy_Initialize(){
}

void Enemy_Calc(){
}

void Enemy_Graph(){
for(m_i=0; m_i<8; m_i++){
DrawRotaGraph(Enemy[m_i].x, Enemy[m_i].y, 1.0, Enemy[m_i].muki,
LoadGraph("ship3.png"), [/color][/color]TRUE);
}
}

void Enemy_Finalize(){
}

   LoadGraph("ship3.png"),
と入力すれば表示されました。しかしここを
   Enemy[m_i].image
入力すれば画像が表示されるようにしたいです
。こうすることで、[m_i]番目の敵の(x,y)座標や画像を設定できます。
今のままでは何も表示されませんでした。おそらく格納されていないからだと思います。

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: 敵のデータの構造体と配列

#7

投稿記事 by h2so5 » 14年前

suimasen さんが書きました: Enemy[m_i].image
入力すれば画像が表示されるようにしたいです[/color]。こうすることで、[m_i]番目の敵の(x,y)座標や画像を設定できます。
今のままでは何も表示されませんでした。おそらく格納されていないからだと思います。
画像が表示されないからと言って格納されていないと考えるのは早とちりです。
格納されていないと思うなら、本当に ship3_image と Enemy[m_i].image の数値が異なっているか確かめてみてください。

一応種明かしをしておくと、
DxLib_init の前に LoadGraph関数を実行すると読み込みに失敗するため、画像は表示されません。

non
記事: 1097
登録日時: 15年前

Re: 敵のデータの構造体と配列

#8

投稿記事 by non » 14年前

グローバルの初期化に実行しないとわからない値を入れることに問題があります。
non

suimasen

Re: 敵のデータの構造体と配列

#9

投稿記事 by suimasen » 14年前

>>h2so5 さん
>>nonさん

なるほど、自分では気づけない問題点でした。
助けてくれて、ありがとうございます。もっと勉強してきます。

お世話になりました。
また何かあったら助けて頂けたら幸いです。

閉鎖

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