ページ 1 / 1
学校で・・・
Posted: 2007年6月07日(木) 02:12
by しゃか
ボンバーマンのようなゲームを作ることになりました。
作る際には2次元配列を使って、いけないところを作っていけば、あのボンバーマンのような網の目状に動くことが出来ると考えていいのですか?
あと、敵の前に立ったら敵がこっちに接近してくるというプログラムは、矩形を使って作成していけばいいんでしょうか??
ゲームを作るのは初めてで、どこから手をつけていけばいいのかも分かりません。よかったらその点もお答えいただければ幸いです。
駄文で申し訳ありません。
返答お待ちしております。
Re:学校で・・・
Posted: 2007年6月07日(木) 02:30
by 管理人
おぉ、ボンバーマンですか!
先日作りました^^
よければこちらの記事読んでみてください。
http://www.play21.jp/board/formz.cgi?ac ... 83&vino=28
どこまでリアルに作るかですが、厳密に作ろうと思うと結構難しいですよ。
ボンバーマンって1区間ごとにあるくわけじゃないですよね。
ちびちび歩くわけですから、単純に配列にいけない区間を用意したからそれで制御できるというものでもないです。
また、Y方向にぴったり一致した時のみ上に進めるようにプログラムしたのですは、操作性が悪くてしかたありません。
ですから、若干曲線を描いて進路を修正するようなプログラムも必要です。
歩行について何を言ってるのかわからなければ、上記URLからソフトをダウンロードして一回やってみてください。
その意味が解ると思います。
しかし、「もどき」でよく、リアルさも求めないのなら、「ゲームプログラミングの館」で紹介している「いけない区間を作る」で可能だと思います。
何度も言いますけど、どこまで作るかですよね。
厳密に作るにはかなり時間も必要ですし、困難な場面もあります。もし厳密に作るのなら「最初からどうすればいいかわからない・・」とう状況では完成は難しいかもしれません。
作りこみたければ、「ゲームプログラミング」について学んでみてください。
うちのHPはどこまで参考になるかわかりませんけど、参考になりそうな項目があればのぞいてみてください。
http://dixq.net/g/
いきなりボンバーマンを作るのは難しいと思うので、簡単なサウンドノベルゲームやRPGなどをいくつか作ってみて感覚を掴んでみる事も大事だと思います。
私にゲームプログラミングの力があるわけではないので、どこまで力になれるかわかりませんが、素人の趣味で得た知識無いでよければ力になりますからまた何かあればお聞き下さい。
Re:学校で・・・
Posted: 2007年6月07日(木) 22:13
by しゃか
早速質問に答えてくれてありがとうございます!!
返信に書いていただいた「若干曲線を描いて進路を修正するようなプログラム」とはいったいどんな感じのプログラムなのでしょうか???
ちなみに今作っているのは、ボンバーマンの、武器が刀になったバージョンとでもいいましょうか。背後から攻撃しないと敵が倒せないというようなものです。
多分ちょくちょく顔を出させていただくと思いますのでよろしくお願いします。
Re:学校で・・・
Posted: 2007年6月08日(金) 01:16
by 管理人
口では説明しきれないので、一度ゲームやってもらった方がわかりやすいですと、書いた通り実際に遊んでもらったほうがわかりやすいです。
たとえばx%32==0となる鉛直線を移動させようとしたとき、座標がこの点に達した時のみ上下に移動できたのでは、操作しにくくてしかたないのです。
本物のボンバーマンもそうですが、少々座標が違っても移動中に修正しなければならないのです。
やはりやってみないと何を言ってるのかわからないでしょう。
ボンバーマンをちびちび上下左右に動かしてみてください。その動きを良く見たら意味がわかるでしょう。
ライブラリは何をお使いですか?
DirectX? DXlib? それとも専門学校などの独自のライブラリでしょうか。
ゲームを作った事がなければ、いきなり難しいプログラムに取り組むと、途中でコードがぐちゃぐちゃになってしまったりする危険性があるので、小さい簡単なゲームを一つ作ってみてはいかがでしょうか。
使い物になりそうな関数を汎用的にして、引き続き使用できるようにすれば、次に作るゲームにもいかせるでしょう。
Re:学校で・・・
Posted: 2007年6月21日(木) 16:12
by shaka
お久しぶりです!!
ボンバーマンをダウンロードさせていただいたのですが言っている意味が分かりました!!
あの動きは、壁に当たったら上下左右がいける場所かを判断して、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;
}
}
}
ちなみにライブラリは学校独自のライブラリを使っています。
よろしくお願いします。