アクションゲームの移動について

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

アクションゲームの移動について

#1

投稿記事 by たろう » 15年前

アクションゲームの移動でフィールドを
int hantei[15][20] = {
{ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 },
{ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 },
{ 1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1 },
{ 1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1 },
{ 1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1 },
{ 1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1 },
{ 1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1 },
{ 1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1 },
{ 1,1,1,1,1,0,0,0,0,0,1,0,0,0,1,0,0,0,1,1 },
{ 1,1,1,1,1,0,0,0,1,1,1,0,0,0,1,0,0,0,1,1 },
{ 1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1 },
{ 1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1 },
{ 1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1 },
{ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 },
{ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 },
};
のようにして通れない場所と通れる場所を区別しますが、
これ以外に通れる場所と通れない場所を区別することができる方法ってあるのでしょうか?

KEYONN_

Re:アクションゲームの移動について

#2

投稿記事 by KEYONN_ » 15年前

ネットカフェからの書き込みです。
http://www.play21.jp/board/formz.cgi?ac ... &rln=49484
過去ログにこんなプログラムがあります。参考にしてください。

たろう

Re:アクションゲームの移動について

#3

投稿記事 by たろう » 15年前

やっぱりint hantei[15][20] = {
{ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 },
{ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 },
{ 1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1 },
{ 1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1 },
{ 1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1 },
{ 1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1 },
{ 1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1 },
{ 1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1 },
{ 1,1,1,1,1,0,0,0,0,0,1,0,0,0,1,0,0,0,1,1 },
{ 1,1,1,1,1,0,0,0,1,1,1,0,0,0,1,0,0,0,1,1 },
{ 1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1 },
{ 1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1 },
{ 1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1 },
{ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 },
{ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 },
};
を使わない駄目みたいですね。
この方法以外でやることはできないのでしょうか?

たいちう

Re:アクションゲームの移動について

#4

投稿記事 by たいちう » 15年前

> この方法以外でやることはできないのでしょうか?

この方法でどんな問題があるか具体的に書いてくれれば、
解決方法を教えてもらえると思いますが。

その他の方法で比較的汎用性が高そうなのは、
フィールドの全ては同じだが配列で壁を表現するとか、
行けない部分を数式で判定するとか、でしょうか。

壁は縦と横があるので、フィールドを配列で持つよりも少し複雑です。
数式の場合は、元のマップやマップ生成のルールが単純でないならば、
やる価値はあまりないかな。

結局あなたが何をやりたいかです。

たろう

Re:アクションゲームの移動について

#5

投稿記事 by たろう » 15年前

回答ありがとうございます。
自分がやりたいのは、配列以外で壁などを作って通れなくすることはできるのかということです。

たいちう

Re:アクションゲームの移動について

#6

投稿記事 by たいちう » 15年前

> 自分がやりたいのは、配列以外で壁などを作って通れなくすることはできるのかということです。

私が聞きたいのは、何故配列以外で作りたいのか、ということです。
一連の質問でのやり取りを見ると、ゲームを作る上での定石というものを、
もっと練習したほうが良いと思います。
配列を使わないことで素晴らしいゲームになるアイデアがあったとしても、
まだ自由にプログラムを作れるレベルではないと思います。
まずは普通のゲームを普通に作れるようになることだと思いますが。

その上で、何故配列を使いたくないのですか?
使わないですむ方法は色々ありますが、お勧めできる方法かどうかは、
もっと詳しく聞かないと判りません。

シエル

Re:アクションゲームの移動について

#7

投稿記事 by シエル » 15年前

>>自分がやりたいのは、配列以外で壁などを作って通れなくすることはできるのかということです。
できないことはないでしょう。
全体的に質問内容がアバウトすぎる気がします。

たろう

Re:アクションゲームの移動について

#8

投稿記事 by たろう » 15年前

ただ気になっただけなので質問しました。いろいろあるんですか。
>まずは普通のゲームを普通に作れるようになることだと思いますが。
はい。そうしたいと思います。

ただ、その色々の中のなんでも一つでいいので簡単に説明してはもらえないでしょうか?
難しくてもよいので。よろしくお願いします。

たいちう

Re:アクションゲームの移動について

#9

投稿記事 by たいちう » 15年前

何でも良いならば、既に書きました。

> 行けない部分を数式で判定するとか、でしょうか。

例えばS(sx, sy)の近く(縦横3マス)には行けないとして、
このように書けます。

if (abs(sx - x) + abs(sy - y) <= 3)
  // 行けない
else
  // 行ける

原理的にはどのようなマップも数式で表せますが、
単純なルールのマップでなければ、この方法は使わないほうが良いでしょう。


その他の方法としては、背景のビットマップの色で判定とか。

たろう

Re:アクションゲームの移動について

#10

投稿記事 by たろう » 15年前

まずはゲームを作ることから始めたいと思います。
回答ありがとうございました。

softya

Re:アクションゲームの移動について

#11

投稿記事 by softya » 15年前

色々ありますよ。
(1)マップチップの番号で通れる通れないを管理する。
(2)マップチップ番号の情報配列を作って管理する。
マップチップ番号で通行可否・マップチップのアニメーション有無・前景背景などを管理。
(3)マップ配列→アトリビュート配列(マップ配列上の番号で参照)→マップチップ配列(アトリビュート配列の構造体に含まれるマップチップ番号で参照)と更に高機能化します。アトリビュート(属性)とは(2)でも書いた付随する情報のことですね。アトリビュートで通行可否・マップチップのアニメーション有無・前景背景のマップチップ番号などを管理ます。

(2)(3)辺りはプロだとこうするって例ですが高度な知識が不可欠です。
これ以外にも管理する方法は、作る人の趣味も含めて千差万別で数え切れない方法が有り得ます。

dic

Re:アクションゲームの移動について

#12

投稿記事 by dic » 15年前

反応ないので消しますね 画像

閉鎖

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