龍神録プログラミング9章の謎

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

龍神録プログラミング9章の謎

#1

投稿記事 by i.k.l. » 15年前

現在、龍神録プログラミングの館を利用して、
ゲームプログラミングの勉強をしております。
ところで、9章で思わぬ壁にぶつかってしまいました。

9章までの通りに、プログラミングを書いたのですが、
実行してみると、二つの問題が起こりました。
① 横に動く時に比べて、縦に動く時の方がスピードが遅い。
② 動ける範囲を飛び出しても、なぜか速度が落ちるだけで、
  一向に止まってくれない。(横に動いた時だけ)
何が原因でしょう?
また、プログラミングが間違っているのだとしたら、どういう間違いが考えられますか?

よろしくお願いします。

BEMANI

Re:龍神録プログラミング9章の謎

#2

投稿記事 by BEMANI » 15年前

>>i.k.l.さん
>①横に動く時に比べて、縦に動く時の方がスピードが遅い。
移動処理自体が間違っているか、移動速度の値が、X, Yで異なっているのだと思います。
もう一度、移動処理はあっているのか、移動時に使っている変数の中身が正しい値か確認してみて下さい。

>②動ける範囲を飛び出しても、なぜか速度が落ちるだけで、
>一向に止まってくれない。(横に動いた時だけ)
これも①と同じ症状が原因ではないかな~と思います。
正しく座標制御出来ているか確認してみて下さい。

具体的にどのような移動処理を行っているか分からないので、
i.k.l.さん御自身で解決できないのであれば、コードをアップしてみると回答が得やすいかもしれません。

array

Re:龍神録プログラミング9章の謎

#3

投稿記事 by array » 15年前

BEMANIさんの回答以上の事は言えませんが、キー入力は正常に判断しているみたいなので、赤文字部分の値が間違ってるのではないかと思います。
double x,y,mx,my,naname=1;

     ・
     ・
     ・
     ・

        for(int i=0;i<4;i++){//4方向分ループ
                if(inputpad>0){//i方向のキーボード、パッドどちらかの入力があれば
                        x=ch.x , y=ch.y;//今の座標をとりあえずx,yに格納
                        mx=move_x;   my=move_y;//移動分をmx,myに代入
                        if(CheckStatePad(configpad.slow)>0){//低速移動なら
                                mx=move_x/3; my=move_y/3;//移動スピードを1/3に
                        }
                        x+=mx/naname , y+=my/naname;//今の座標と移動分を足す
                        if(!(x<10 || x>FIELD_MAX_X-10 || y<5 || y>FIELD_MAX_Y-5)){//計算結果移動可能範囲内なら
                                ch.x=x , ch.y=y;//実際に移動させる
                        }
                }
        }


②に関しては青部分の判断に不十分があるか、単に間違ってるのではないでしょうか

i.k.l

Re:龍神録プログラミング9章の謎

#4

投稿記事 by i.k.l » 15年前

ありがとうございました。

閉鎖

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