ページ 11

26節までいったけど。あれ?背景消えたorz

Posted: 2010年11月20日(土) 16:20
by マグロ丼
お世話になっております。
なんとか26節まで進むことができました!
しかし26節のコードをぶちこみ、自分で考えながら玉をどう発射したらいいか考えた結果……
背景が消えるという事態にorz

それに移動するキャラクターの位置から弾を発射したいのですが、
発射位置がキャラクターの初期位置から動いてくれないんです。
横に飛ばすことにはなんとか成功したんですが……orz
コード自体は問題なくデバッグできるのでどの数値を直せばいいか教えてくださると幸いです。
よろしくおねがいします!

無題

Posted: 2010年11月20日(土) 16:26
by マグロ丼
キャラクターから発射することには成功しました!

しかし相変わらず背景が表示されてくれません。
あと弾を無限に撃ちたいのですがどうすればいいのでしょう。
ご教示のほど、よろしくおねがいします。

Re:無題

Posted: 2010年11月20日(土) 16:50
by 迷彩吹雪
龍神録の設計をよく知らないのですが、メインループの中にもう一つ無限ループがありますね。
while(1){
とある部分です。
これが何の処理なのかはわかりませんが、このループの冒頭でClearDrawScreen()を呼んでいるため先に描画した背景が消去されているようです。
なのでこのClearDrawScreen()をコメントアウトしてみてはどうでしょうか。

余談ですが、分割でない画像は
image2 = LoadGraph("tama.png");
で読み込みます。

Re:無題

Posted: 2010年11月20日(土) 16:50
by ゆーずぃ
while(1){
    ClearDrawScreen();                   //裏画面のデータを全て削除
    GetHitKeyStateAll( Key ) ;           // すべてのキーの状態を得る
 
    if( ProcessMessage() == -1 ) break ; //異常がおきたら終了
これが諸悪の根源です。1から10まで余計なことしかしていません。何でだか分りますか?
あと、void main(){ から始まっていますが、これで普通に動くことが凄いと思いますw

Re:無題

Posted: 2010年11月20日(土) 16:52
by wing
while文が2つあるからでしょう。

ほかにもおかしいところがありますが、
13b. ゲームプログラムの超基本骨格 を参考にすると
いいと思います。

Re:無題

Posted: 2010年11月20日(土) 16:53
by ゆーずぃ
あぁ、Main()っていう自作関数なのかw失礼しましたm(__)mw

Re:無題

Posted: 2010年11月20日(土) 16:56
by wing
かぶってしまいました。失礼。

Re:無題

Posted: 2010年11月20日(土) 17:02
by マグロ丼
>>迷彩吹雪さん

悩んでたところが一気に解決しました!
(特にimage2 = LoadGraph("tama.png");
は表示されず悶々と悩んでました・・・orz
コピペしたのをそのまま使用してたのが悪かったです><;
ありがとうございました!

>>wingさん

一つの関数の中にwhile二つあるってここまで害悪だとは認識していませんでした。
13ですか…参考にしてみます。ありがとうございました!

>>ゆーずぃさん

いやまったくそのとおりでしたorz
main()は自作関数でした。これからそういうことも併記しといたほうがいいですかね……
協力いただき、ありがとうございました!


さてあとは∞に弾が撃てるようになれば解決です。
奮闘していますが、できればご教示願います><
よろしくおねがいします!

Re:無題

Posted: 2010年11月20日(土) 17:09
by 迷彩吹雪
struct shot tama[10];
ここで弾の最大値が10個に限定されているような気がします。
(そもそもループが回るたびに作り直されている?)

配列数を無限に近い値(100でも充分か?)にすれば弾数は増やせると思います。
ただ、使わないかもしれない弾をメモリ上に置いておくのは非効率的でしょうが。

Re:無題

Posted: 2010年11月20日(土) 17:21
by マグロ丼
>>迷彩吹雪さん

おお! そういうことでしたか。
おかげで疑問は氷解しました!
ありがとうございました!