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


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

C/C++ゲーム製作総合スレッド Part5



1 名前:名前は開発中のものです。 mailto:sage [2014/01/16(木) 00:00:31.27 ID:w6WW3hAo.net]
ゲーム製作におけるC/C++全般に関するスレです。

元スレ
DXライブラリ 総合スレッド その17
toro.2ch.net/test/read.cgi/gamedev/1383795645/

前スレ
C/C++ゲーム製作総合スレッド Part1
toro.2ch.net/test/read.cgi/gamedev/1337516528/
C/C++ゲーム製作総合スレッド Part2
toro.2ch.net/test/read.cgi/gamedev/1351015269/
C/C++ゲーム製作総合スレッド Part3
toro.2ch.net/test/read.cgi/gamedev/1357899040/
C/C++ゲーム製作総合スレッド Part4
toro.2ch.net/test/read.cgi/gamedev/1376262450/

688 名前:名前は開発中のものです。 mailto:sage [2014/05/01(木) 12:37:56.10 ID:d2ShpQiQ.net]
×「コンピュータってバカ正直な事なんだね…」
○「コンピュータってバカ正直な事をやるんだね…」

689 名前:名前は開発中のものです。 mailto:sage [2014/05/01(木) 13:21:29.38 ID:d2ShpQiQ.net]
>>662-663
同意

690 名前:名前は開発中のものです。 mailto:sage [2014/05/01(木) 13:56:28.60 ID:z13QLsnT.net]
「馬鹿正直」って感想はさ、たぶんコンピュータへの理解の第一歩だよね?

691 名前:名前は開発中のものです。 mailto:sage [2014/05/01(木) 14:18:18.47 ID:d2ShpQiQ.net]
そうなんじゃない?学園祭でマイクロマウスの実演と解説をしてた時の消防や
厨房の反応は楽しかったよ。「かあいい」「頭悪過ぎうー」「きゃはは」
「がんばれー」とかが大半だったけど、眼鏡っ子の厨房が模造紙の解説を
一所懸命に読んでて、繰り出す質問がなかなか賢すぎてこっちが呆れた

692 名前:名前は開発中のものです。 mailto:sage [2014/05/01(木) 14:26:30.17 ID:0k+QrX5J.net]
メンバ変数が全部staticのパターンの名前が思い出せない
モノトーンだかそんなような名前だった覚えがあるけど

693 名前:名前は開発中のものです。 mailto:sage [2014/05/01(木) 14:27:47.22 ID:d2ShpQiQ.net]
monostateじゃね
使ったことないが

694 名前:名前は開発中のものです。 mailto:sage [2014/05/01(木) 16:56:40.77 ID:ZxuEhXPJ.net]
シングルトン モノステート

695 名前:名前は開発中のものです。 mailto:sage [2014/05/02(金) 00:13:50.98 ID:5CvmG/6A.net]
皆さんは描画リストに登録して、Zソートやらしてからとめて描画などしてますか?
2Dで同じようなことを考えてるのですが、描画管理クラスにリストを持たせ、
その管理クラスのメソッドを通してリストへ登録しようとしてます
XNAのSpriteBatchの形が近いです

しかしこの方法だと管理クラスを引数でどんどん渡していかなければいけなく、良い方法がないか探してます
2Dオブジェクトにstaticで管理クラス、または描画リストを持たせた方がいいのでしょうか

設計の話なので明確な答えがないのはわかってます
皆さんの考えを参考程度に聞きたいです

696 名前:名前は開発中のものです。 mailto:sage [2014/05/02(金) 00:48:59.22 ID:DPIL44M1.net]
スプライト的な「2Dオブジェクト」を作って、
そこにパラメータ与えて、あとは自動的に描画されるような組み方してるん?



697 名前:名前は開発中のものです。 mailto:sage [2014/05/02(金) 01:19:41.25 ID:ZlBT84m3.net]
>>674
>しかしこの方法だと管理クラスを引数でどんどん渡していかなければいけなく、良い方法がないか探してます

依存性があるなら明示する(例えばSetterやコンストラクタで注入するだとか)
というのはOO的には無難なお作法だと思うけど。なんか不都合あるの?
(いちいち記述するのがかったるい、だとか)

まぁ、あまりに広範に渡ってその依存性が確認されるなら、グローバルな
存在、グローバルなサービス、として提供してもいいのでは。尤も、描画
モジュールに依存するモジュールってゲームの中では限定的だと思うけどね

698 名前:名前は開発中のものです。 mailto:sage [2014/05/02(金) 01:31:13.85 ID:Ru1dUuzy.net]
表示するもの {
private IDrawable model;
private Vector2 pos;
private 表示するもの[] children;
public void Draw(描画管理クラス){
描画管理クラス.add(model,pos);
for child in child {
child.draw(管理クラス);
}
}
}

699 名前:名前は開発中のものです。 mailto:sage [2014/05/02(金) 06:36:13.80 ID:Bq1H46te.net]
ダイクストラ法ってゴールをコロコロ変える(プレイヤーを追いかける)ことって出来る?

700 名前:名前は開発中のものです。 mailto:sage [2014/05/02(金) 07:18:20.71 ID:DPIL44M1.net]
たとえば屋内を探索するゲームの場合、
ある部屋から別のある部屋へ行く方法ってのは基本的に固定なので、最初に各パターンを計算しておけばいい。

上手く追いかけるように動かしたいってことなら、
有名なところで、パックマンの敵アルゴリズムの話がシンプルでわかりやすいと思う。

701 名前:名前は開発中のものです。 mailto:sage [2014/05/02(金) 07:57:10.51 ID:gb8xd1Dr.net]
自キャラの範囲と、敵の範囲と、とりあえず目指すポイント
みたいな表を作っておけば良いのか

702 名前:名前は開発中のものです。 mailto:sage [2014/05/02(金) 09:29:13.26 ID:dzhB41LP.net]
>>675
2Dオブジェクトは座標、テクスチャを持ち、描画関数内で管理クラスのリストへ登録
という流れを考えてますので、自動的な描画はしません

>>676
やはりプログラムの最初にsetterで登録が一番無難ですよね
不都合はないのですが、2Dオブジェクト全てが
管理クラスのsetterを持つのが気持ち悪く思えてしまい・・・

描画モジュールに依存するものが限定的とは...ゲーム内では殆どのものが
描画されるものだと思ってましたが違うのでしょうか
オブジェクトを管理したりするものは別だと思いますが・・・

>>677
これは結局引数でどんどん渡していくのでは・・・?

703 名前:名前は開発中のものです。 mailto:sage [2014/05/02(金) 09:52:01.66 ID:Ru1dUuzy.net]
>>681
引数で渡していっていいと思う
常に同じ描画管理クラス使うとは限らないし

704 名前:名前は開発中のものです。 mailto:sage [2014/05/02(金) 13:12:16.23 ID:6RPuKXq0.net]
>>681
何故「気持ち悪い」のか言葉で説明できるようにしてみれば
どうすればいいのかわかるんじゃない?

705 名前:名前は開発中のものです。 mailto:sage [2014/05/02(金) 13:23:32.11 ID:taHVwRQz.net]
リストへの登録を描画関数と分ければ?
登録するデータを戻り値にして呼び出し側で登録するとか

706 名前:名前は開発中のものです。 mailto:sage [2014/05/02(金) 19:21:58.74 ID:dzhB41LP.net]
>>682
レンダーターゲットを変えた時などでしょうか

>>683
2Dオブジェクトは例えばスコアや、メニューなどに使用するのに
管理クラスのsetterを常に持ち続けてるから・・・?

>>684
list.add(pObj->draw()); という感じですか?
この場合複数のオブジェクトを描画する時はどうなるんでしょう
スコアクラスは1桁描画を複数回呼ぶと思います
そういう時は戻り値でデータを返せないのでは

結局引数で渡してリストへ登録
または2DObject自身がリストを保持し、そこへ各派生クラスが登録する
という形になってしまうのでしょうか



707 名前:名前は開発中のものです。 mailto:sage [2014/05/02(金) 20:24:35.53 ID:tEs8rCVt.net]
ゲームで2つのプレイヤーの画面を並べる時ってどうしてる?
プレイヤーの状態とかエフェクトとかシングルトンで管理していて今まではどこかのクラスから
Game::instance()->registerEffect(new Effect())
みたいにできたんだけどプレイヤーごとにGameを作るようにしたらこれができなくなって
ゲームのインスタンスをあちこちに渡さなきゃならなくなったんだけどこんなことしないでもできる方法ない?

708 名前:名前は開発中のものです。 mailto:sage [2014/05/02(金) 20:30:31.53 ID:DPIL44M1.net]
話の流れがよくわからないんだけど、

renderer.add(PlayerObject);  //プレイヤーキャラクターのオブジェクトを登録
renderer.add(EnemyObject);  //敵キャラクターのオブジェクトを登録

…みたいなのとは全く別の話?

709 名前:名前は開発中のものです。 mailto:sage [2014/05/02(金) 20:32:36.22 ID:DPIL44M1.net]
>>686
Gameクラスってなんじゃらほい?
いわゆるシーンとかシーケンスってやつ?

710 名前:名前は開発中のものです。 mailto:sage [2014/05/02(金) 20:37:30.44 ID:Yjnja2zX.net]
>686
シングルトンが用を足さない状態だからやめるのが手っ取り早いけど
とりあえずシングルトンインスタンスの取得にID等の引数もたせれば?
引数違いなら違うオブジェクトを返すてのは実装は容易でしょ

こういうどこでも使えるグローバル変数的な状況で使うシングルトンは嫌いだけどな

711 名前:名前は開発中のものです。 mailto:sage [2014/05/02(金) 20:42:33.50 ID:Ru1dUuzy.net]
>>685
レンダリングターゲットを変えたときもあるかもしれないけど、
マルチスレッドで分割してトラバースするこもとあるし。
Direct3D11でコンテキストを複数作れるようになったしね

712 名前:名前は開発中のものです。 mailto:sage [2014/05/02(金) 20:45:40.07 ID:Gu2dz6L1.net]
>>685
戻り値をVectorかなんかにしたら

>>686
instance()に引数渡して特定のインスタンス取得出来るようにする
これまでシングルトンだったのが複数必要になった時点で設計見直した方がいいような気もするけど

713 名前:名前は開発中のものです。 mailto:sage [2014/05/02(金) 20:54:53.01 ID:tEs8rCVt.net]
情報不足すぎたうえに色々酷いごめんよ
Effectは別で管理している
シングルトンをやめるからどうするのが良いのかと思って聞いたんだ
ダブルディスパッチで敵の当たった処理とかしているんだけど
class Game {
 Enemy enemy[];
}
class Enemy {
 void hit() {
  if( 死んだ ) { Effect::addEffect(new Effect()); }
 }
}
みたいにしててどのエフェクトを使うかはEnemy側で決めるようにしたいからこうなったんだけど
GameにEffectのインスタンス持たせてEnemyにそのインスタンスの参照なりなんなり渡して
if( 死んだ ) { effect->addEffect(new Effect()); }
とかしても良いんだけどなんかしっくりこないんで気になったのよ
>>688
そうなんだけど実際あんまり関係なかった・・・

>>689
うまい設計思いつかなかったんよね
その方法手っ取り早いし良さそうです

714 名前:名前は開発中のものです。 mailto:sage [2014/05/02(金) 21:46:30.08 ID:Yjnja2zX.net]
>>692
EnemyはどうしたってEffectへのポインタが欲しいわけで描画の関係からか複数存在してるとなると
初期化などでずっと持たせるのが嫌ならhitかそれ以上に位置するGameから呼ぶ関数に引数として渡すか
EnemyはGameクラスのポインタ位持ってるならGameのほうにAddEffect関数もたせてEnemyはそれを呼ぶか

スレッドセーフでない設計ならEffectポインタのグローバルか静的関数なGetterとSetter用意して
GameオブジェクトごとにEnemy更新前にSetterでGetterの戻り値となるポインタを入れ替え…止めた方がいいな

715 名前:名前は開発中のものです。 mailto:sage [2014/05/02(金) 22:17:39.20 ID:DPIL44M1.net]
実際のコードでは、Effectクラスから派生した HitEffect とか DeadEffect とかを
Enemy内から呼んでるんだよね?

716 名前:名前は開発中のものです。 mailto:sage [2014/05/02(金) 22:41:54.83 ID:gb8xd1Dr.net]
GameがEnemyを管理するんだったらEnemyに
エフェクト番号とフラグを持たせれば良いんじゃない



717 名前:名前は開発中のものです。 mailto:sage [2014/05/03(土) 02:03:51.33 ID:aTctHTqN.net]
>>687
そんな感じです
ですがそのrendererを渡そうか悩んでます
引数ですとかなり深い(?)ところまで渡す必要があるのではないかという感じです

>>690
引数で渡した方が自由が利きますね
めんどくささと柔軟性のどっちをとるかみたいな感じでしょうか

>>691
座標、テクスチャ、UV、色などのことを考えるとVectorかなんかだときつそうです

とりあえず引数で渡す方向で作ってみたいと思います
オブジェクト指向難しいです...

718 名前:名前は開発中のものです。 mailto:sage [2014/05/03(土) 06:24:50.92 ID:aTctHTqN.net]
ああ、文章にミスが
>>696
rendererを渡そうか×
rendererをどう渡そうか○
です

719 名前:名前は開発中のものです。 mailto:sage [2014/05/03(土) 14:23:28.87 ID:yzrAO4fX.net]
ヒープ領域のオブジェクトを参照で引数で渡したい時ってどういう風に書けばいいの?

720 名前:名前は開発中のものです。 mailto:sage [2014/05/03(土) 16:01:04.13 ID:ZggXQf33.net]
普通に参照渡しするだけだよ

721 名前:名前は開発中のものです。 mailto:sage [2014/05/03(土) 18:27:55.89 ID:Dtrz+is9.net]
void f(A &a);

A *a = new A();

f(*a);

こんな感じゃない

参照って殆ど使った事ないからあってるかどうかわからんけど

722 名前:名前は開発中のものです。 mailto:sage [2014/05/03(土) 19:07:15.30 ID:hZKN3J0P.net]
「ゲームプログラマになる前に覚えておきたい技術」
という本がオススメと言われたんですが、これ持ってる人いませんか?
役に立つ度合いとかアドバイスしてもらえたら嬉しいです

723 名前:名前は開発中のものです。 mailto:sage [2014/05/03(土) 19:31:10.25 ID:R+meoZG6.net]
ゲームプログラマになる前に覚えておきたい技術
01 この本はどんな本か
www.shuwasystem.co.jp/gpro-sp/

これを読みましたか?

724 名前:名前は開発中のものです。 mailto:sage [2014/05/03(土) 20:46:14.95 ID:TVFyIiNS.net]
>>693
やっぱりそれぞれが持つしかありませんかねえ
呼び出し元をparentとかして持たせておくのって普通にやっていることなんですか?
この場合だとEnemy::parentにGameへの参照か何かを持たせるとか

>>694
はいそうです

725 名前:名前は開発中のものです。 mailto:sage [2014/05/03(土) 21:38:49.30 ID:XwaCxcGs.net]
重いので持ち運びには向かない、かな

726 名前:名前は開発中のものです。 mailto:sage [2014/05/03(土) 21:46:57.91 ID:XwaCxcGs.net]
>>703
各クラスがどのエフェクトを使うのか?というのをハッキリさせておいて
必要なものだけインクルードするようにすれば、そこまで気持ち悪いことにはならないんじゃないだろうか。
たとえばEnemyクラスは、Effect::GettingItem(アイテム獲得)とかEffect::PlayerDead(プレイヤー死亡)は不要だろう。

それすら気持ち悪いと思うなら(分からんでもない)、
ObserverとかListenerとかCallbackとかその辺に頼るとかでも良いんじゃない?



727 名前:名前は開発中のものです。 mailto:sage [2014/05/03(土) 22:35:18.25 ID:Kqu7ExT3.net]
>>700
参照引数は「読むだけ」を意図してる場合が多いからconst付きが多いかな

>>703
>呼び出し元をparentとかして持たせておくのって普通にやっていることなんですか?
>この場合だとEnemy::parentにGameへの参照か何かを持たせるとか

その疑問は>>674-696のやり取りと同じ話っぽいね、俺も>>704-705に同意かな。
依存関係を明示すると違和感を覚えたり気持ち悪くなるのは、大抵の場合

依存関係の認識(or分析)が大雑把。依存関係を明示するとそれが露見しちゃう。
機能分割が大雑把。依存関係を詳細に分析すると広範に絡み合ってて一体でした。

とか。Gameへの参照は、恐らく要らん情報にアクセスする権利も与えてるから
依存関係の明示というより、広範に渡る権力へのアクセス権の譲渡なのかな?

君はこの世界に神になる。俺はいいと思うけどね。というか、はなっから
グローバルなサービスとして提供してしてもいいかもね。完成させてから
リファクタリングしたほうがいい

個人的な短期小規模開発(作り捨て)なら別に問題ない。完成と反省のサイクルよ

728 名前:名前は開発中のものです。 mailto:sage [2014/05/03(土) 23:45:58.24 ID:yuGTooJm.net]
具体的なEnemyなんてアプリ層なんだから泥臭くていいと思うのだが。

729 名前:名前は開発中のものです。 mailto:sage [2014/05/04(日) 00:03:34.32 ID:4VZ37tn9.net]
すまん、>704はセガ本が物理的に重いって話のつもりだったんだ

730 名前:名前は開発中のものです。 mailto:sage [2014/05/04(日) 00:09:25.10 ID:LNtKUxSS.net]
まあ大概のゲームプログラミング本は重いよね
電子版あるならそっちの方が捗りそうだ

731 名前:名前は開発中のものです。 mailto:sage [2014/05/04(日) 07:21:43.07 ID:r1PwGAIh.net]
描画クラスを作って描画用のインターフェイスを作る
描画されるクラスはインターフェイスを実装
描画クラスはそのインターフェイスをリスト管理し順番に描画
ゲームクラスはデータクラスと描画クラスを管理し
必要に応じてデータクラスを作り、描画クラスに登録
ゲームクラスが当たり判定をして、エフェクトクラスをnew、描画クラスに登録

て感じじゃ駄目なの

732 名前:名前は開発中のものです。 [2014/05/04(日) 18:09:40.60 ID:Oce/sxqq.net]
>>701
サンプルプログラムの修正版があるからそれ見て決めたら?
ちなみに独自のライブラリを使ってる

733 名前:名前は開発中のものです。 mailto:sage [2014/05/04(日) 21:44:57.67 ID:o3zvQF1I.net]
もし、新幹線できたらな
飛行機乗客が減り、飛行場が苦労する
バス乗客が減り、高速道路が苦労する

結果的に、四国地方の経営破たん

734 名前:名前は開発中のものです。 mailto:sage [2014/05/06(火) 09:11:34.47 ID:WKSS3LlW.net]
ポインタに構造体を持たせる場合ってきちんとスマートポインタを使った方がいいの?

735 名前:名前は開発中のものです。 mailto:sage [2014/05/06(火) 10:42:16.25 ID:2Ki+N293.net]
>>711
独自ライブラリですかー・・・
ありがとう。ちょっとどっかで立ち読み出来るまでは買い控えます。

736 名前:名前は開発中のものです。 mailto:sage [2014/05/06(火) 14:47:05.12 ID:D61HzG9l.net]
>>713
本来スマートポインタはラクをするために使う。あとは好きにしろ
あと言語の使い方一般についての質問はプログラム板のほうがいい
【初心者歓迎】C/C++室 Ver.90【環境依存OK】
toro.2ch.net/test/read.cgi/tech/1395675954/

はい、次の方どうぞ



737 名前:名前は開発中のものです。 mailto:sage [2014/05/06(火) 15:47:49.53 ID:C6PkJkWu.net]
そのスレ、ちょっと見たけど罵りばっかじゃないかw

738 名前:名前は開発中のものです。 mailto:sage [2014/05/06(火) 16:22:09.99 ID:tFTEVnQV.net]
x64の64bitビルドでのループ変数とかメンバ変数てint,unsigned intとsize_tどっちが最適なの?
DirectXのAPIが32bit幅なのにSTLは64bitみたいに混在してて決め打ちしにくいんだけど
インデックスとして毎回32bitを64bit拡張と変数を32bitにstatic_castと
タイプ量はともかく実行時に効率いいほうにしたい

739 名前:名前は開発中のものです。 mailto:sage [2014/05/06(火) 16:27:40.04 ID:D61HzG9l.net]
>>716
報告しなくていい。そういう感想は彼らに直に言ってあげな。陰口より建設的だろ

はい、次の方どうぞ

740 名前:名前は開発中のものです。 mailto:sage [2014/05/06(火) 16:28:53.69 ID:D61HzG9l.net]
>>717
かぶったすまん

741 名前:名前は開発中のものです。 mailto:sage [2014/05/06(火) 16:44:38.90 ID:C6PkJkWu.net]
>>718
そんな非建設的な事実上機能していないスレに誘導してどうするんだって事だよ。

はい、次の方どうぞ。

742 名前:名前は開発中のものです。 mailto:sage [2014/05/06(火) 17:21:27.34 ID:D61HzG9l.net]
>>717
例えばループ変数については普通にint使ってるな
参考までに、科学計算系のライブラリでもそんな感じだったと思うよ
計算速度云々が問題になる場合、気にかける場所はもっと別の所かと

743 名前:名前は開発中のものです。 mailto:sage [2014/05/06(火) 20:22:43.10 ID:HhBjBQsT.net]
32bit環境でもint iをbyte iとかshort iにはしない
あとむやみにunsignedにするとsignedにunsigned加算して警告でたり面倒のもと

744 名前:名前は開発中のものです。 mailto:sage [2014/05/08(木) 22:05:56.40 ID:Np2Vdwsy.net]
ローカル変数がautoばかりになってしまうんだけど意図的な型だけ除外しておけば問題ないよね?
constもメンバ関数含めて相当あるけど

745 名前:名前は開発中のものです。 mailto:sage [2014/05/08(木) 22:48:55.29 ID:v1IR+nQC.net]
人間がソースコードを読んだときに
「型が明らかである場合か、あるいは逆に全く意識してほしくない場合にのみ使う……とかにしておけば?

746 名前:名前は開発中のものです。 mailto:sage [2014/05/09(金) 09:00:26.26 ID:3cnn0QfE.net]
ローカル変数にauto使うメリットってある?
イテレータの型書くの面倒くさい、位しか思いつかない



747 名前:名前は開発中のものです。 mailto:sage [2014/05/09(金) 09:04:31.69 ID:7ikJMhxE.net]
十分じゃないか

748 名前:名前は開発中のものです。 mailto:sage [2014/05/09(金) 13:56:58.03 ID:Kaaj65V1.net]
型推論って引数に使ったら勝手にオーバーロードしてくれるんだと思ってたんだが、引数とか戻り値には使えないんだな
iteratorの記述を省略するための機能か

749 名前:名前は開発中のものです。 mailto:sage [2014/05/09(金) 17:15:23.11 ID:htXiJh1L.net]
そういう用途にはテンプレート関数があるしね

750 名前:名前は開発中のものです。 mailto:sage [2014/05/10(土) 00:22:59.13 ID:6TirXj8H.net]
>>725
個人的にはイテレータを簡単に書けるメリットが一番大きいと思ってるが
それ以外で使うとしたら

auto f = new Foo(); //Foo型なのは明らか

とか

//交換
auto tmp = a; //型は明らかではないが意識する必要がない
a = b;
b = tmp;

とかかなあ。
後者は素直にtemplate関数にでも投げたほうが良さそうだけどね

751 名前:名前は開発中のものです。 mailto:sage [2014/05/10(土) 10:54:20.51 ID:dAeX94+O.net]
配列に入ってる複数の要素のうちの一つをポインタに持たせる場合って、スタックのアドレスをポインタに持たせても大丈夫?

752 名前:名前は開発中のものです。 mailto:sage [2014/05/10(土) 11:11:37.14 ID:hKETio2L.net]
>>730
「スタックのアドレス」を「スタック上におかれた配列の要素を指すアドレス」と解釈したけど

ttp://ideone.com/yad3h1
その配列が生きている間は問題ない

753 名前:名前は開発中のものです。 mailto:sage [2014/05/10(土) 22:40:27.91 ID:+R2ltZ7t.net]
const T& f();
void g()
{
auto t= f();
}

ってすると t は const T& 型になると思ってたけど
実はただの T 型でコピーコンストラクタでひどいことになったことあります

754 名前:名前は開発中のものです。 [2014/05/11(日) 18:46:58.77 ID:8qR2WxrE.net]
#include "define/MoneyType.h"
int money[MoneyType.SIZE];

こういう宣言の仕方って出来ないの?
MoneyTypeはenumで
enum MoneyType {
GOLD,
DIA,
SIZE
};

755 名前:名前は開発中のものです。 mailto:sage [2014/05/11(日) 19:38:27.89 ID:3XauxJKc.net]
enumはC++11で整数としてあつかえなくなったってwikiに書いてあった気がする
っていうかその使い方わかりにくいしやめた方が

756 名前:名前は開発中のものです。 mailto:sage [2014/05/11(日) 19:44:07.91 ID:3XauxJKc.net]
訂正
static_castでキャストすればいけるっぽい



757 名前:名前は開発中のものです。 mailto:sage [2014/05/11(日) 19:59:02.14 ID:yHWGVGOF.net]
GOLD,DIA,SIZEって何かと思ったけど、もしかしてお金の単位なのかな?

758 名前:名前は開発中のものです。 mailto:sage [2014/05/11(日) 21:01:42.40 ID:KSscCZAl.net]
MoneyType::SIZEかな?
ただこれだと再定義のエラーが前出たような気がする

759 名前:名前は開発中のものです。 mailto:sage [2014/05/11(日) 21:04:03.89 ID:9RoLwWBR.net]
>>733
enum class MoneyType:int
{
GOLD,
DIA,
SIZE
};

int money[ MoneyType::Size ];

760 名前:名前は開発中のものです。 mailto:sage [2014/05/11(日) 21:06:37.47 ID:KSscCZAl.net]
適当に書いちゃったけど何をしようとしてるのかいまいち理解出来ないw

761 名前:名前は開発中のものです。 mailto:sage [2014/05/11(日) 21:14:58.11 ID:9RoLwWBR.net]
enumの要素数を静的に得たいんでしょ
将来お金の種類増えるかもしれないとか
配列使うぐらいならvectorにしとけとも思うが

762 名前:名前は開発中のものです。 mailto:sage [2014/05/11(日) 21:51:52.47 ID:3XauxJKc.net]
構造体じゃいかんのか

763 名前:名前は開発中のものです。 mailto:sage [2014/05/12(月) 00:24:54.73 ID:cE27KFFY.net]
実際に使うの想像してこうなった。
例えば複数の種類のお金で買えるショップ機能を作りたい場合、
ショップ側でMoneyTypeという型と整数を持っておけば、処理が楽かなと思ったんだけど

764 名前:名前は開発中のものです。 mailto:sage [2014/05/12(月) 01:09:04.70 ID:u2hQW3ha.net]
つまり>740が正解っぽい?

765 名前:名前は開発中のものです。 mailto:sage [2014/05/12(月) 14:46:27.12 ID:Pch/P8kY.net]
ゲームで何時でも何処でも参照、代入できるデータって一般的にどうやって管理してます?
(例えば主人公のデータとか色々な場面で使いそうなもの)
今まで単純にデータクラスの中に静的メンバ変数で定義してグローバル的にやってたけど、
たまたまシングルトンで管理してるソースを見つけて、色々あるのかなって思った

766 名前:名前は開発中のものです。 mailto:sage [2014/05/12(月) 18:22:11.56 ID:cE27KFFY.net]
シングルトンは嫌だからゲームマネージャークラス作ってそこにプレイヤーデータのポインタ持たせたりしてるけど、どうなんだろう??



767 名前:名前は開発中のものです。 mailto:sage [2014/05/12(月) 18:22:35.24 ID:gXmiaEA2.net]
3Dゲームでカメラを遅らせて動かす場合って角度を線形補間してベクトルにしてる?
それともクォータニオンで球面線形補間してる?

768 名前:名前は開発中のものです。 mailto:sage [2014/05/12(月) 20:18:49.99 ID:u2hQW3ha.net]
>>745
グローバル変数は可能な限り減らす、という理念の上でやってるなら、
それは実に正しい手法だと思うよ

769 名前:名前は開発中のものです。 mailto:sage [2014/05/12(月) 22:53:45.27 ID:Qk7dokdu.net]
グローバル変数使いまくりの俺だが、グローバル変数は使わない方がいいと言われて
その方向でプログラム書き直したところ、手間の物凄く増えて辟易。
やり方を間違ってるんじゃないか感が半端ない。

770 名前:名前は開発中のものです。 mailto:sage [2014/05/12(月) 23:01:55.91 ID:Qk7dokdu.net]
あるプログラム本に「JAVAなんかは誰が組んでも似たようなものになるが、
C++プログラムは人によってまるで違ってくる」とあったが本当みたいね。

本や解説サイトによって、サンプルがかなり違ってるようで混乱しまくるわ。

771 名前:名前は開発中のものです。 mailto:sage [2014/05/12(月) 23:39:44.01 ID:4H1ieXj2.net]
グローバル変数どうのこうのは保険をかけるためのもので手間を減らすものではないから仕方ないね

772 名前:名前は開発中のものです。 mailto:sage [2014/05/13(火) 06:24:12.16 ID:hs5B6JyN.net]
グローバル変数使わずにやろうとすると関数の引数が複雑になりがちだからな
一人で作ってるコンパクトなプログラムくらいだったら使いまくりでいいと思うわ

773 名前:名前は開発中のものです。 mailto:sage [2014/05/13(火) 10:40:34.58 ID:lZBhyb5G.net]
グローバル変数は初期化の順序が問題になる
複数のソースコードのあちこちに点在してるとそれが顕著になり
グローバル変数がクラスで依存関係があると動作保証が難しい
せめて組み込み型以外はポインタ型にして初期化の順序を決めちゃうのが安全

774 名前:名前は開発中のものです。 [2014/05/13(火) 11:22:50.82 ID:i7OBK+99.net]
>>738
'MoneyType' is not a class or namespace
ってでる

visualstudio2010だと出来たと思うんだけど、
Eclipse4.3だと出来ない

C++のバージョンによってなんか変わったのかな

775 名前:名前は開発中のものです。 mailto:sage []
[ここ壊れてます]

776 名前: mailto:2014/05/13(火) 12:15:46.52 ID:D4assd32.net [ >>753
enum classはC++/CLIだからだろ
Cにそんな構文はない
俺はC++には詳しくないけど実はあるのかな ]
[ここ壊れてます]



777 名前:名前は開発中のものです。 mailto:sage [2014/05/13(火) 13:16:16.22 ID:LR5OHySp.net]
C++11から入った構文

778 名前:名前は開発中のものです。 mailto:sage [2014/05/13(火) 22:03:52.41 ID:VqkITLrD.net]
グローバル変数はこう書けば良いんじゃね
使うところでだけglobal.hをインクルードしてさ

grobal.cpp
int a;

groubal.h
#ifndef _GLOBAL_H_
#define _GLOBAL_H_

 extern int a;

#endif

779 名前:名前は開発中のものです。 mailto:sage [2014/05/13(火) 23:05:24.12 ID:RPOQlcBK.net]
>>756
わざわざ識別子を _ で始めるなんて沸いてるんじゃない?

780 名前:名前は開発中のものです。 mailto:sage [2014/05/13(火) 23:15:35.87 ID:dsNPksM9.net]
是非はともかく、よく見かけるけどな

781 名前:名前は開発中のものです。 mailto:sage [2014/05/13(火) 23:46:55.80 ID:VqkITLrD.net]
>>757
じゃあなんて書くんだ?

782 名前:名前は開発中のものです。 mailto:sage [2014/05/13(火) 23:51:06.96 ID:dD8wYEBQ.net]
アンダーバー始まりは処理系予約とかじゃ無かったっけ
慣習的に

783 名前:名前は開発中のものです。 mailto:sage [2014/05/13(火) 23:59:25.01 ID:VqkITLrD.net]
>>760
まじかよ
学校でこう習ったよ
何でそんな書き方教えるんだよ
まぁ開発はVSだから#pragma onceしか書かないから知らんかっただけっすけどね・・・

784 名前:名前は開発中のものです。 mailto:sage [2014/05/14(水) 00:50:31.19 ID:qOCHvgWh.net]
>>756
>>663

ついでにnamespaceにぶち込んでもいいのよ

785 名前:名前は開発中のものです。 mailto:sage [2014/05/14(水) 00:53:50.93 ID:qOCHvgWh.net]
>>761
gccでもいつの間にかpragma once使えたりするんだよな
あれ、サッサと標準仕様に盛り込めばいいのになと思うよ

786 名前:名前は開発中のものです。 mailto:sage [2014/05/14(水) 01:34:53.87 ID:Bv7wzu+p.net]
だいたいのコンパイラが対応してるみたいだしデファクトスタンダードってところ



787 名前:名前は開発中のものです。 mailto:sage [2014/05/14(水) 02:44:20.77 ID:SkdpMvQe.net]
効率的には#pragma onceの方がいいと聞いたことはあるが
IDEによるかもしれん

788 名前:名前は開発中のものです。 mailto:sage [2014/05/14(水) 03:12:47.17 ID:YePF79fh.net]
単純なi nclde guard は力技の処理だけど
pragma once は処理系次第で最適化されてるからね。

複数のプラットフォームを想定するなら
安全策をとって両方記述するのがオススメ。
pragma once があれば効率的に処理してくれるかもしれないし、
もしpragma once を理解できない処理系でも
inlude guardは必ず処理してくれるからね。






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

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

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