お願いします

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

お願いします

#1

投稿記事 by ポン » 15年前

ボンバーマン風のアクションゲームを作っているのですが
敵のランダムな動かし方がわかりません。
何か参考になるサイトなどありましたら教えてください

Dixq (管理人)

Re:お願いします

#2

投稿記事 by Dixq (管理人) » 15年前

サイトはよくわかりませんが、
私は32で割り切れる座標に来た時に、ランダムに移動させるようにしていました。
あまり方法は多くないと思いますし、それでいいんじゃ無いかと思いますがどうでしょうか?

今どのように移動制御をしているかわかりませんが、
32ピクセルが1ブロックだとすると、32で割り切れる座標に差し掛かったとき、
移動方向をランダムに決め、そちらが進入可能ならそのまま歩かせ、
無理だったらもう一度それ以外の方向でランダムに決めたらいいと思います。

ただやってみて思いましたが、あまりチョコマカ不可解な動きをすると予測しにくいので、
特定の歩数以上歩いたら方向転換するようにしたほうがいいと思います。

ポン

Re:お願いします

#3

投稿記事 by ポン » 15年前

返信ありがとうございます。
詳しい動かし方のソースなどありましたら、教えてもらえませんか?

conio

Re:お願いします

#4

投稿記事 by conio » 15年前

-----------------------------------------------------------------
if(move_flag == MOVE_NONE){
  switch(rand % 4){
   case 0:move_flag = MOVE_RIGHT;break;
   case 1:move_flag = MOVE_LEFT;break;
   case 2:move_flag = MOVE_UP;break;
   case 3:move_flag = MOVE_DOWN;break;
   default:break;
  }
}
if(move_flag != MOVE_NONE){
  switch(move_flag){
   case MOVE_RIGHT:if((++mob.pt.x) % 32 == 0)
            move_flag = MOVE_NONE;
           break;
   case MOVE_LEFT:if((--mob.pt.x) % 32 == 0)
            move_flag = MOVE_NONE;
           break;
   case MOVE_UP:if((--mob.pt.y) % 32 == 0)
            move_flag = MOVE_NONE;
           break;
   case MOVE_DOWN:if((++mob.pt.y) % 32 == 0)
            move_flag = MOVE_NONE;
           break;
   default:break;
  }
}
-----------------------------------------------------------------
自分は大体こういう風にしました。
上記のプログラムでは、当たり判定などはしていないので、
壁であろうが通路であろうが進む仕様になってます。

①当たり判定を付ける
②進もうとした方向が壁であれば、別の方向へ進む
という処理を付ければ一応はマップに沿って動くようになります。

あと、ヘッダや変数の定義、動作確認などは省略してあるので参考程度にどうぞ。

閉鎖

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