無題

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

無題

#1

投稿記事 by ひよこ » 16年前

こんにちはひよこです。
今、音ゲームを作っているのですがデバックでおかしなところが三つあるのですが

一つ目 csvファイルのデータ通りにいかない(実行してみると、秒数が違うのに弾が全部一緒に出てくる)
二つ目 kndの値がおかしく、配列のエラーになってしまう。
三つ目 Zキーを押したときだけ左上に矢印が出てくる(仕様じゃないです。

どうすればいいのかわかりません。どうすればいいでしょうか?

ひよこ

音ゲームについて

#2

投稿記事 by ひよこ » 16年前

すみません、題名入れ忘れました。
「音ゲームについて」です。

pooka

Re:音ゲームについて

#3

投稿記事 by pooka » 16年前

ざっと見ただけなので違うかも知れませんが気になった点を・・・(今の問題と関係ないかも知れませんが)
BULLET_MAXは500なのにbullet[100]となっていて、
bullet.cppなどを見るとbulletの要素数を超えてアクセスしてしまっているようにみえます。
あとbullet_enter関数の
>bullet.x=bullet[t].x;
などは、どちらかがbullet_orderだったりしませんか?

ひよこ

Re:音ゲームについて

#4

投稿記事 by ひよこ » 16年前

pookaさん
>>左上の矢印は消えたました。
なぜか一番左側がなぜか二つくっついていて
bullet_graph()のなかでDrawGraph(bullet.x,bullet.y,img_yajirusi[bullet.cnt],TRUE);
としたら他の矢印が左以外が消えて
bullet_act()のなかでbullet.y+=bullet.spd;とファイルから読み込んだスピードにしたら
左側の二つくっついていたのが左上に取り残されてあとひとつが落ちてきました。
csvファイルをひらいたまま実行すると
左上に描画されていました。

pooka

Re:音ゲームについて

#5

投稿記事 by pooka » 16年前

>左上の矢印は消えたました。
ということなのですが
>Zキーを押したときだけ左上に矢印が出てくる
が解決したということでよろしいでしょうか?

他の問題点についてはどうなりましたか?

ひよこ

Re:音ゲームについて

#6

投稿記事 by ひよこ » 16年前

pookaさん 左上の矢印は消えました。 ということなのですが
Zキーを押したときだけ左上に矢印が出てくる が解決したということでよろしいでしょうか?

>>cntと同じ時間に出るように(ちゃんと反応しました)なりました、ありがとうございます。

>>うえのような変更したら
>>左上に実行時から矢印が出ていてZキーを押しても出てくるかわからないのです。
>>knd通りに矢印が出ません。

pooka

Re:音ゲームについて

#7

投稿記事 by pooka » 16年前

>knd通りに矢印が出ません。
矢印ひだり.bmp、矢印ひだり1.bmpなどの違いが画像がないのでわかりませんが、
bullet_graph関数の
>DrawGraph(bullet.x,bullet.y,img_yajirusi[4/*bullet.cnt*[/url],TRUE);

DrawGraph(bullet.x,bullet.y,img_yajirusi[bullet.knd+4],TRUE);
にすればknd通りに表示されると思います。

ひよこ

Re:音ゲームについて

#8

投稿記事 by ひよこ » 16年前

DrawGraph(bullet.x,bullet.y,img_yajirusi[bullet.cnt+4],TRUE);
とやってみましたが
矢印の色が変わるだけで左以外が出ません。

管理人さんの画像もまじってますが画像を添付しておきます。

ひよこ

Re:音ゲームについて

#9

投稿記事 by ひよこ » 16年前

というかこちらと言ってるとおりの状況になりますでしょうか?

pooka

Re:音ゲームについて

#10

投稿記事 by pooka » 16年前

ようやく
>一番左側がなぜか二つくっついていて
の意味がわかりました。

添付したソースは私の環境だときちんと表示されています。(意図した通りかはわかりませんが)

以下変更した関数
load_gakufu
bullet_enter
bullet_graph
ini
あとGV.h

ini関数のcountの値を1に変更したのでcsvファイルのcntも適当な数字に変更する必要があります。

ひよこ

Re:音ゲームについて

#11

投稿記事 by ひよこ » 16年前

動きましたが、具体的にどこが悪かったのでしょうか?

pooka

Re:音ゲームについて

#12

投稿記事 by pooka » 16年前

bullet_orderという構造体の配列を0で初期化しているとして、
countが0だとbullet_enter関数のif(bullet_order[t].cnt==count)の条件を
tの値にかかわらず満たすことになり、flagの値が1になって描画されているようです。
(0で初期化してあるので、xが0の位置で描画されています)

伝わるかな・・・^^;

ひよこ

Re:音ゲームについて

#13

投稿記事 by ひよこ » 16年前

かんたんに構造体の配列を0で初期化すると
構造体の中身はすべて0になるということですか?

pooka

Re:音ゲームについて

#14

投稿記事 by pooka » 16年前

簡単にとはどういうことかわかりませんが、
memset(bullet_order,0,sizeof(bullet_order_t)*BULLET_ORDER_MAX);
としているので0になると思います。

ひよこ

Re:音ゲームについて

#15

投稿記事 by ひよこ » 16年前

そうなんですか。pookaさん長い間ありがとうございました。

Tatu

Re:音ゲームについて

#16

投稿記事 by Tatu » 16年前

pookaさんによるソースの変更と同じ内容かとおもいますが、
私が見て気になったことを書きます。

csvファイルについて
登録カウントはすべて0より大きくしてください。
理由はini.cppのところで書きます。

x座標とy座標を読み込ませる意味はあるのでしょうか?
なぜなら、x座標は矢印の向きで決めることができ、
y座標は矢印の向きにかかわらず一定のはずだからです。

bullet.cppについて
bullet.x=bullet[t].x;などと書かれている部分を
bullet.x=bullet_order[t].x;のようになおしてください。
登録時に代入するのはcsvファイルから読み込んで
bullet_orderに格納したデータだからです。
初期化されたbulletの情報はすべて0なので意味がありません。

graph.cppおよび画像について
背景の矢印は押されている、押されていないにかかわらず、
DrawRotaGraphF関数で描画したほうが扱いやすいのではないでしょうか?

上から下りてくる矢印の画像はimg_yajirusi[4+bullet.knd]です。
矢印のカウントによって画像を変えるわけでないのならば、
bullet.cntは無関係です。

矢印たて.bmpは矢印うえ.bmpとしたほうがわかりやすいと思います。

色のついた矢印の色が違っているのが、きになります。
(赤・黄・緑・青のようなものなら、きにしませんが)

ini.cppについて
countが1から始まるようにしてください。
0からだった場合、楽譜読み込み関数(load_gakufu)で、
変更されなかったbullet_orderの情報の全てが0なので、
大量の(重なっているため一つに見える)矢印が、
左上に表示されます。
さっき書いた登録カウントを0より大きくする
というのは、このようにすると、
0だった場合、登録されないようになるからです。

load.cppについて
load_gakufu関数で読み込んだデータはbullet_order構造体に
記録します。そのため
case 0: bullet[n].cnt=atoi(inputc);breakなどと書かれているところを
case 0: bullet_order[n].cnt=atoi(inputc);breakのように直してください。

main.cppについて
コードを見る限り、4つの矢印のうちどれか一つしか反応しないように
なっていますが、同時に2つ以上の矢印を押すことはないのでしょうか?

なぜ矢印に対応するキーが左・上・下・右ではなく、
Z・X・下・右になっているのでしょうか?

define.hについて
大量の矢印(bullet)が同時に出てくるとは思えないので、
BULLET_MAXの値を減らしてもよいのではないでしょうか?

function.hについて
どの関数がどのファイルに書かれているのかということが
わかるようにしたほうがよいのではないでしょうか?

GV.hについて
GLOBAL bullet_t bullet[100]と書かれていますが、
GLOBAL bullet_t bullet[BULLET_MAX]と書きなおしてください。

struct.hについて
bullet_order構造体の移動スピードを表す変数が
spdではなくspになっています。

ひよこ

Re:音ゲームについて

#17

投稿記事 by ひよこ » 16年前

Tatuさん >>ご指摘ありがとうございます。

main.cppについて
コードを見る限り、4つの矢印のうちどれか一つしか反応しないように
なっていますが、同時に2つ以上の矢印を押すことはないのでしょうか?

なぜ矢印に対応するキーが左・上・下・右ではなく、
Z・X・下・右になっているのでしょうか?

>>一つしか反応しないのは未だに開発途中という意味で
>>どうすればいいか考えています。
>>キーの割り当てもまだ考え中です。

define.hについて
大量の矢印(bullet)が同時に出てくるとは思えないので、
BULLET_MAXの値を減らしてもよいのではないでしょうか?

>>さすがに500個も画面には出しませんね。

function.hについて
どの関数がどのファイルに書かれているのかということが
わかるようにしたほうがよいのではないでしょうか?

>>たしかにわかりやすいほうがいいですね。

struct.hについて
bullet_order構造体の移動スピードを表す変数が
spdではなくspになっています。

>>さっき気づいてspdにしました。

閉鎖

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