[過去ログ]
HSP初心者が<ゆうなま>っぽいゲームを作る (69レス)
HSP初心者が<ゆうなま>っぽいゲームを作る http://mevius.5ch.net/test/read.cgi/gamedev/1335577051/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
53: 名前は開発中のものです。 [sage] 2013/10/05(土) 13:44:44.01 ID:HeYyFSsK マップデータに対する主要な変更操作は、プレイヤーの指示による「掘削」です。 ただしルール上、どの地下空間も勇者が侵入する入り口とつながっていないといけませんので、 どこでも好き勝手に掘ることは出来ないように処理します。 そのためには「プレイヤーが掘削しようとした地点が、掘削可能か否か」を判定することからはじめます。 必要十分条件は、「その地点が見掘削」かつ「その4つのとなりのいずれかが掘削済み」ですので、 bool canDig(int x,int y){ if(!isInside(x,y) || isDigged(x,y)) return false; if(isInside(x-1,y) && isDigged(x-1,y)) return true; if(isInside(x+1,y) && isDigged(x+1,y)) return true; if(isInside(x,y-1) && isDigged(x,y-1)) return true; if(isInside(x,y+1) && isDigged(x,y+1)) return true; return false; } というようなアルゴリズムで判定することができます。 http://mevius.5ch.net/test/read.cgi/gamedev/1335577051/53
67: 31 ◆bQ58yym6a2 [sage] 2013/11/05(火) 21:54:19.01 ID:X4wPsGV1 こういう問題を処理するときには、再帰的アルゴリズムというのを使うとうまくいきます。 注目しているセルのdepth値が、隣接していて更新されたセルのdepth値よりも大きいとき、 そのセルのdepth値は、隣接depth値に1を加えたものに更新しますが、 それに引き続き、注目したセルに隣接するセルに対して、更新後のdepth値を通知します。 void Cmapdata::Rdig(int x,int y,short min){ if(isInside(x,y) && isDigged(x,y) && depth[x][y]>min){ depth[x][y]= ++min; Rdig(x-1,y,min); Rdig(x+1,y,min); Rdig(x,y-1,min); Rdig(x,y+1,min); } } 未掘削であったり、通知されたdepth値よりもともと小さいセルでは、値の更新もされませんし、 再帰呼び出しも行われませんので、影響範囲だけ更新したら、このアルゴリズムは完結します。 なおこの関数は、上記のdig関数の最後に(掘削セルのdepth値をセットしてから)呼び出して使います。 http://mevius.5ch.net/test/read.cgi/gamedev/1335577051/67
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.020s