[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 10/26 21:58 / Filesize : 242 KB / Number-of Response : 964
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

ダンジョン自動生成



1 名前:名前は開発中のものです。 [02/07/19 22:06 ID:o6Bp.wT2]
「風来のシレン」みたいにランダムでダンジョンを作るのって
どうやるんですか

379 名前:名前は開発中のものです。 [04/12/15 22:31:04 ID:lyT8gy6+]
>>372
解悦キボンヌ

380 名前:名前は開発中のものです。 mailto:sage [04/12/15 22:57:06 ID:axE7iVzD]
>>372
解説を是非

381 名前:名前は開発中のものです。 mailto:sage [04/12/15 23:01:00 ID:QSBnkci9]
>>372
解説キボン

382 名前:名前は開発中のものです。 mailto:sage [04/12/16 00:44:06 ID:qi/2VfrX]
>>372
解説お願い
あと4人か

383 名前:名前は開発中のものです。 mailto:sage [04/12/16 01:09:17 ID:vb9l5MzD]
>>372
解説を所望いたす

384 名前:名前は開発中のものです。 mailto:sage [04/12/16 04:45:02 ID:0Jr2pFyq]
>>372
解説すればミンナ幸せというわけでキボン

385 名前:名前は開発中のものです。 mailto:sage [04/12/16 06:12:29 ID:i5AsAUvc]
>>372
解説気盆ぬ

386 名前:名前は開発中のものです。 mailto:sage [04/12/16 07:14:41 ID:I5NiXAvz]
解説きぼん

387 名前:372 mailto:sage [04/12/16 13:38:02 ID:Fe46NDml]
ちゃんとレスくれたのは377のみかよ

どーもオマエらが解らないで困ってる部分が俺には解らないので掻い摘んで書く

まず、考え方から。

頭の中に方眼を用意しる!これが、マップの全体だ。
15x15ぐらいのな。
つまり、225部屋のマスが有るわけだ
もちろん通路もこの中にしまう。
視覚的に部屋なのか通路なのかは捉える方の錯覚にしかすぎない。

これが通路に見えるタイプ(この場合は縦方向)
■■□■■
■■□■■
■■□■■
■■□■■
■■□■■

部屋(と錯覚してるのは)こんなタイプ

■■□■■
■□□□■
■□□□■
■□□□■
■■□■■
こういう風に5x5とかでテキトーに部屋のパーツを作れ
通路タイプで曲げた時はちゃんと接続できるようなパーツも作れ
複雑なダンジョンつくりたきゃ沢山つくれもちろん7x7や9x9の方がいいぞ



388 名前:372 mailto:sage [04/12/16 13:42:25 ID:Fe46NDml]
つまりこれらのパーツを繋がるよーに並べていけばいいわけだ

次に繋ぎ方。

まず最初に、全体マップにスタート位置を決めれ
そしたら、そこに部屋を置く
このとき次に通路タイプを置く向きを決めてそれにあったタイプを
となりに置いてやる



389 名前:372 mailto:sage [04/12/16 13:46:17 ID:Fe46NDml]
これで、1つの部屋と1つの通路が出来た訳だ

そしたら次は通路タイプに繋がる部屋を置いてやる
このとき選んだタイプの繋がる方にまた通路タイプを置いてやる
長い通路にしたいときは通路タイプを2回置いてやれ

以下、これの繰り返し。

ぶっちゃけ通路をどっちに延ばすのかはランダムできめれ


390 名前:372 mailto:sage [04/12/16 13:52:07 ID:Fe46NDml]
初代はどーかしらんがトルネコはいつのまにかこのタイプ
ローグ系とは作り方が全然違う。

もちろん、7x7の部屋もあり、15x15の部屋もありと混ぜてやれば
大部屋とか入り組んだのとか自由に作れる。

気が向いたら他の方法も教えてやるよ

これ読んで意味わかんなかったらあきらめれ
中古屋にトルネコ買いにいって観察しる!

391 名前:372 mailto:sage [04/12/16 13:57:00 ID:Fe46NDml]
書き忘れた。
通路タイプを置くときに1回置いたとこにまた置くと行けない部屋ができるから
交わる時にはちゃんと交差点タイプに置き換えること

もしくは、交差点が出来ないよーに通路を延ばす方向を選べ
大本になる全体マップをみればぶつかるかどーかはすぐわかるはず

392 名前:名前は開発中のものです。 mailto:sage [04/12/16 16:05:27 ID:FUU0Kk70]
がっかり

393 名前:名前は開発中のものです。 mailto:sage [04/12/16 16:28:52 ID:UoUSh1EM]
>>372
CかJavaで実装例見せてください。もしくはもう少し具体的な擬似コードお願いします。

394 名前:名前は開発中のものです。 mailto:sage [04/12/16 16:41:54 ID:FMzVG2qN]
そもそもパーツを組み合わせて生成してるってのは確定なのか?

395 名前:名前は開発中のものです。 mailto:sage [04/12/16 18:22:24 ID:2Rv9bxWb]
昔懐かしタイルパターン方式か

396 名前:名前は開発中のものです。 mailto:sage [04/12/16 20:40:25 ID:0BfwHw88]
棒倒し法や壁伸ばし法で考えたんだが、
内壁の厚さをランダムで変化させて、
平行に並ぶ通路と通路の間の距離を広くして、
その上に部屋を置いていくと少し簡単にならないだろうか?

分かりにくくてスンマソ

397 名前:372 mailto:sage [04/12/17 01:59:17 ID:/jyWbHRK]
これがスマートとは思わないが誰にでも理解できる方法だ
指定階数になったらあらかじめつくっておいた配列マップを
マップ配列にぶち込めばイベント起こしやすい
だから、トルネコもこの方式になったんでないか
トルネコは大きい輪っか(口みたいなの)もデータでもってるけどな

393
自分でトルネコ作るなら俺はこの方法とらないけど作り込めば
かなり良いマップは作れるよ バイトコードでデータもってくれば
自動生成以外にもそのまま使えるしな
大本のマップを作ってって概念とメリットが把握できないなら
でっかい配列作ってもいいよ[100][100]とかな
その中に等長サイズのパターンデータを入れるか、倍数のデータなら解りやすいだろ
晒した方法観てピンとこないならこの方が簡単かもな
地図をゲーム内で表示する際とか、部屋の数とかの事もこの時点から考えておけ
実際のソースを晒すにはこの板は狭すぎ

395
わかってるならやってみれ
やった上でデメリット、メリット語ってみれ

396
その方法で出来たマップをよくみてみろ
どーせRPGで使うんだろうが、ゲームとして面白味は皆無だ
パズルゲーならアリだけどな
RPG作るんなら、実際にリアルの洞窟なり鍾乳洞なりを妄想するか
実際に行ってこい 

別なロジックもまだまだあるが、まだ晒す気にはならん

393,396 ガンガレ



398 名前:名前は開発中のものです。 mailto:sage [04/12/17 09:48:20 ID:FugbEZQk]
だから1から読めっていったのに。

399 名前:372 mailto:sage [04/12/17 11:28:08 ID:UZmelf3M]
398
だって、読んでもまだ解らないヤツがいるからこのスレがあるんだろ?
それとも、オリジナルのルーチン晒せってスレか?ここはw


400 名前:名前は開発中のものです。 [04/12/17 11:32:14 ID:s337jfOV]
なんか詳しいようだから、トルネコみたいな簡単なルーチンじゃなく、
nethackのダンジョン生成を説明して欲しいな。
rogueなんかよりは遥かに高度なダンジョンを生成してくれてる。


401 名前:名前は開発中のものです。 [04/12/17 11:50:06 ID:cLS59+MC]
nethackのダンジョンいいなぁ。nethackでローグ風の階層あるけどあそこなんかつまらない。
目が肥えたせいかローグのダンジョンはなんか無味乾燥に見えてしまう。

402 名前:372 mailto:sage [04/12/17 13:44:18 ID:N3mlXMLX]
nethackのソースは晒されてるぞソース読んだか?


403 名前:名前は開発中のものです。 [04/12/17 17:00:28 ID:cLS59+MC]
ローグの方も完全に理解してないので読んでません。まずはローグをJavaで実装してみたい。

404 名前:名前は開発中のものです。 mailto:sage [04/12/17 19:48:15 ID:W+xg7vzE]
雑で大雑把な説明しかしてないのに態度のデカイひとがいるようですけど、
せめてこのスレに書かれているようなローグ解析&解説ぐらいのことは
してからエラそうなことをいってくださいよ。


405 名前:名前は開発中のものです。 mailto:sage [04/12/17 20:03:23 ID:x2PDKPqI]
もう実装されてる
ttp://www.hexatron.com/rogue/

406 名前:名前は開発中のものです。 mailto:sage [04/12/17 22:52:45 ID:cLS59+MC]
>>405
いや自分で実装したいんです。図入りで解説するんでそのときは見てください。

407 名前:名前は開発中のものです。 mailto:sage [04/12/18 04:26:54 ID:Wo0srhjV]
>>404
気にするな。彼はチェンSoftのProgrammerなんだ。それだけが彼の生きている印なのだから。



408 名前:名前は開発中のものです。 mailto:sage [04/12/18 07:28:19 ID:VS/g54MY]
結局372は何もわからないのか。

409 名前:名前は開発中のものです。 mailto:sage [04/12/18 17:07:08 ID:6wvucy9y]
ばかだからね

410 名前:名前は開発中のものです。 mailto:sage [04/12/18 17:35:23 ID:NINQi9jk]
ローグのソース読んでもやっぱりわからん・・・
ローグライクの開発(解説)しているサイトでおすすめなのあったら教えてくだあい。英語でいいです。

411 名前:名前は開発中のものです。 [04/12/18 17:36:20 ID:NINQi9jk]
とりあえず
Roguelike News
ttp://web.archive.org/web/20010405204554/www.skoardy.demon.co.uk/rlnews/devmain.html
は知ってます。

412 名前:名前は開発中のものです。 mailto:sage [04/12/18 18:18:12 ID:brPxtXDU]
そんな難しいか?
脳内シミュレートしたけど、簡単にできそうだぞ

部屋を作って、部屋同士を通路でつないで
通路の長さと曲がり具合は、係数で制御して、それかr

413 名前:名前は開発中のものです。 mailto:sage [04/12/18 20:35:48 ID:vqBa0na6]
>>410
どこらへんの、なにがわからないのか、わかってる?

C言語がわからんというのはナシで

414 名前:名前は開発中のものです。 mailto:sage [04/12/18 20:57:46 ID:NINQi9jk]
>>412
ソース見ても細かいところで何やってるかわからないんですが。その大雑把にはわかります。
>>413
9つの領域に分けてランダムな大きさの部屋作るところまではできたんですが。
ドアつけて道でつなぐとこがよく分からない。ローグのソースコメントまったくないし・・・

415 名前:名前は開発中のものです。 mailto:sage [04/12/18 21:20:41 ID:vqBa0na6]
このスレの前の方でソース読みしてるけど。
通路については>>203あたりから。

416 名前:名前は開発中のものです。 [04/12/18 21:24:54 ID:NINQi9jk]
>>415
d
一応このスレ全部読んだんだけどね・・・
もう一回読み直して1日中考えてみます。いつかあっそうかってわかるときがあるかも

417 名前:名前は開発中のものです。 [04/12/19 02:06:47 ID:cKlDBmlQ]
説明してあげたいんだが、文字だけだと難しいな、以下、例ね
□ 空間
■ 土
■■■■■■■■■■■■■■■
■□■□■□■□■□■□■□■
■■■■■■■■■■■■■■■
■□■□■□■□■□■□■□■
■■■■■■■■■■■■■■■

1個飛ばしで空間を配列←初期状態
スタート地点の空間を決めて、隣(ランダム)とつなげる(=土を掘る)
ただし、つなげる先が4方を土で囲まれていなければならない
どこも掘れなくなったら、掘れる場所まで通路を戻っていく
(戻るために、掘るために通っていった通路の全座標を覚えておくこと)
戻るための座標の覚え方はスタックの概念を知らないと厳しいかも
スタート地点まで戻ってしまったら、それは掘れる場所は全部掘った場合のみなので終了
これで最初に1個飛ばしで存在した全空間がつながる
わかってもらえたかな?




418 名前:生徒α mailto:sage [04/12/19 03:05:58 ID:mkdjQU32]
それは、つまり有名な穴掘り型ってやつと数分違わずな気がするんですが、先生!!

419 名前:名前は開発中のものです。 mailto:sage [04/12/19 03:47:15 ID:kGW+p0Ld]
しかし■□を1キャラ分の大きさではなくて1部屋1通路などとしたり、穴掘りにくわえて適度に通路をつけるといい感じにならなくもないぞ。

ローグ風なら
●部屋や通路や壁
■通路や壁
□壁
●■●■●
■□■□■
●■●■●
■□■□■
●■●■●
これを穴掘りで通路つくる(=全部の部屋がつながっている)。
行き止まりばかりになるので、通路をつけたす。
これを元に部屋を置いて通路をつなげて完成。

さらに簡単な棒倒しでもいけるっぽい
ttp://www.asahi-net.or.jp/~kh4s-smz/midp/roguelike/random.html


420 名前:名前は開発中のものです。 mailto:sage [04/12/19 12:18:39 ID:ffh3rjeg]
ローグの場合、横倒しだとか穴掘りだとか、そんな面倒なことしてないけどね。
単純に、2つの部屋をつなげるだけ。
それぞれの部屋の壁のランダムな位置に扉をつける。
その扉を通路でつなげる。

どの部屋&扉の組み合わせでも、クネクネと2回曲がればたどり着ける。それだけ。
だからローグの場合、基本的な通路にクネクネクネクネ...したものがない。

421 名前:名前は開発中のものです。 mailto:sage [04/12/19 15:00:58 ID:P175sgFg]
nethackだと、みっちりと通路や小部屋が詰まったダンジョンもあるよね。
洞窟のようなものもあるし、結構バリエーション豊富だ。

422 名前:名前は開発中のものです。 [04/12/19 18:13:08 ID:cKlDBmlQ]
ところで自動生成ロジックが完成した暁にはどうなるんだ?
なんか遊べるものウプしてくれるの?


423 名前:名前は開発中のものです。 mailto:sage [04/12/19 18:25:40 ID:99IBDRAn]
実際にコードないかなぁ

424 名前:名前は開発中のものです。 mailto:sage [04/12/19 19:16:46 ID:P175sgFg]
>>422
ここを見た誰かが作るでしょ。
俺も多分作る。
さらに共有化された知識は、将来の誰かにとっても有益になる。
情報の共有化は、より高度なゲームが作られることを期待できる。

425 名前:名前は開発中のものです。 mailto:sage [04/12/19 21:07:31 ID:gAUF82dI]
>>424
いいこと言うな。

426 名前:名前は開発中のものです。 mailto:sage [04/12/20 03:42:01 ID:r12pJ3ea]
>>423
あるよ。このスレでもいくつか紹介されてるし。

オレは>>226のリンク先で紹介されてるダンジョン(Wiz風)
に感動したんで、コード拾ってきて解析中。
つーか、このコード、ローグのより読みやすいわ。
コメントもしっかり書いてあるし。

しかも、ダンジョン生成ルーチンが、クラスで提供されてるから
自分のプログラムに組み込んで動かすだけならすぐにできるよ。

参考までに…

・組み込んでコンパイルするのに最低限、必要なファイル
 gameutil.h、gameutil.c、
 jbmazemask.h、jbmazemask.cpp、
 jbmaze.h、jbmaze.cpp、
 jbdungeon.h、jbdungeon.cpp

・主に利用するクラス
 JBDungeonOptions、JBDungeon
 必要に応じて、JBDungeonRoom、JBDungeonWall、JBDungeonDatumってとこか?

ライセンスとかは各自で確認ヨロ

427 名前:名前は開発中のものです。 mailto:sage [04/12/20 08:38:06 ID:gXD9M5+e]
>>426
このページ見たけどソースあるの気づかなかったorz
さっそくダウンしました。



428 名前:名前は開発中のものです。 mailto:sage [04/12/20 12:11:38 ID:glvff/Ex]
いつのまにかソース丸ごとパクリに落ち着いた訳だが。。。


429 名前:名前は開発中のものです。 [04/12/20 21:49:42 ID:gXD9M5+e]
いやソース見て勉強するだけですよ。

430 名前:426 mailto:sage [04/12/21 05:24:29 ID:XvOexZq5]
>>428
ん???

オレの書き方がまずかったか…

読み返してみると、後半部分
解析する際のヒントのつもりが、
パクって利用する手引きに読めんこともないな…

組み込みも簡単だし、これ使っときゃいいじゃん!
て言ってるわけじゃないんで、念のため。
基本スタンスは>>424さんが言ってるような感じでヨロシク

と言うことで、このダンジョン生成プログラムについて

ざっと見た感じ、アルゴリズムは>>124のアイデアに近い希ガス

1.オーソドックスな迷路生成アルゴリズムで通路を作成(この時点ではただの迷路)
2.通路を二段階で整形(部屋をイイ感じで配置するための下準備?)
3.迷路のサイズを2倍+1にして通路を引き伸ばす(>>128でビンゴか?)
4.部屋同士が重ならないように配置(この時点で>>127みたいな状態になることがある)
5.壁を生成(これにより>>127みたいな状態が回避される)

まだちゃんと読んでないけど、2の仕組みが良くできてるとおもた。

あと、これ三次元にも対応してるっぽい(Z座標が存在する)。
まだ試してないんでどういうダンジョンが生成されるのかわからんが

431 名前:名前は開発中のものです。 mailto:sage [04/12/21 12:49:36 ID:JVBcPoT4]
このWiz風ダンジョン生成。
1マスを3x3マス分として考えて、通路は1マス分に縮小。
んで、部屋と通路の扉部分を結合。
ってしたらrogue likeにも使えないかな?

432 名前:426 mailto:sage [04/12/22 06:03:37 ID:M7D/hlJX]
>>431
そのアイデア、試しに実装してみました。

結果としては、それなりに使えるんじゃないかな?と思います。

ただ通路に関しては、どうしても直線的になりがちで
また部屋に密接して作られちゃうので
見る人によっては、面白みに欠けるとみなすかも?

一応、生成オプション弄って使えそうなやつを作ってみたんで
興味のある方はどうぞ
ttp://up.isp.2ch.net/up/2a3bb0ad177e.txt

433 名前:名前は開発中のものです。 mailto:sage [04/12/22 18:54:05 ID:vtsQN5YF]
なかなかイイね
ダンジョンゲーとしては各フロアにバリエーションがあったほうが楽しいから、
一味違うフロアを生成できるよういろいろなアルゴリズムを持つのは良いことだね

434 名前:名前は開発中のものです。 mailto:sage [04/12/22 21:18:29 ID:OzD0Okhk]
だね。俺は生成エンジンをプラグイン化してみたりしてる

435 名前:名前は開発中のものです。 mailto:sage [04/12/26 00:26:20 ID:Exh1T9w9]
このスレ参考に作成中。
まだ不具合あるので画像だけです。

ttp://tell-me.sakura.ne.jp/test.gif


436 名前:名前は開発中のものです。 mailto:sage [04/12/26 05:49:53 ID:H6gPAOqH]
おお、すげーすげー
そこを歩くだけのやつでもupしてん







・・・広いな・・・

437 名前:名前は開発中のものです。 mailto:sage [04/12/26 08:30:30 ID:U7hutUIm]
>>435
いいよいいよー



438 名前:名前は開発中のものです。 mailto:sage [04/12/26 11:36:20 ID:4W3IAVrJ]
>>435
広過ぎて従来のトルネコ&シレンの腹制度だと2Fで食料なくなりそうだなw

439 名前:名前は開発中のものです。 mailto:sage [04/12/26 18:40:24 ID:U7hutUIm]
angband系列だと同じくらい広くてもバランスとれてるから、
バランス取り方次第かと

440 名前:名前は開発中のものです。 mailto:sage [04/12/27 02:49:08 ID:/qB0yEjo]
*band*、少なくともvanillaでは食料事情、照明事情は無いに等しいからな。
NetHackとの差に泣ける。
NetHackだと照明屋に蝋燭しか無い事があるし。
まぁ蝋燭が足りないよりはマシなんだが。

441 名前:名前は開発中のものです。 mailto:sage [04/12/27 15:37:31 ID:oLkGYQCR]
ははは

NetHackだと蝋燭ないとイベントのせいでクリア不可能だし、
序盤は空腹が天敵だもんな。

その点、*bandは、初期の町で食糧や空腹の巻物が買い放題、
照明も買い放題の上、途中で消費なしの永久光源が拾えるしな

442 名前:名前は開発中のものです。 mailto:sage [04/12/27 21:44:09 ID:7R5BsBxR]
>>435
すげぇ。ただ、部屋が繋がりすぎのような・・・行き止まりの通路も欲しい

443 名前:435 mailto:sage [04/12/28 00:53:12 ID:89xDDhd/]
ttp://tell-me.sakura.ne.jp/map.zip

とりあえず歩けるようにしました。
マップの広さなど起動時にランダムで決まります。
描画にDirectX9.0cを使用しているので
ランタイムが必要です。
描画部分がかなり重いです。
マップが繋がってない、
永久ループするなど不具合が残ってます。


444 名前:名前は開発中のものです。 mailto:sage [04/12/28 01:50:03 ID:9LMc91BV]
いいよいいよー
こうやって実際に毎回違うmapを歩けると可能性を感じるなー

445 名前:名前は開発中のものです。 mailto:sage [04/12/28 04:19:44 ID:eZh/IZfo]
>>435
人工物っぽいダンジョンばかりでこれはこれで(・∀・)イイ!!
なんでこんなに重いの?

446 名前:名前は開発中のものです。 mailto:sage [05/01/02 21:08:00 ID:VyyXW717]
>>435
すごい!完成したらぜひソースを見せてほしいです。

447 名前:名前は開発中のものです。 mailto:sage [05/01/17 01:11:02 ID:DxCkgefZ]
ぬ・・・だ、誰もいないのか?

いまさらではあるが穴掘り方を応用したら、
こんな感じの生成できるようになった。
自分ではイケテルとおもうが、みんなどうよ?

ttp://namihei.zone.ne.jp/upup/up/31422.gif




448 名前:名前は開発中のものです。 mailto:sage [05/01/17 01:29:37 ID:4Y3i3Bq7]
>>447
真中の方にできてる丸っぽい部屋を見て「お?」って思ったけど、ループするような通路ができてないよね。
その辺をどうにかして、通路の太さを適当に拡張するようにしたら自然にできた洞窟っぽくなるかも?


449 名前:447 mailto:sage [05/01/17 07:38:51 ID:/ZZCwhql]
>>448
アドバイスさんくす!

ループした洞窟てのは、
ttp://namihei.zone.ne.jp/upup/up/31432.gif
の中央下の感じのことでいいのかな?
これなら一応実装済みなんだけどなぁ・・・
通路広くするのはちょいと考えてみる。

んでは、仕事いてくる〜  (^ー^)ノ


450 名前:名前は開発中のものです。 mailto:sage [05/01/17 14:01:44 ID:nHigXm2k]
全体をn×n個のグリッドにわける方法使ったときの部屋が一直線に並ぶような現象も
回避できてるようだし、かなり良いね。

451 名前:名前は開発中のものです。 [05/02/05 17:19:23 ID:T9zbJJCg]
ルナティックドーンみたいな奴はどうよ?

452 名前:名前は開発中のものです。 mailto:sage [05/02/13 19:14:35 ID:BfA7CsB3]
???
ルナドンって、定型を使いまわしだと思う。

453 名前:名前は開発中のものです。 mailto:sage [05/02/13 19:37:52 ID:YiLMMcfO]
初代は穴掘り系ランダム生成だったような。


454 名前:名前は開発中のものです。 [05/02/26 18:16:56 ID:XLBYmv/q]
穴掘り法というのをやってみてるんですが、
4方向とも穴を掘れなくなったときに次にスタート地点として選ぶポイントはどうやって選ぶんでしょうか?
今まで掘った穴の中から次のスタート地点をランダムに選ぶとなると、掘った全ての座標の中から選ぶって事になりますよね。

今、map[56][64]という配列に穴か壁を入れてるんですが、
rand()で56*64の中の一つを選んでそれが穴ならそのポイントを選ぶっていう風にすると無駄が多すぎるし…
誰かご教授おねがいします。

455 名前:名前は開発中のものです。 mailto:sage [05/02/26 18:58:48 ID:+BfzmYZO]
今まで掘ってきた穴をさかのぼっていって
4方向の穴が空いていない地点から掘り出すというのはどう?


456 名前:名前は開発中のものです。 [05/02/26 19:41:56 ID:XLBYmv/q]
その場合、穴を掘る場所を新たな配列か何かに入れながら掘り進めるって事ですよね?
それだと掘り方がランダムだから配列の大きさが分からないし、
後半になるとさかのぼる量が増えてしまって時間がかかる様な気がするのですが…

457 名前:名前は開発中のものです。 mailto:sage [05/02/26 23:26:37 ID:cBNZPZ5V]
Cなら動的メモリ、C++ならSTLで解決。
マーカつけてればそんなに深くはならない。



458 名前:名前は開発中のものです。 mailto:sage [05/02/27 00:38:28 ID:jOdBjCDc]
STLは良く知らないのですが、
1.listに穴を掘った場所を追加しながら進んでいく
2.行き止まりになったらlistの要素数が上限のランダム数を発生させる
3.ランダム数番目の要素がスタートに出来るならそのまま1へ戻り、出来ない場合はその要素を削除し、2へ
こんな感じになるのでしょうか?取り敢えずやってみます。

459 名前:名前は開発中のものです。 mailto:sage [05/02/27 06:36:24 ID:i5A/74X4]
入れ子でやってないということか?

460 名前:名前は開発中のものです。 mailto:sage [05/02/27 13:10:28 ID:jOdBjCDc]
入れ子…何処の部分ですか?
理解が悪くてすいません。
ところでlist構造は一つの要素に付き二つ以上の内容を記憶出来るのでしょうか?
今、map配列が2次元配列なのでmap[y][x]のyとxを格納したいのですが…
list構造を二つ用いて同時に入れるしかないんでしょうか?

461 名前:名前は開発中のものです。 mailto:sage [05/02/27 14:31:32 ID:jOdBjCDc]
というか、list構造ってランダムアクセス出来ないんですね…
どうすれば良いか完全に分からなくなりました
vectorだと要素の追加・削除が出来ないし…

462 名前:名前は開発中のものです。 mailto:sage [05/02/27 15:10:01 ID:G4Vo/2DV]
www.shibu.jp/cppreference/cppvector.html
vectorで要素の追加削除出来るべ
つうか出来なかったらどうやって使うのよ

463 名前:名前は開発中のものです。 mailto:sage [05/02/27 15:13:30 ID:jOdBjCDc]
>>462
ここを見ていたんですが、良く見たら適さないだけで追加も出来るんですね…
ttp://www5c.biglobe.ne.jp/~ecb/cpp/07_05.html
結局dequeというので今は試しているんですが、頭の中がごちゃごちゃになってきました

464 名前:名前は開発中のものです。 mailto:sage [05/02/27 16:50:19 ID:JGXBjsxB]
もう、解決しちゃったかもしれないが、書いとく。

>>460
コンテナには使用したい構造体を指定する。
struct POINT
{
    int x, y;
};
std::vector<POINT> data;
POINT p; p.x = 0; p.y = 0;
data.push_back(p);
if( map[data[0].y][data[0].x] == WALL ) ...

んで、vector を使ってランダムな要素を取り出す方法
int i = rand() % data.size();  // 1.適当な位置を求める
POINT temp = data[i];    // 2.要素を取り出す
data[i] = data.back(); // 3.取り出した要素の位置に終端の要素を入れる
data.pop_back(); // 4.終端の削除

vector は配列と同じ構造なので途中の要素を削除すると非効率。
でも、終端からの削除ならサイズを変更するだけで済むので簡単にできる。

んじゃ、頑張っとくれ。

465 名前:名前は開発中のものです。 mailto:sage [05/02/27 17:05:33 ID:jOdBjCDc]
>>464
なるほど。そんなやり方があるとは…
数時間挑んだのですが未だに解決してません。
その上ソースがぐちゃぐちゃになってもう駄目っぽいので、その方法でやり直してみます。

466 名前:名前は開発中のものです。 mailto:sage [05/02/27 23:37:25 ID:jOdBjCDc]
おかげ様で今、何とか完成させる事が出来ました。
アドバイスしてくれた人、本当にありがとうございました。

467 名前:名前は開発中のものです。 mailto:sage [05/02/28 00:17:26 ID:HqZ8iPxT]
>>466
おめでとう。役に立ったみたいで、こちらも嬉しいよ。
これからもゲーム制作を楽しみなー。



468 名前:名前は開発中のものです。 mailto:age [2005/03/29(火) 09:50:20 ID:Kg3P9ufG]
あげ

469 名前:名前は開発中のものです。 mailto:sage [2005/05/22(日) 17:32:21 ID:lIm3yEmY]
ホシュ

470 名前:名前は開発中のものです。 mailto:sage [2005/05/23(月) 22:58:20 ID:5z/chgyh]
ミーツー

471 名前:名前は開発中のものです。 mailto:sage [2005/06/03(金) 23:58:46 ID:k+KD2UyV]
このスレまだあったのか。
以前ここで、ローグの解析実況をした日は
なつかしい思い出だ・・・。

472 名前:名前は開発中のものです。 mailto:sage [2005/06/04(土) 00:50:39 ID:j7+2UQCm]
良スレは何度でもよみがえるさ

473 名前:名前は開発中のものです。 mailto:sage [2005/06/04(土) 02:55:43 ID:qAYKJL3r]
鍵や仕掛けつきのダンジョンは難しいかな?
あっちの鍵を拾ってこっちの扉を開けて・・・という系統のパズルなやつ。
ちゃんとクリアできるような仕掛けをランダムで作るのはどうしたらいいのかわからんけど。

474 名前:名前は開発中のものです。 mailto:sage [2005/06/04(土) 03:33:42 ID:j7+2UQCm]
多分それは表面的な改造ですぐすむと思うよ

475 名前:名前は開発中のものです。 mailto:sage [2005/06/04(土) 03:42:12 ID:yByGcKlF]
>>473
「鍵をかけながら鍵を置いて回る人」を仮想的に動かせばいい
と思って今考えてるとこだ。
うまくやれば大がかりな仕掛けもできると思うんだけど。

476 名前:名前は開発中のものです。 mailto:sage [2005/06/04(土) 10:37:14 ID:2Lx0HeyL]
経路探索か

477 名前:名前は開発中のものです。 mailto:sage [2005/06/04(土) 10:41:49 ID:Mx0GDmAL]
鍵と鍵の要る扉ランダム生成で一生遊べるスペランカー、とかあったらいいな



478 名前:名前は開発中のものです。 mailto:sage [2005/06/04(土) 10:54:52 ID:j7+2UQCm]
おもしろそうだよね。
はっきり書くと、こんな感じかな。

ダンジョンはたとえばAからFまでの6つの区域に分かれている。
またこの世の中にはaからjまでの10この鍵がある。

ある区域から別の区域に移動するためには、
あらかじめ定められた鍵をすべて持っていないといけない。
たとえば、AからDへ移動するためには鍵aとgとhが必要。

各区域には、そこで得られる鍵が定められていて、
その区域に立ち入ることによって、その鍵を得ることができる。
たとえば、A区域では鍵aとbとcが得られる。

プレーヤは最初スタート地点と呼ばれるある特定の区域にいる。
ゴール地点と呼ばれる特定の区域に到達することをめざす。
それは可能であろうか。――

479 名前:名前は開発中のものです。 mailto:sage [2005/06/04(土) 15:26:07 ID:qAYKJL3r]
なるへそ。RPGなんかで、先へ行くにはあるアイテム集めが必要で
そのアイテムを手に入れるには別なアイテムが・・・って話と似てるね。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<242KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef