学校の製作課題でボンバーマンのようなゲームを作ることになったものです。
敵の動きなんですがいくらやっても上手く出来ず、一時あきらめて、他の処理をやっていましたが
そろそろ敵の動きも完成させなければまずくなってきました。
前回、敵のスピードが32で割り切れていないかも?と指摘していただきましたが、敵のスピードは1に設定してあるので割り切れないということは無いはずなのですが・・・。。。
どうか助言をお願いします!!
ちなみにも載せましたが、今の時点のソースはこれです。
void move_teki()
{
if((en.x%32)==0 && (en.y%32)==0 )
{
teki_move_flg = 1;//敵移動フラグをたてる
if(teki_move_flg == 1)
{
if(can_cannot(en.x,en.y,en.muki,hantei)==1)//向いてる方向がすすめるか判定
{
en.muki = rand()%4;//向きをランダムで変更する
}
}
}
if(teki_move_flg == 1)
{
if(en.muki==0) //右向きならx座標を増やす
{
en.x = en.x+en.espeed;//敵のスピードは1です
if(en.x >= 608)
{
en.x = 0;
}
}
else if(en.muki==1) //左向きならx座標を減らす
{
en.x = en.x+en.espeed;
if(en.x <= 0)
{
en.x = 608;
}
}
else if(en.muki==2)//上
{
en.y = en.y-en.espeed;
if(en.y <= 0)
{
en.y = 480;
}
}
else if(en.muki==3)//下
{
en.y = en.y+en.espeed;
if(en.y >= 480)
{
en.y = 0;
}
}
}
}
最後にうちの学校の話を少し。
うちの学校ではとにかくゲームを自分で作るということによって技術を高めていこうという方針で、2年間の学校生活で大体3~4本のゲームを作ることになっています。
卒業までにどこまで習うのかというのはいまいち分からないのですが、2年生になると大体の生徒がインターンシップやらアルバイトやらで実際のゲーム会社の現場で働いてる感じですね。
今の自分からはあまり想像できませんが・・・。
とりあえずうちの学校はそんな感じです。
毎回駄文で申し訳ありませんがよろしくお願いいたします!!
先日はありがとうございました。
Re:先日はありがとうございました。
>敵の動きなんですがいくらやっても上手く出来ず
全体のソースがないので、具体的にどううまくいっていないのか
書かないとこちらでは状況がさっぱりわかりません。
現状どういう動作をしていて、本当はどういう動作をして欲しいのかを提示して下さい。
とはいえ、この一部分だけのソースを見た段階で疑問な点がいくつもあります。
・ enの初期値
enの初期値は何でしょう?
杞憂だとは思いますが、万が一 enxやex.yが 32で割り切れず、teki_move_flg = 0だったりしたら、
xや yが割り切れないので動くフラグが立たない -> その場に立ちっぱなし
と動かなくなりそうな構造です。
・ 意味のないチェック
・ 移動方向の判定
コメントを信用するとしたら、向いてる方向が進めるか判定してOKなら、
ランダムで移動方向を決めているようですが、その移動方向も進入不可だった場合について
考慮されているように見えません。
「移動しようとしている方向」に進めるかどうかを確認する必要はないのでしょうか?
・ teki_move_flgの存在意義
移動が始まるとずっと teki_move_flg = 1なのですがこのフラグは何の為に必要なのでしょうか?
>2年間の学校生活で大体3~4本のゲームを作ることになっています
今は1年生ということでしょうか。
2年で3~4本というのが少ないのか多いのかわかりませんが、チームで制作ですか?
全体のソースがないので、具体的にどううまくいっていないのか
書かないとこちらでは状況がさっぱりわかりません。
現状どういう動作をしていて、本当はどういう動作をして欲しいのかを提示して下さい。
とはいえ、この一部分だけのソースを見た段階で疑問な点がいくつもあります。
・ enの初期値
enの初期値は何でしょう?
杞憂だとは思いますが、万が一 enxやex.yが 32で割り切れず、teki_move_flg = 0だったりしたら、
xや yが割り切れないので動くフラグが立たない -> その場に立ちっぱなし
と動かなくなりそうな構造です。
・ 意味のないチェック
[color=#d0d0ff" face="monospace] teki_move_flg = 1;//敵移動フラグをたてる
if(teki_move_flg == 1)
[/color]
この if文の意図はなんでしょうか?・ 移動方向の判定
コメントを信用するとしたら、向いてる方向が進めるか判定してOKなら、
ランダムで移動方向を決めているようですが、その移動方向も進入不可だった場合について
考慮されているように見えません。
「移動しようとしている方向」に進めるかどうかを確認する必要はないのでしょうか?
・ teki_move_flgの存在意義
移動が始まるとずっと teki_move_flg = 1なのですがこのフラグは何の為に必要なのでしょうか?
>2年間の学校生活で大体3~4本のゲームを作ることになっています
今は1年生ということでしょうか。
2年で3~4本というのが少ないのか多いのかわかりませんが、チームで制作ですか?
Re:先日はありがとうございました。
学校の友だちにもソースを見せてみたのですが、向きが右でも左でもスピードが+en.speedされていたということがわかり、そこを直した結果きちんと動きました!!!
何回も見直したはずなんですがまったく気づかないでいました。。。
でも壁をすり抜けて行くことはなくなったので、これからいろいろな動きを試していきたいと思います!!
いろいろご指摘ありがとうございました。
ご指摘いただいたところも含めてこれからまた頑張ってみようと思います。
ちなみに今自分は1年生です。
製作なんですが、2本が企画科とグラフィック科の共同製作で、残りの1~2本が個人製作となっています。
この作品を就職活動に利用することになるという感じです。
何回も見直したはずなんですがまったく気づかないでいました。。。
でも壁をすり抜けて行くことはなくなったので、これからいろいろな動きを試していきたいと思います!!
いろいろご指摘ありがとうございました。
ご指摘いただいたところも含めてこれからまた頑張ってみようと思います。
ちなみに今自分は1年生です。
製作なんですが、2本が企画科とグラフィック科の共同製作で、残りの1~2本が個人製作となっています。
この作品を就職活動に利用することになるという感じです。