ページ 1 / 1
処理の順番?
Posted: 2010年3月14日(日) 02:51
by sum
初書き込みします。sumです。
現在僕はキューさん(管理人様)の作ったプログラムをオブジェクト指向を取り入れて作ろうとしています。
今作ったのは入力に対応してキャラクターをプレイ画面内を動かすところまでなのですが、問題が2つ出てしまいました。
1、上下左右の移動は問題ないが、右斜め下(この方向だけたぶん大丈夫)以外の斜め移動のスピードが速い(x成分、y成分の移動距離が√2分の1倍されてない?)
2、スコアボードなどは龍神録様のものをお借りしていますが、一瞬白い画面が移ることがある。(フレーム落ちという言葉で表現すればいいのか?)
ライブラリもDXライブラリ使用と、どの情報を出せばいいかわかりませんが、プログラムの形などもほとんど龍神録のものを引用させてもらっています。
この2つが解決したいのですが、どのあたりを疑ったらいいか教えてください。
Re:処理の順番?
Posted: 2010年3月14日(日) 04:08
by Ma
>プログラムの形などもほとんど龍神録のものを引用
オブジェクト指向に変えたということなので、それはオリジナルのソースとは遠く違うものだと考えます。
>1、上下左右の移動は問題ないが、右斜め下(この方向だけたぶん大丈夫)以外の斜め移動のスピードが速い(x成分、y成分の移動距離が√2分の1倍されてない?)
あなたのコードがそのようになるようになっているからでしょう。
だったら、√2分の1倍すればいいのでは?
それを意図してソースを書いたのにそのような不具合が出るならば、その部分をかきこむといいですよ。
>2、スコアボードなどは龍神録様のものをお借りしていますが、一瞬白い画面が移ることがある。
どのようなソースか分からないのに、白い画面になるといわれただけで原因特定は難しいと思います。
「私のシューティングゲームのどこかで、画面が白くなるんですが、原因が分かりますか?」
と、私があなたに聞いたようなものです。
具体的な症状、ソースコード、あるいはどこで起きるか などなどの情報がほしいです。
Re:処理の順番?
Posted: 2010年3月14日(日) 12:51
by sizuma
softoyaさんもC#XNAへの移植をされていますね。
http://softyasu.net/index.html(win&x360ゲームズ)
XNAはフレームワークがきっちりしているので参考になるのではないでしょうか。
ソースを流用ってことはたぶんC++でしょうか。
オブジェクト指向を取り入れてということは完全なオブジェクト指向のプログラムにする気ではないということですか?
オブジェクト指向に書き直すなら設計からしたほうがいいと思いますけど。
龍陣録のソースは見たことないので具体的なことはアドバイスできません。
Re:処理の順番?
Posted: 2010年3月14日(日) 13:10
by softya
はい、softyaです。
私のXNA版は、参考になるように龍神録をわざと意識して残してある部分があります。
http://softyasu.net/game/gametop.html
完全にオブジェクト指向で作るなら、タスクシステム等の採用などZEROから作り直しをお勧めしたいですね。
とりあえず問題点は、ソースコードを見せてもらえないとなんともいえないです。
Re:処理の順番?
Posted: 2010年3月14日(日) 17:31
by sum
キャラクターの移動処理では
http://dixq.net/rp/9.html
の calc_ch, ch_move関数をそのまま使っています。
描画処理の中に白い画面が映る(この表現は正しくないと思いますが)問題の原因究明はどのあたりを調べたらいいのかわからなかったのでできていません。
softyaさん
>>完全にオブジェクト指向で作るなら、タスクシステム等の採用などZEROから作り直しをお勧めしたいですね。
タスクシステムはまだどう実装していいものか分からなかったので使わない方向にしています。
添付したプログラムはすべてオブジェクト指向を使わなくてもいいと思ったので自機、弾、敵の管理の辺りにしか使っていません。
今回作るプログラムの目的はC言語プログラミング(主にファイル分割関連といろいろなアルゴリズム)とオブジェクト指向に触れてみるというものですが、まずはシューティングゲームを作るのが第一の目的です。
プロジェクトを添付するので、問題についてのことやプログラムの設計からのことについて何かあれば教えてほしい、または話をしてほしいです。
Re:処理の順番?
Posted: 2010年3月14日(日) 18:18
by softya
>プロジェクトを添付するので、問題についてのことやプログラムの設計からのことについて何かあれば教えてほしい、または話をしてほしいです。
プロジェクトの添付に失敗されている様です。もう一度お願いします。
もしかしたら、サイズオーバーかもしれません。
>投稿は添付ファイルを含めて一度に120KBが限度
との事ですので。
ソース・ヘッダファイルだけを圧縮してアップロードで構いません。
Re:処理の順番?
Posted: 2010年3月14日(日) 18:34
by sum
120KBまでとは・・・
調べ足りませんでした。
では、ソース、ヘッダファイルだけをアップロードします。
Re:処理の順番?
Posted: 2010年3月14日(日) 23:44
by softya
ごめんなさい。
今、マシンを新しくてWindows7を本格的に導入中なので実行環境が動きません。
ぱっと見た感じは斜め移動の問題も白い画面も出なさそうな感じですね。
斜め移動に関しては、printfDxでx2,y2,naname,mx,myなどを出力して思ってもいない動きをしていないか確認してみてください。白い画面は裏画面をちゃんと使っていれば出ないはずですが、今のところはわかりません。
※ オブジェクト指向としては、単にクラスを使って書いているだけに過ぎない(C言語で書いても変わらない)のでだいぶ問題ありですが今回は追求しません。直った後で考えましょう。
Re:処理の順番?
Posted: 2010年3月15日(月) 00:29
by sum
なるほど、printfDxがデバッグの助けになるのですか。
勉強になります。
加えてオブジェクト指向という考え方も分かってませんでしたか。
とりあえず今日(15日)中に各変数の挙動だけでも調べてみます。
Re:処理の順番?
Posted: 2010年3月15日(月) 20:56
by sum
変数の動きはまだ良く分かっていませんが
・キャラ停止時にx2、y2がとても大きくなる
・斜め移動時はどの方向でも mx=0、 my=±4 固定になっている。
・ただの左右、上下移動でもx2、y2の小数点以下が動く時がある。
あと、白い画面が混ざるんじゃなくて混ざっているのは黒い画面でした。
すみません。
上の3つの問題はプログラムを見てもよく分かりませんでした。
Re:処理の順番?
Posted: 2010年3月15日(月) 21:44
by sum
上の書き込みで
・ただの左右、上下移動でもx2、y2の小数点以下が動く時がある。
とありましたが、間違いでした。
むしろ、
斜め移動で小数点以下が動かない
でした。
何か今いいものが見えたような気がs
いろいろ見てみます。
削除キー入れ忘れててすみませんでした。
