[過去ログ]
DXライブラリ 総合スレッド その12 (1001レス)
DXライブラリ 総合スレッド その12 http://echo.5ch.net/test/read.cgi/gamedev/1330000532/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
844: 名前は開発中のものです。 [sage] 2012/05/20(日) 02:25:40.47 ID:b4J8kKZD switch分岐でnew-deleteできないのかぁ!! 誰かメインループ中でラウンド管理クラス(キャラクター数、オブジェクト数などのゲーム本体を管理するクラス) を作りたいんだけど! 全然わからん。綺麗にできない。 ラウンド管理クラスを、例えばゲームのロード画面時にパッとnewして キャラクターをその分だけパッとメンバの配列を動的に宣言して リザルト画面に戻ったらパッとdeleteしたい http://echo.5ch.net/test/read.cgi/gamedev/1330000532/844
847: 名前は開発中のものです。 [sage] 2012/05/20(日) 03:09:05.33 ID:b4J8kKZD >>846 キャラクターのクラスをラウンドクラスで配列で持って管理するっていう方法を想定して作ったんだよ ラウンドクラスをコンストラクタの引数で指定されたファイルでマップやキャラクターや武器を初期化して このラウンドクラスはその名の通りラウンド中は保持してラウンドが切り替われば新しく作る。 というのがしたいんだ。 だから switch(hoge){ case 0: hoge=func(); case 1: Round round=new Round(); hoge=2; break; case 2: hoge=round.main(); break; case 3: delete round; hoge=0; break; } これがしたい case0がメニューで1で初期化(つまりロード画面?)2がメインゲーム、3がリザルト画面 みたいな http://echo.5ch.net/test/read.cgi/gamedev/1330000532/847
848: 名前は開発中のものです。 [sage] 2012/05/20(日) 03:12:36.92 ID:b4J8kKZD でもswitchスコープ抜けると開放されちゃうんよ( ;´Д`) staticにすれば、ひょっとしたら言語特性でできるかもしれないし でもそうするとdeleteしても消えないかもしれないし http://echo.5ch.net/test/read.cgi/gamedev/1330000532/848
858: 名前は開発中のものです。 [sage] 2012/05/20(日) 09:47:55.18 ID:b4J8kKZD >>849 確かにswitchはオススメしないって言われた お手本のコードは無いです。 メインループのこの部分(タイトル画面やメインゲームやオプション画面の変異)って どのようにした方がいいですか? 他の方法がわからない 今思いついたのは NowState=&Start(); while(~~~){ NowState=NowState();//次に実行するべき関数のアドレスを返す } http://echo.5ch.net/test/read.cgi/gamedev/1330000532/858
859: 名前は開発中のものです。 [sage] 2012/05/20(日) 09:49:23.86 ID:b4J8kKZD タスクシステム?というのは聞いたけど昔のものだとかする必要が無いとか言われた http://echo.5ch.net/test/read.cgi/gamedev/1330000532/859
862: 名前は開発中のものです。 [sage] 2012/05/20(日) 10:21:43.19 ID:b4J8kKZD c#やjavaでいいんじゃないかってくらい全部クラス化してる。 クラスは自分が管理クラス(今回の場合はラウンドクラス)から渡されたデータを使って処理を行う。 例えば一連の流れをいうと キャラクターが攻撃を行ったら判定クラスのメソッドが呼ばれ 判定クラスのメンバ変数ポインタからキャラクターの情報を貰って 判定結果がtrueならダメージ処理クラスに攻撃方法と対象と攻撃者が渡されるメソッドが呼ばれ ダメージ処理クラスが持っているキャラクターの情報を貰って HPが0ならキャラクターに死亡フラグを立て、UIクラスのメソッドに攻撃者と対象を渡す。 つまりキャラクタークラス→判定クラス→ダメージ処理クラス→UIクラス とバトンリレーになってる。 この時、キャラクタークラスや判定クラスやダメージ処理クラスは、キャラクターの情報を持ってないと仕事にならないのでラウンド管理クラスが保持している。 イメージとしてはクラゲと、クラゲの触手 class RoundAdmin{ Character character[]; Judge judge; Damage damage; public: void SetCharaNum(int); void SetJudgeClassChara(Character* hoge){damage.SetChara(hoge);}; void SetDamageClassChara(Character*); } 以上のことを踏まえて誰か中央部の設計お願いします。もう設計の最初からやり直しするのは嫌ですヽ(;▽;)ノ http://echo.5ch.net/test/read.cgi/gamedev/1330000532/862
863: 名前は開発中のものです。 [sage] 2012/05/20(日) 10:39:42.64 ID:b4J8kKZD >>861 http://d.hatena.ne.jp/selvaggio/touch/20060821/1156148509 関数ポインタ?をスタックしまくるんですか でもタイトルシーン→ゲームシーン→リザルトシーン という流れがあった場合リザルトシーンを予めタイトルシーン時にリザルトをpushしなきゃならないってことですよね http://echo.5ch.net/test/read.cgi/gamedev/1330000532/863
867: 名前は開発中のものです。 [sage] 2012/05/20(日) 14:50:25.73 ID:b4J8kKZD >>865 それぞれの返り値がないから 例えばjudge.ishit()っていうメソッドの中でdamageを定義してメソッドを呼んでる こう・・・ class Charactor { int HP; int x,y; double Angle; bool isDead; RoundAdmin* Admin; void Attack(int Kind){ Admin->judge.IsHit(this,x,y,Angle,Kind); } }; class Judge{ RoundAdmin* Admin; void Judge(RoundAdmon tmpAdmin){ Admin=tmpAdmin; } void IsHit(Attacker,x,y,Angle,Kind){ for(int i=0;i<Admin->CharaNum;i++){ if(~~~){ Admin->damage.func(Attacker,i,Kind); } } } } http://echo.5ch.net/test/read.cgi/gamedev/1330000532/867
868: 名前は開発中のものです。 [sage] 2012/05/20(日) 14:50:56.96 ID:b4J8kKZD 説明が下手でスパゲティで死にたい http://echo.5ch.net/test/read.cgi/gamedev/1330000532/868
871: 名前は開発中のものです。 [] 2012/05/20(日) 16:09:24.24 ID:b4J8kKZD >>870 逆だと思ってました(popしたものが実行されると思ってた) そういうことですか >>869 func[MAIN]関数内で保持したい変数ってどうすればいいんですか? func[MAIN]以外が呼び出されたら消えて欲しいです。 あと今更ですが質問厨でウザいですし基本設計の質問はDxlibスレでスレチだった・・・ http://echo.5ch.net/test/read.cgi/gamedev/1330000532/871
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.032s