トップページ > 記事閲覧
起動してないけれど起動扱い
名前:Hazardix_T 日時: 2014/02/05 15:25

主人公キャラと敵キャラを 別々の描写速度で同時に待機アニメーションを表示させるプログラムを組もうとしてたのですが… { ChangeWindowMode(TRUE); int GHandle[15]; int i; int Enemy[15]; int EnemyFlame; int EnemyPage; EnemyFlame=WaitTimer(40); if(DxLib_Init()==-1) { return -1; } LoadDivGraph("D:/source_1/待機.png",7,7,1,320,240,GHandle); LoadDivGraph("D:/source_1/ふるえるなにか.png",15,8,7,320,240,Enemy); i=0; EnemyFlame=0; while(CheckHitKeyAll()==0) { DrawGraph(320,120,GHandle[i],TRUE); i++; if(i==7)i=0; WaitTimer(80); DrawGraph(0,120,Enemy[EnemyPage],TRUE); EnemyPage++; if(EnemyPage==15)EnemyPage=0; EnemyFlame; if(ProcessMessage()==-1) { break; } } DxLib_End(); return 0; } このような形でソースコードを打ち込んだ結果、 実行しても起動はせず、また再構築させて起動しようとしても 起動中の扱いとなってしまいます。 ちなみに、開発環境はBCC Developperです。
メンテ

Page: 1 |

Re: 起動してないけれど起動扱い ( No.1 )
名前:紙袋 日時:2014/02/05 23:20

起動しないことに関係するか分かりませんが、 ・WaitTimer関数はDxLib_Init関数の後でないと呼べないと思います。 ・描画する画像の配列番号の指定に使用している変数、i、EnemyPageでEnemyPageを初期化していないのが気になります。(場合によっては不明な値が入る可能性があるので・・・) ・whileループの頭にClearDrawScreen関数を追加したほうがいいです。(前に描画したものが残ってしまいます) 以上の事を修正してみてください。 >>追記 WaitTimer関数をDxLib_Init関数の前で使用したプログラムを実行してみたら、 表示されずにプロセスに残る状態になることが確認出来ました。 なので、WaitTimer関数はDxLib_Init関数の後に使うようにしてください。
メンテ
Re:Re: 起動してないけれど起動扱い ( No.2 )
名前:Hazardix_T 日時:2014/02/07 16:21

返信ありがとうございます。 とりあえず、紙袋さんの言った通り WaitTimerをDxLib_Initの後ろに置いておきました。 EnemyPageの初期化できてないのは打ち間違えです。 #include "DxLib.h" int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { ChangeWindowMode(TRUE); int GHandle[15]; int i; int Enemy[15]; int EnemyFlame; int EnemyPage; if(DxLib_Init()==-1) { return -1; } EnemyFlame=WaitTimer(40); LoadDivGraph("D:/source_1/待機.png",7,7,1,320,240,GHandle); LoadDivGraph("D:/source_1/ふるえるなにか.png",15,8,7,320,240,Enemy); i=0; EnemyPage=0; while(CheckHitKeyAll()==0) { ClearDrawScreen(); DrawGraph(0,120,Enemy[EnemyPage],TRUE); EnemyPage++; if(EnemyPage==15)EnemyPage=0; EnemyFlame; DrawGraph(320,120,GHandle[i],TRUE); i++; if(i==7)i=0; WaitTimer(80); if(ProcessMessage()==-1) { break; } } DxLib_End(); return 0; } そんなわけで、このように修正してみましたが、 今度はEnemyに読み込んである敵が変に消えてる、というか不規則に点滅してしまいます。 それと、出来ればでよろしいのですが 最初に言った「主人公キャラと敵キャラを別々の描写速度で同時に待機アニメーションを表示させる」ようにするにはどうすれば良いのでしょうか、 指摘してくれれば幸いです。
メンテ
Re: 起動してないけれど起動扱い ( No.3 )
名前:紙袋 日時:2014/02/07 18:14

とりあえず、Enemyの各配列に画像が読み込まれているか確認してください。 リファレンスにあるLoadDivGraph関数の説明を読むと分かるのですが、 画像の左上から順番に 1,2,3 4,5,6 7,8,9 のように指定されたサイズで配列に格納されます。 ※EnemyのLoadDivGraoh部分を見て思ったのですが、 横8分割、縦7分割で系56分割の中から最初の15枚となっていますがこれは問題ないのでしょうか? アニメーションの管理ですが、各コマごとに描画する時間を制御してあげれば出来ます。昔、ここの掲示板で同じような質問に回答した時に使ったコードがあるので http://hpcgi2.nifty.com/natupaji/bbs/patio.cgi?mode=past&no=2896 のURLを参照してみてください。 ※C++を使用出来て、管理をしやすいものにしたいのでしたら<map>を使った連想配列を利用するという手法もあります。
メンテ
Re: 起動してないけれど起動扱い ( No.4 )
名前:Hazaedix_T 日時:2014/02/10 17:16

Enemyの配列ですが、 左上から順に [1],[2],[3],[4],[5],[6],[7],[8] [9],[10],[11],[12],[13],[14],[15] といったなんともまぁ変な配列にしてしまっています。 ひょっとしたら、これが要因の一つなのでしょうね。 とりあえず、アニメーションの管理の件は参考にしてみます。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存