敵の画像
Re:敵の画像
敵の画像の種類を増やす(して利用する)のであれば、
その「敵の弾の質問」の回答がそのまま今回の質問の回答になっています。
変数が違うだけなので、その変数名を教えて欲しいということでしょうか?
厳しいことを言うかもしれませんが、これまでのsitumonさんの質問は、
理解せずに答えだけを聞こうとしているような印象を受けてしまいます。
実際、ほぼ全ての質問に、参考ページやサイトがリンクされている回答がありますが、
situmonさんはそちらのリンク先を読まれているのでしょうか?
一つ一つしっかり理解していった方が、結果的に早く作品ができるようになると思いますよ。
(質問の回答待ちをしなくてもよくなるので)
その「敵の弾の質問」の回答がそのまま今回の質問の回答になっています。
変数が違うだけなので、その変数名を教えて欲しいということでしょうか?
厳しいことを言うかもしれませんが、これまでのsitumonさんの質問は、
理解せずに答えだけを聞こうとしているような印象を受けてしまいます。
実際、ほぼ全ての質問に、参考ページやサイトがリンクされている回答がありますが、
situmonさんはそちらのリンク先を読まれているのでしょうか?
一つ一つしっかり理解していった方が、結果的に早く作品ができるようになると思いますよ。
(質問の回答待ちをしなくてもよくなるので)
Re:敵の画像
厳しくはありません。確かにそのとおりです。ありがとうございます。
今回、
・略・
typedef struct{
double x,y,size,img;
int flag,counter,hp,pattern,range;
} BODY_enemy_t;
BODY_enemy_t enemy[ENEMY_TOTAL_NUM];//[100]
と
・略・
typedef struct{
double x,y,size,img;
int flag,counter,hp,pattern,range;
} BODY_enemy_t;
extern BODY_enemy_t enemy[100];
と
・略・
enemy.pattern=6; //どういう軌道を描くか
enemy.flag=1; //出現フラグを立てる
enemy.counter=0;//出現して何カウント目か測るカウンター初期化
enemy.size=1.0f;//敵の大きさ
enemy.range=(int)((MONSTER1_X_SIZE-60)/2.0f*enemy.size); //※画像サイズから余白の部分60ピクセルを引く
enemy.hp=100;
enemy.img=6;
enemy.x=210.0; //xの初期座標
enemy.y=-10.0; //yの初期座標
とimgを加えて、
img_sound_load.cppに
img_enemy1[6] = LoadGraph("Sh/img/mons/mons2_0.png");
をかけば表示されるかと試したら、できなかったのです。
今回、
・略・
typedef struct{
double x,y,size,img;
int flag,counter,hp,pattern,range;
} BODY_enemy_t;
BODY_enemy_t enemy[ENEMY_TOTAL_NUM];//[100]
と
・略・
typedef struct{
double x,y,size,img;
int flag,counter,hp,pattern,range;
} BODY_enemy_t;
extern BODY_enemy_t enemy[100];
と
・略・
enemy.pattern=6; //どういう軌道を描くか
enemy.flag=1; //出現フラグを立てる
enemy.counter=0;//出現して何カウント目か測るカウンター初期化
enemy.size=1.0f;//敵の大きさ
enemy.range=(int)((MONSTER1_X_SIZE-60)/2.0f*enemy.size); //※画像サイズから余白の部分60ピクセルを引く
enemy.hp=100;
enemy.img=6;
enemy.x=210.0; //xの初期座標
enemy.y=-10.0; //yの初期座標
とimgを加えて、
img_sound_load.cppに
img_enemy1[6] = LoadGraph("Sh/img/mons/mons2_0.png");
をかけば表示されるかと試したら、できなかったのです。
Re:敵の画像
そこは対して重要じゃありません^^;
重要な部分は2次元配列を使う事です。
現在
int img_enemy1[5];
と宣言されていると思います。
これはimg_enemy1[0]~img_enemy1[4]に的画像が連番で入っているというのは分かりますか。
(0~4を繰り返して表示しているので、敵が動いてるように見える分けです)
となれば、これ以上にimg_enemy1[5]と増やして画像を読み込んでも種類は増やせないというのは分かりますよね。
ここで重要なのが2次元配列です。
int img_enemy1[2][5];
これが2次元配列なのですが、C言語の基礎なので分からなくても調べれば簡単に分かります。
なので[2]の各値に敵の画像を入れてあげれば、とりあえず大丈夫です。
しかし、こうなると敵の画像を表示してる部分に問題がでてくるので、そちらも書き換えが必要になります。
重要な部分は2次元配列を使う事です。
現在
int img_enemy1[5];
と宣言されていると思います。
これはimg_enemy1[0]~img_enemy1[4]に的画像が連番で入っているというのは分かりますか。
(0~4を繰り返して表示しているので、敵が動いてるように見える分けです)
となれば、これ以上にimg_enemy1[5]と増やして画像を読み込んでも種類は増やせないというのは分かりますよね。
ここで重要なのが2次元配列です。
int img_enemy1[2][5];
これが2次元配列なのですが、C言語の基礎なので分からなくても調べれば簡単に分かります。
なので[2]の各値に敵の画像を入れてあげれば、とりあえず大丈夫です。
しかし、こうなると敵の画像を表示してる部分に問題がでてくるので、そちらも書き換えが必要になります。
Re:敵の画像
> 難しそうですが検索してがんばります!
> どうすればいいのでしょう。
いくらなんでもあきらめるの早すぎ(^^;
http://www.geocities.jp/ky_webid/c/025.html
このサイト見られたかと思いますが、練習問題してみましたか?
> どうすればいいのでしょう。
いくらなんでもあきらめるの早すぎ(^^;
http://www.geocities.jp/ky_webid/c/025.html
このサイト見られたかと思いますが、練習問題してみましたか?
Re:敵の画像
まず、[2]にアクセスしようとする事が間違いです。
int img_enemy1[5];
と宣言したら、img_enemy1[0]~img_enemy1[4]の範囲しか使用できません。
それと同じで
int img_enemy1[2][5];
と宣言したら、[2]は[0]~[1]までの範囲でしか使用できません。
よって[2]にアクセスすると不具合が起こります。(ポインタの概念が分かれば、どんな不具合が起こるか大体予想できるとおもいます。←は分からなくても、使用しちゃいけない事を知ってれば問題ないと思います)
ところで、エクセルというソフトを使ったことがありますか?
配列のイメージは、それです。

この図を見て下さい。
0~4には既に敵の画像が入っています。
なので今回問題になっている2次元配列を使い敵の種類を増やそうという考えです。
違う種類の敵の画像を入れたい場合この5~9に画像データを入れれば良いわけです。
-どのようにアクセスすればいいか。
img_enemy1[0][0]=20;
とすれば、現在0の値になってる場所が20にになります。
img_enemy1[1][2]=30;
とすれば、現在7の値になっている場所が30になります。
int img_enemy1[5];
と宣言したら、img_enemy1[0]~img_enemy1[4]の範囲しか使用できません。
それと同じで
int img_enemy1[2][5];
と宣言したら、[2]は[0]~[1]までの範囲でしか使用できません。
よって[2]にアクセスすると不具合が起こります。(ポインタの概念が分かれば、どんな不具合が起こるか大体予想できるとおもいます。←は分からなくても、使用しちゃいけない事を知ってれば問題ないと思います)
ところで、エクセルというソフトを使ったことがありますか?
配列のイメージは、それです。

この図を見て下さい。
0~4には既に敵の画像が入っています。
なので今回問題になっている2次元配列を使い敵の種類を増やそうという考えです。
違う種類の敵の画像を入れたい場合この5~9に画像データを入れれば良いわけです。
-どのようにアクセスすればいいか。
img_enemy1[0][0]=20;
とすれば、現在0の値になってる場所が20にになります。
img_enemy1[1][2]=30;
とすれば、現在7の値になっている場所が30になります。
Re:敵の画像
流れと逆行してしまいますが、強引に一次配列でやっていくことも出来ます。 でも二次元配列を学んでおいた方が絶対にいいので、あくまでも参考程度に・・・ img_enemy1 [0]~img_enemy1 [3]・・・敵1の画像 img_enemy1 [4]~img_enemy1 [7]・・・敵2の画像 img_enemy1 [8]~img_enemy1 [11]・・・敵3の画像 とした場合、各敵の画像は n~n +3 になってますよね。 そこで、 DrawGraph ( 320, 240, img_enemy1 [ n *4 +Anime ], TRUE );/* Anime は0~3が入るアニメーション用の変数 n は敵番号*/ と書くことで、敵の画像を増やすことが出来ます。 しかし今後の為にも、二次元配列を身に付ける事を諦めないで下さい。 では、流れをぶった切るKYですみませんでした。
Re:敵の画像
とりあえず
enemy.img=[1][0]←これじゃコンパイルも通らないと思いますが・・・・。
ちょっと話を戻して
まず
http://l.huu.cc/s/13.html
の
13. 敵の動作と判定。
を21行目までで良いので詳しく読んでみてください。
連番で敵が動く事が分かりましたか?
最後に
DrawRotaGraph( (int)enemy.x , (int)enemy.y , enemy.size , 0.0f , img_enemy1[enemy_img[counter%32/4]] , TRUE ) ;
と書いてありますよね。
DXライブラリ本家のリファレンスに書いてある通り、赤文字の位置が画像ハンドルになります。
なので今まで敵の画像は
img_enemy1[0]~img_enemy1[4]に入ってますよ、と言ってたわけです。
画像表示部分は現在
DrawRotaGraph( (int)enemy.x , (int)enemy.y , enemy.size , 0.0f , img_enemy1[enemy_img[counter%32/4]] , TRUE ) ;
と書いてありますよね。となってますので、これじゃ1種類の敵しか表示できなかったのです。
2次元配列を使うと
DrawRotaGraph( (int)enemy.x , (int)enemy.y , enemy.size , 0.0f , img_enemy1[enemy[i].img][enemy_img[counter%32/4]] , TRUE ) ;
に書変わります。
そうすると
enemy[i].img=0
の時に0に登録してた敵を表示する事になります。
enemy[i].img=1
とすれば1に登録してた敵を表示します。
enemy.img=[1][0]←これじゃコンパイルも通らないと思いますが・・・・。
ちょっと話を戻して
まず
http://l.huu.cc/s/13.html
の
13. 敵の動作と判定。
を21行目までで良いので詳しく読んでみてください。
連番で敵が動く事が分かりましたか?
最後に
DrawRotaGraph( (int)enemy.x , (int)enemy.y , enemy.size , 0.0f , img_enemy1[enemy_img[counter%32/4]] , TRUE ) ;
と書いてありますよね。
DXライブラリ本家のリファレンスに書いてある通り、赤文字の位置が画像ハンドルになります。
なので今まで敵の画像は
img_enemy1[0]~img_enemy1[4]に入ってますよ、と言ってたわけです。
画像表示部分は現在
DrawRotaGraph( (int)enemy.x , (int)enemy.y , enemy.size , 0.0f , img_enemy1[enemy_img[counter%32/4]] , TRUE ) ;
と書いてありますよね。となってますので、これじゃ1種類の敵しか表示できなかったのです。
2次元配列を使うと
DrawRotaGraph( (int)enemy.x , (int)enemy.y , enemy.size , 0.0f , img_enemy1[enemy[i].img][enemy_img[counter%32/4]] , TRUE ) ;
に書変わります。
そうすると
enemy[i].img=0
の時に0に登録してた敵を表示する事になります。
enemy[i].img=1
とすれば1に登録してた敵を表示します。
Re:敵の画像
エラーが起きました。
error C2108: 添字に整数でない型が使われました
とでました。
たぶんDrawRotaGraph( (int)enemy.x , (int)enemy.y , enemy.size , 0.0f , img_enemy1[enemy.img][enemy_img[counter%32/4]] , TRUE ) ;
に問題ありです。
あとimg_sound_load.cppにはどう書けばいいのでしょうか?
img_enemy1[0] = LoadGraph("Sh/img/mons/mons1_0.png");
img_enemy1[0] = LoadGraph("Sh/img/mons/mons1_1.png");
img_enemy1[0] = LoadGraph("Sh/img/mons/mons1_2.png");
img_enemy1[0] = LoadGraph("Sh/img/mons/mons1_3.png");
img_enemy1[0] = LoadGraph("Sh/img/mons/mons1_4.png");
img_enemy1[1] = LoadGraph("Sh/img/mons/mons2.png");
img_enemy1[1] = LoadGraph("Sh/img/mons/mons2.png");
img_enemy1[1] = LoadGraph("Sh/img/mons/mons2.png");
img_enemy1[1] = LoadGraph("Sh/img/mons/mons2.png");
img_enemy1[1] = LoadGraph("Sh/img/mons/mons2.png");
か img_enemy1[0] = LoadGraph("Sh/img/mons/mons1_0.png");
img_enemy1[0][1] = LoadGraph("Sh/img/mons/mons1_1.png");
img_enemy1[0][2] = LoadGraph("Sh/img/mons/mons1_2.png");
img_enemy1[0][3] = LoadGraph("Sh/img/mons/mons1_3.png");
img_enemy1[0][4] = LoadGraph("Sh/img/mons/mons1_4.png");
img_enemy1[1][0] = LoadGraph("Sh/img/mons/mons2.png");
img_enemy1[1][1] = LoadGraph("Sh/img/mons/mons2.png");
img_enemy1[1][2] = LoadGraph("Sh/img/mons/mons2.png");
img_enemy1[1][3] = LoadGraph("Sh/img/mons/mons2.png");
img_enemy1[1][4] = LoadGraph("Sh/img/mons/mons2.png");
か違うかどれですか?
error C2108: 添字に整数でない型が使われました
とでました。
たぶんDrawRotaGraph( (int)enemy.x , (int)enemy.y , enemy.size , 0.0f , img_enemy1[enemy.img][enemy_img[counter%32/4]] , TRUE ) ;
に問題ありです。
あとimg_sound_load.cppにはどう書けばいいのでしょうか?
img_enemy1[0] = LoadGraph("Sh/img/mons/mons1_0.png");
img_enemy1[0] = LoadGraph("Sh/img/mons/mons1_1.png");
img_enemy1[0] = LoadGraph("Sh/img/mons/mons1_2.png");
img_enemy1[0] = LoadGraph("Sh/img/mons/mons1_3.png");
img_enemy1[0] = LoadGraph("Sh/img/mons/mons1_4.png");
img_enemy1[1] = LoadGraph("Sh/img/mons/mons2.png");
img_enemy1[1] = LoadGraph("Sh/img/mons/mons2.png");
img_enemy1[1] = LoadGraph("Sh/img/mons/mons2.png");
img_enemy1[1] = LoadGraph("Sh/img/mons/mons2.png");
img_enemy1[1] = LoadGraph("Sh/img/mons/mons2.png");
か img_enemy1[0] = LoadGraph("Sh/img/mons/mons1_0.png");
img_enemy1[0][1] = LoadGraph("Sh/img/mons/mons1_1.png");
img_enemy1[0][2] = LoadGraph("Sh/img/mons/mons1_2.png");
img_enemy1[0][3] = LoadGraph("Sh/img/mons/mons1_3.png");
img_enemy1[0][4] = LoadGraph("Sh/img/mons/mons1_4.png");
img_enemy1[1][0] = LoadGraph("Sh/img/mons/mons2.png");
img_enemy1[1][1] = LoadGraph("Sh/img/mons/mons2.png");
img_enemy1[1][2] = LoadGraph("Sh/img/mons/mons2.png");
img_enemy1[1][3] = LoadGraph("Sh/img/mons/mons2.png");
img_enemy1[1][4] = LoadGraph("Sh/img/mons/mons2.png");
か違うかどれですか?
Re:敵の画像
arrayさんのおっしゃる通り、まずは基礎を固めたほうがいいかもしれませんね。
>error C2108: 添字に整数でない型が使われました
おそらく配列を勉強すればどこがいけないかすぐにわかると思います。(添字)
>あとimg_sound_load.cppにはどう書けばいいのでしょうか?
これも二次元配列の各要素に整数を代入するが分かればわかります。
詰まったらすぐ解決したいことはわかりますが
それでは基礎がない今はほぼすべてをこの掲示板できくことになります。
このままだとC言語の力はつきません
(自分なりで必死にやっている自分でもビギナーから抜け出せませんw)
ゆえに自分でプログラムが書けません。
http://www9.plala.or.jp/sgwr-t/
など、ググれば親切なC言語解説サイトはたくさん出てきます。
まずはここからではないでしょうか?
>error C2108: 添字に整数でない型が使われました
おそらく配列を勉強すればどこがいけないかすぐにわかると思います。(添字)
>あとimg_sound_load.cppにはどう書けばいいのでしょうか?
これも二次元配列の各要素に整数を代入するが分かればわかります。
詰まったらすぐ解決したいことはわかりますが
それでは基礎がない今はほぼすべてをこの掲示板できくことになります。
このままだとC言語の力はつきません
(自分なりで必死にやっている自分でもビギナーから抜け出せませんw)
ゆえに自分でプログラムが書けません。
http://www9.plala.or.jp/sgwr-t/
など、ググれば親切なC言語解説サイトはたくさん出てきます。
まずはここからではないでしょうか?
Re:無題
img_enemy1[0] = LoadGraph("Sh/img/mons/mons1_0.png");
img_enemy1[1] = LoadGraph("Sh/img/mons/mons1_1.png");
img_enemy1[2] = LoadGraph("Sh/img/mons/mons1_2.png");
img_enemy1[3] = LoadGraph("Sh/img/mons/mons1_3.png");
img_enemy1[4] = LoadGraph("Sh/img/mons/mons1_4.png");
img_enemy1[5] = LoadGraph("Sh/img/mons/mons2.png");
img_enemy1[6] = LoadGraph("Sh/img/mons/mons2.png");
img_enemy1[7] = LoadGraph("Sh/img/mons/mons2.png");
img_enemy1[8] = LoadGraph("Sh/img/mons/mons2.png");
img_enemy1[9] = LoadGraph("Sh/img/mons/mons2.png");
img_enemy1[10] = LoadGraph("Sh/img/mons/mons3.png");
img_enemy1[11] = LoadGraph("Sh/img/mons/mons3.png");
img_enemy1[12] = LoadGraph("Sh/img/mons/mons3.png");
img_enemy1[13] = LoadGraph("Sh/img/mons/mons3.png");
img_enemy1[14] = LoadGraph("Sh/img/mons/mons3.png");
と書いて、
int enemy_img[2][8]={{0,1,2,3,4,3,2,1},
{5,6,7,8,9,8,7,6},
{10,11,12,13,14,13,12,11}};
for(i=0;i<100;i++){
if(enemy.flag==1){
enemy.counter++;
と書いたのですが、
error C2078: 初期化子の数が多すぎます。とでてしまいました。
img_enemy1[1] = LoadGraph("Sh/img/mons/mons1_1.png");
img_enemy1[2] = LoadGraph("Sh/img/mons/mons1_2.png");
img_enemy1[3] = LoadGraph("Sh/img/mons/mons1_3.png");
img_enemy1[4] = LoadGraph("Sh/img/mons/mons1_4.png");
img_enemy1[5] = LoadGraph("Sh/img/mons/mons2.png");
img_enemy1[6] = LoadGraph("Sh/img/mons/mons2.png");
img_enemy1[7] = LoadGraph("Sh/img/mons/mons2.png");
img_enemy1[8] = LoadGraph("Sh/img/mons/mons2.png");
img_enemy1[9] = LoadGraph("Sh/img/mons/mons2.png");
img_enemy1[10] = LoadGraph("Sh/img/mons/mons3.png");
img_enemy1[11] = LoadGraph("Sh/img/mons/mons3.png");
img_enemy1[12] = LoadGraph("Sh/img/mons/mons3.png");
img_enemy1[13] = LoadGraph("Sh/img/mons/mons3.png");
img_enemy1[14] = LoadGraph("Sh/img/mons/mons3.png");
と書いて、
int enemy_img[2][8]={{0,1,2,3,4,3,2,1},
{5,6,7,8,9,8,7,6},
{10,11,12,13,14,13,12,11}};
for(i=0;i<100;i++){
if(enemy.flag==1){
enemy.counter++;
と書いたのですが、
error C2078: 初期化子の数が多すぎます。とでてしまいました。
Re:無題
> 同じ画像を違う配列要素に入れているのは何故ですか?
あとあとmons2_0,mons2_1とアニメーションになるよう増やしていくつもりだからです。
>後、8個の入れ物を2つ作ると宣言しているのに3つも入れているので多すぎると思われます。
そうか!とわかりました。ありがとうございます。
あとやはりDrawRotaGraph( (int)enemy.x , (int)enemy.y , enemy.size , 0.0f , img_enemy1[enemy.img][enemy_img[counter%32/4]] , TRUE ) ;
の部分で添字に整数でない型が使われました。とでてきます。
あとあとmons2_0,mons2_1とアニメーションになるよう増やしていくつもりだからです。
>後、8個の入れ物を2つ作ると宣言しているのに3つも入れているので多すぎると思われます。
そうか!とわかりました。ありがとうございます。
あとやはりDrawRotaGraph( (int)enemy.x , (int)enemy.y , enemy.size , 0.0f , img_enemy1[enemy.img][enemy_img[counter%32/4]] , TRUE ) ;
の部分で添字に整数でない型が使われました。とでてきます。
Re:無題
ちなみに、
> さっそく1を消しました!
と言われてますが、なぜ消しましたか?
できれば今エラーになっている+αの所はsitumonさんに自力で頑張ってほしかったのですが。
ちょっと難しいみたいなので、私の言った事は忘れてもらった方が良いかもしれません。
(そんなつもりは無かったのですが)私が遠まわしにアドバイスしたせいか
かなり間違いだらけのプログラムになってますよ。
今後プログラムを書くときに注意してもらいたいのが、
・宣言してない変数は使わない事。
・同じ変数名は使わない事。
・変数の書き込み時・呼び出し時は宣言に合わせる。
どんな書き方をしたらエラーがでるか知っていれば、プログラムが楽しくなりますよ。
> さっそく1を消しました!
と言われてますが、なぜ消しましたか?
できれば今エラーになっている+αの所はsitumonさんに自力で頑張ってほしかったのですが。
ちょっと難しいみたいなので、私の言った事は忘れてもらった方が良いかもしれません。
(そんなつもりは無かったのですが)私が遠まわしにアドバイスしたせいか
かなり間違いだらけのプログラムになってますよ。
今後プログラムを書くときに注意してもらいたいのが、
・宣言してない変数は使わない事。
・同じ変数名は使わない事。
・変数の書き込み時・呼び出し時は宣言に合わせる。
どんな書き方をしたらエラーがでるか知っていれば、プログラムが楽しくなりますよ。
Re:無題
解決の見込みがないのでとりあえず回答を書いておきます。今回、実際にエラーを体験し自分なりに色々頑張ってくれたと信じてます。
できるだけ自分の書き方で何がいけなかったのか検討してみてください。
これで多分大丈夫だと思います。
できるだけ自分の書き方で何がいけなかったのか検討してみてください。
--- GlobalVariable.h --- int img_enemy1[2][5]; //2種類以上の敵を登録しない事 typedef struct{ double x,y,size; int flag,counter,hp,pattern,range,img; } BODY_enemy_t; --- ExternGV.h --- extern int img_enemy1[2][5]; typedef struct{ double x,y,size; int flag,counter,hp,pattern,range,img; } BODY_enemy_t; --- enemy.cpp --- void EnemyCalcDisp()内 case 2750: enemy.pattern=2; //どういう軌道を描くか enemy.flag=1; //出現フラグを立てる enemy.counter=0;//出現して何カウント目か測るカウンター初期化 enemy.size=0.5f;//敵の大きさ enemy.range=(int)((MONSTER1_X_SIZE-60)/2.0f*enemy.size); //※画像サイズから余白の部分60ピクセルを引く enemy.x=210.0; //xの初期座標 enemy.y=-10.0; //yの初期座標 enemy.img=0; //敵の種類 break; DrawRotaGraph( (int)enemy.x , (int)enemy[i].y , enemy[i].size , 0.0f , img_enemy1[enemy[i].img][enemy_img[counter%32/4]] , TRUE ) ; --- img_sound_load.cpp --- void img_sound_load(){ //画像ハンドル取得 //1種類目の敵を登録 img_enemy1[0][0] = LoadGraph("Sh/img/mons/mons1_0.png"); img_enemy1[0][1] = LoadGraph("Sh/img/mons/mons1_1.png"); img_enemy1[0][2] = LoadGraph("Sh/img/mons/mons1_2.png"); img_enemy1[0][3] = LoadGraph("Sh/img/mons/mons1_3.png"); img_enemy1[0][4] = LoadGraph("Sh/img/mons/mons1_4.png"); //2種類目の敵を登録 img_enemy1[1][0] = LoadGraph("Sh/img/mons/mons2_0.png"); //青色は敵の画像ファイル img_enemy1[1][1] = LoadGraph("Sh/img/mons/mons2_1.png"); img_enemy1[1][2] = LoadGraph("Sh/img/mons/mons2_2.png"); img_enemy1[1][3] = LoadGraph("Sh/img/mons/mons2_3.png"); img_enemy1[1][4] = LoadGraph("Sh/img/mons/mons2_4.png"); }
これで多分大丈夫だと思います。
Re:無題
C言語にSingle型なんて無いでしょう^^;
VisualBasicとかの話ではないですか?
最初のうちはint型、double型、char型だけ覚えておけばOKだと思います。
後DXライブラリはfloatを引数にしているので、その辺も覚えておくといいかもしれません。
配列要素を示す場合は基本的にint型で行って下さい。
小数点を含む実数では指定できません。
後img_enemyとenemy_imgって私がつけた変数名でしたっけ?
なんという解りにくい変数名・・orz
是非わかりやすい変数名に変更して下さい。
あと、どうも階段を使わずに何とか誰かの助けで二階に上がろうとしている感じが否めません。
C言語の基礎がしっかりしていないと、製作途中何度も躓くと思います。
躓くたびにここで聞いていたのではキリが無いと思いますし、質問者さんのためにもならないと思います。
一度C言語の参考書を一冊読破するなり、参考ウェブサイトをみながら自分でCの基礎を固めるなりして
しっかりC言語を勉強した方がいいかもしれません。
ただ参考書を読むだけじゃなく、自分でガリガリとプログラムを書いてはコンパイルして下さい。
参考書にはコンパイルエラーからエラーを見つける方法なんてあまり書いてないと思います。
>添字に整数でない型が使われました。
自分でプログラムを書いているとこんなエラーが出たらどこが悪いのかパッとわかるようになります。
それにダブルクリックしたらそのエラーが出た行に飛びますから
少々あやふやな状態でも原因は突き止められるかと思います。
うまく行かなかった時に何が悪いのか突き止める力がつくと、製作がずっと効率化しますよ。
VisualBasicとかの話ではないですか?
最初のうちはint型、double型、char型だけ覚えておけばOKだと思います。
後DXライブラリはfloatを引数にしているので、その辺も覚えておくといいかもしれません。
配列要素を示す場合は基本的にint型で行って下さい。
小数点を含む実数では指定できません。
後img_enemyとenemy_imgって私がつけた変数名でしたっけ?
なんという解りにくい変数名・・orz
是非わかりやすい変数名に変更して下さい。
あと、どうも階段を使わずに何とか誰かの助けで二階に上がろうとしている感じが否めません。
C言語の基礎がしっかりしていないと、製作途中何度も躓くと思います。
躓くたびにここで聞いていたのではキリが無いと思いますし、質問者さんのためにもならないと思います。
一度C言語の参考書を一冊読破するなり、参考ウェブサイトをみながら自分でCの基礎を固めるなりして
しっかりC言語を勉強した方がいいかもしれません。
ただ参考書を読むだけじゃなく、自分でガリガリとプログラムを書いてはコンパイルして下さい。
参考書にはコンパイルエラーからエラーを見つける方法なんてあまり書いてないと思います。
>添字に整数でない型が使われました。
自分でプログラムを書いているとこんなエラーが出たらどこが悪いのかパッとわかるようになります。
それにダブルクリックしたらそのエラーが出た行に飛びますから
少々あやふやな状態でも原因は突き止められるかと思います。
うまく行かなかった時に何が悪いのか突き止める力がつくと、製作がずっと効率化しますよ。
Re:無題
>あとやはりDrawRotaGraph( (int)enemy.x , (int)enemy.y , enemy.size , 0.0f , img_enemy1[enemy.img][enemy_img[counter%32/4]] , TRUE ) ;
の部分で添字に整数でない型が使われました。とでてきます。
とのことですが、配列をお勉強されたということなので、
2次元配列のイメージは掴んでいることを前提に話します。
配列の添字はsitumonさんもおっしゃるとおり、
[0]
[1]
[2]
[3]
[4]
というように「整数」で数えていきます。
配列に[1.0]とか[1.5]というのはありえません。
これは言われなくても分かってるよ!!馬鹿にすんな!といわれてしまいそうですが、結構大事なことです。
変数の値に1を設定しても、その変数の型が実数型であるdouble型の場合内部的には1.0となっているんです。
自分の頭の中ではスルーしてしまいがちなところで、ちょっと慣れてきた頃にやる失敗例のひとつとして典型的なものではないでしょうか?
また、エラーメッセージがせっかく日本語で表示されているのですから、落ち着いてよく読んでみましょう。
「添字に整数でない型が使われました。」
ということですから、エラーのある文の添字に使用している変数や定数の中で、整数型(int型)でないものが怪しいと見当は付きますよね。
で改めて文を眺めてみると・・・
添字に使用されている変数(定数)は、i、enemy.img、counter%32/4が挙げられます。
で、トピックの最初のほうで宣言されていたところを見返せば・・・
enemy.imgはdoubleで宣言されているのは一目瞭然。
じゃあ、なに型で宣言すれば良いのか?って話ですが、エラーメッセージのとおり、
「整数型」のintで宣言してあげれば問題ないでしょう。
が、実際にはそのimgという変数がどんな意味を持っていて、その値の範囲はどれくらいを想定しているのかで使用する変数を決めるべきです。
・敵の画像を番号で管理するために
・敵の種類はintで十分収まる
(・っていうか添字として使うなら普通int型でしょ)
ならintですね。
しかし、arrayさん、管理人(キュー)さん、相変わらず優しいね^^
の部分で添字に整数でない型が使われました。とでてきます。
とのことですが、配列をお勉強されたということなので、
2次元配列のイメージは掴んでいることを前提に話します。
配列の添字はsitumonさんもおっしゃるとおり、
[0]
[1]
[2]
[3]
[4]
というように「整数」で数えていきます。
配列に[1.0]とか[1.5]というのはありえません。
これは言われなくても分かってるよ!!馬鹿にすんな!といわれてしまいそうですが、結構大事なことです。
変数の値に1を設定しても、その変数の型が実数型であるdouble型の場合内部的には1.0となっているんです。
自分の頭の中ではスルーしてしまいがちなところで、ちょっと慣れてきた頃にやる失敗例のひとつとして典型的なものではないでしょうか?
また、エラーメッセージがせっかく日本語で表示されているのですから、落ち着いてよく読んでみましょう。
「添字に整数でない型が使われました。」
ということですから、エラーのある文の添字に使用している変数や定数の中で、整数型(int型)でないものが怪しいと見当は付きますよね。
で改めて文を眺めてみると・・・
添字に使用されている変数(定数)は、i、enemy.img、counter%32/4が挙げられます。
で、トピックの最初のほうで宣言されていたところを見返せば・・・
enemy.imgはdoubleで宣言されているのは一目瞭然。
じゃあ、なに型で宣言すれば良いのか?って話ですが、エラーメッセージのとおり、
「整数型」のintで宣言してあげれば問題ないでしょう。
が、実際にはそのimgという変数がどんな意味を持っていて、その値の範囲はどれくらいを想定しているのかで使用する変数を決めるべきです。
・敵の画像を番号で管理するために
・敵の種類はintで十分収まる
(・っていうか添字として使うなら普通int型でしょ)
ならintですね。
しかし、arrayさん、管理人(キュー)さん、相変わらず優しいね^^
Re:無題
int enemy_img[2][5]←二次元配列になっています。
詳しくは、知りませんが、呼び出し時に配列で呼び出してるので、2次元配列の先頭アドレスを受け渡す形になり、ポインタと勘違いされているんだと思います。(多分)
記事を読み返してもらえれば分かると思いますが、私は、img_enemy1を2次元配列にするとしか言ってません。
確かに見た目にてますけど、enemy_imgを2次元配列にしちゃいけませんよ。(いけなくはないですが、また書き換えないといけません)
まあ、残念なのがimg_enemy1を2次元配列と何度も言ってるのに最後まで、2次元配列を使ってくれなかったことです。
そして違うところに2次元配列を使っていたことです。
詳しくは、知りませんが、呼び出し時に配列で呼び出してるので、2次元配列の先頭アドレスを受け渡す形になり、ポインタと勘違いされているんだと思います。(多分)
記事を読み返してもらえれば分かると思いますが、私は、img_enemy1を2次元配列にするとしか言ってません。
確かに見た目にてますけど、enemy_imgを2次元配列にしちゃいけませんよ。(いけなくはないですが、また書き換えないといけません)
まあ、残念なのがimg_enemy1を2次元配列と何度も言ってるのに最後まで、2次元配列を使ってくれなかったことです。
そして違うところに2次元配列を使っていたことです。