お久しぶりです!!

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

お久しぶりです!!

#1

投稿記事 by shaka » 18年前

お久しぶりです!!
ボンバーマンをダウンロードさせていただいたのですが言っている意味が分かりました!!
あの動きは、壁に当たったら上下左右がいける場所かを判断して、OKなら座標を足したり引いたりする処理を書くという感じでしょうか???
あともうひとつ質問なんですが敵の動きが上手くいきません><
壁やオブジェクトに当たったら向きを乱数で変えて動いて行くプログラムを書きたいのですが、何度やっても敵が壁にめり込んだりしてしまいます。

ちなみにソースがこれです。
//敵の移動
void move_teki()
{
if((en.x%32)==0 && (en.y%32)==0 )
{
en.muki = rand()%4;
teki_move_flg = 1;
}

}
void move_teki_a()
{
if(teki_move_flg == 1)
{
if(en.muki==0) //右向きならx座標を増やす
{
en.x = en.x+en.espeed;
}

else if(en.muki==1) //左向きならx座標を減らす
{
en.x = en.x+en.espeed;
}
else if(en.muki==2)//上
{
en.y = en.y-en.espeed;
}
else if(en.muki==3)//下
{
en.y = en.y+en.espeed;
}
if(can_cannot(en.x,en.y,en.muki,hantei)==1)
{
teki_move_flg = 0;

}
}
}

ちなみにライブラリは学校独自のライブラリを使っています。
よろしくお願いします。

あと間違えて過去ログに書き込んでしまったので今回新たに新規に投稿しました。

管理人

Re:お久しぶりです!!

#2

投稿記事 by 管理人 » 18年前

う~ん、実際に行っている処理はボムマンの場合計算上1/100ピクセル単位で移動しているので、もっと複雑ですが、基本的にそんな感じです。
ただ私が言いたかったのは、ぴったり%32==0の地点にいないとき、キャラを操作させるには、曲線上を移動させなければならないということです。
厳密に作るならですけどね。

敵の動きがうまくいかないということですが
en.espeedが32で割ったあまりが0じゃ無いところを通っているのではないのでしょうか?
たとえば3ずつ増やしていると最初32で割ったあまりが0の地点を通りませんし。

敵がかならず32で割ったあまりが0の座標を通るようにすれば壁にのめりこむことも無いと思います。
もしそれでもわからなければ、ポイントつけてデバッグしながら値がどのように変化しているのか見ていってください。
条件付ブレークポイントなども使いながら、値を確認していくとよいと思います。

あと、調べている要素の対象が間違っている可能性もあります。
2次元で考えるとややこしいので1次元で考えて見ます。
座標x=0~31の間は[0]に属し、x=32~63の間は[1]に属し・・・
という処理を行っているのでしょうか?
今、要素が1の場所がいけないばしょ、1の場所がいける場所だとしましょう。

[0]   [1]   [2]   [3]
 1     0     0     1

今、x=60の地点にいるとします。[1]に属します・・・。
こうして自分が行っている処理を単純な構造に置き換えて考えてみてください。
何かわかってくるかもしれません
 
ここから関係ない雑談なのですが、
先日ゲーム会社がうちの研究室に、うちの会社どうですか、ゲームプログラマーになりませんかと宣伝に来てました。
専門学校でどんなことをしているのか知らないのですが、専門学校では独自のライブラリなどでゲームをあれこれ作らせているんでしょうかね?
いったい卒業までにどこまで習うのか、結構興味合ったりしますが。。ご存じないでしょうか。もしよければ教えていただければ嬉しいです。

Justy

Re:お久しぶりです!!

#3

投稿記事 by Justy » 18年前

>壁やオブジェクトに当たったら向きを乱数で変えて動いて行くプログラムを
>書きたいのですが、何度やっても敵が壁にめり込んだりしてしまいます
 こんだけのソースでは判らないことだらけですが、
move_teki()を見る限り壁にぶつからなくても特定の条件さえ満たせば方向転換してしまうようですね。

 で、めりこみの方は can_cannot()の仕様がわからないと何とも言えませんが1つだけ。
 en.xや en.yは座標を表していると思われますが、これちゃんと移動できるかどうか確認してから
移動していますか?
 一見すると移動してから壁かどうか判定しているような気がするのですが。



>専門学校では独自のライブラリなどでゲームをあれこれ作らせているんでしょうかね?
 聞いた話では DirectXか DirectXをラップした独自ライブラリみたいですよ。
 ほとんどが2Dゲームですが、ごく一部の優秀な人は3Dで作るみたいです。

 カリキュラムの方は結構タイトらしいです。

http://diarynote.jp/d/68350/20070217.html

管理人

Re:お久しぶりです!!

#4

投稿記事 by 管理人 » 18年前

う、リンク先見ていると目が痛くなる^^;
Justyさん、ご紹介ありがとうございます。
DirectXをラップしたライブラリというと丁度DXライブラリみたいなものでしょうか?

専門学校でやってることは少々わかりました。
実はそろそろ就職活動なので、色々と迷っていまして。
今までソフトウェア開発系の研究してきたので、そちらを活かせる仕事を探していたのですが、先日宣伝に業者の方がこられて説明聞いて、私も趣味でいつもゲーム作っているものですからゲームプログラマーも面白そうだなと思いました。
しかしゲームプログラマーはきっと専門学校でそれ専門に勉強した人が集まるのでしょうから、私が行った所で趣味で得た知識程度のゲームプログラミングでは全く歯がたたないかなとも思ったり・・。
きっと研修とかあって、誰でも知識が付けられるようにはしてくれるのでしょうけど、う~ん、院での研究テーマと無関係な職業につくのももったいないと思ったり悩んでいます^^;
会社どこが具体的にどういう事をしていて職場の感じがどうだとかパンフレットじゃわからないんですよねぇ・・。
せいぜい雑誌を見たり経常利益の推移を見たり、する位なんですが・・。

って人のトピで個人的な話をしてしまってすみません(_ _|||)

Justy

Re:お久しぶりです!!

#5

投稿記事 by Justy » 18年前

>DirectXをラップしたライブラリというと丁度DXライブラリみたいなものでしょうか?
 そんな立派なものかどうかはわかりませんが、そんなカンジだと思います。

 一部の学校では実際のコンシューマ機の開発環境をそろえているところもあるようで
そういうところではまたちょっと違うのでしょうけど。


>ゲームプログラマーも面白そうだなと思いました。
 (w


>しかしゲームプログラマーはきっと専門学校でそれ専門に勉強した人が集まるのでしょうから、
>私が行った所で趣味で得た知識程度のゲームプログラミングでは全く歯がたたないかなとも思ったり・・。
 いえ、そんなことはないと思いますよ。
 むしろボンバーマンのゲームを一人で作られた点では評価は高い方だと思います。

 たしかに専門学校では専門にそれを教えていますが、ゲーム制作を通じて
言語の基礎を理解させるだけで終わってしまうことが多く、結局大卒だろうが専卒だろうが、
ごく一部の特殊な人たちを除いては五十歩百歩です。

 それに多少スタート地点に違いはあっても、実際現場に入ったその後の「伸び」には
個人差があるので、管理人さんくらいプログラムができて吸収力もあるなら、
どこへ行ってもやっていけると思います。


>きっと研修とかあって、誰でも知識が付けられるようにはしてくれるのでしょうけど、
 んー、最近のゲームは非常に高度な技術を必要とするので、それなりのフォローは
するでしょうけど、そんな余裕もないところも多いですからねぇ。
 下手すると研修後即プロジェクトに投入ということも・・・。


>会社どこが具体的にどういう事をしていて職場の感じがどうだとか
>パンフレットじゃわからないんですよねぇ・・。
 あ~、これはOB訪問するとかしないと・・・。

 しかも大手だと開発部がいくつもあって、それぞれに特色のある雰囲気を
持っていたりして、どの部署に配属されるかで全然違ってきますよね。
 難しいですねぇ。


>って人のトピで個人的な話をしてしまってすみません(_ _|||)
 別スレたてた方がいいかもしれませんね。

管理人

Re:お久しぶりです!!

#6

投稿記事 by 管理人 » 18年前

なるほど、お答えくださりありがとうございます☆
トピの主旨から離れてしまいそうなので、とりあえず、この辺にしておきます^^;
自分からふっといてすみません(_ _|||)

閉鎖

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