C/C++ゲーム製作総合スレッド Part1 at GAMEDEV
[2ch|▼Menu]
[前50を表示]
100:名前は開発中のものです。
12/05/29 08:36:02.60 ajD2ZMcH
>>99
Bを、Aのコンストラクタの中でBのコンストラクタに引き数を渡して、初期化をしたかったんですが
iniメソッドを別で作ったほうがいいですか?

101:名前は開発中のものです。
12/05/29 08:36:41.71 ajD2ZMcH
vector(´・ω・`)・・・

102:名前は開発中のものです。
12/05/29 09:06:33.41 HdwzMGJO
vectorでポインタ持たせた方がずっと良い。
動的なサイズ変更とか楽だし。
コンストラクタでnewしてデストラクタでdeleteすれば
別にインスタンス管理で悩むことも無いし。

103:名前は開発中のものです。
12/05/29 09:12:31.28 WcnaYjLE
>>100
Aのコンストラクタ内で
m_b = new B[size];
for (int i=0;i<size;i++)
 m_b[i] = B(b);
とすればいいと思うけど、俺なら確実にメモリリークする自信がある

104:名前は開発中のものです。
12/05/29 09:37:49.28 8hClbexe
>>103
sizeをconstにすれば大丈夫な気がしてきました!
ありがとうございます!

105:名前は開発中のものです。
12/05/29 11:11:05.67 kEO6PQW4
そもそも同じ引数でいいなら配列版のplacement newてのがあってだな
delete要らないったってデストラクタに意味があるとか使わなくなったから消したいときは
デストラクタとplacement deleteを両方呼ばなきゃいけないし
結論としてvector使え、管理面倒ならvector<shared_ptr<T> >

106:名前は開発中のものです。
12/05/29 11:31:41.26 HdwzMGJO
vectorだと要素数が固定じゃなくても、size()があるしね。
別のコンテナでもイテレータがあるし。
頑なにvector回避する理由なんて無いだろ。

107:名前は開発中のものです。
12/05/29 11:54:40.08 0OI7v8Tb
そもそもSTLを回避してる理由ってなに?

108:名前は開発中のものです。
12/05/29 13:18:32.52 3ho6bi3y
コピーコンストラクタが分かっていないとか、
デストラクタの呼ばれるタイミングを理解していないとか、
メンバのポインタがコピーされて二重解放するとか、
仕様を分かっていない馬鹿がバグを出すには十分だからだろう。
無能だからSTLを使わない、その理由に疑問の余地は微塵も無い。

109:名前は開発中のものです。
12/05/29 14:08:39.03 ydqxZFnO
言えてる気がする。
俺もどっちかっつーと馬鹿な方だから、STLが怖くて
自作のコンテナ使ってる。

出来合いのものを使った方が機能も多くて堅牢で
ずっと良いんだろうけどさ。

110:名前は開発中のものです。
12/05/29 16:51:46.79 HdwzMGJO
>>109
漏れも最初はそうだったけど、使い始めると一瞬で慣れるよ。
ググったら日本語で解説や使用例が山ほどヒットするのがデカイ。

111:名前は開発中のものです。
12/05/29 17:43:50.08 uK14SeXM
STLごときで上級者気取る奴は明らかに初心者

112:名前は開発中のものです。
12/05/29 17:47:49.24 ajD2ZMcH
>>103
これってコンストラクタ??
引き数を渡してるの?

113:名前は開発中のものです。
12/05/29 18:28:57.24 WcnaYjLE
>>112 >>103
Aのコンストラクタ内で、Bのコンストラクタに引数渡して初期化してる
m_b … Aのメンバ変数のBの配列
size … Bの配列のサイズ。Aのコンストラクタの引数とか
b … Bのコンストラクタの引数

114:名前は開発中のものです。
12/05/29 18:35:32.92 ajD2ZMcH
>>113
コンストラクタの返値を代入してるように見える・・・
「コンストラクタは特殊で、こういう使い方もできる」
って理解でいい?

115:名前は開発中のものです。
12/05/29 19:06:36.23 CIJM7t3P
一時オブジェクトをコピーコンストラクタでコピーしてる

116:名前は開発中のものです。
12/05/29 19:12:41.63 ZxX1trWI
むしろそっちのやり方のほうがSTLコンテナより高度

117:名前は開発中のものです。
12/05/29 19:18:19.05 CIJM7t3P
いやどっちも全然高度じゃないし

118:名前は開発中のものです。
12/05/29 19:33:39.81 oMsrWIHY
メモリプール&自作動的配列か

119:名前は開発中のものです。
12/05/29 19:36:33.07 HdwzMGJO
俺もさっぱりわからん。placement_newとかなんぞやw
オブジェクトの配列なんて普段STLコンテナしか使わないですしおすし

120:名前は開発中のものです。
12/05/29 19:58:54.63 5CsBVBDy
新しい大統領ってことだよ

121:名前は開発中のものです。
12/05/29 20:55:06.94 ajD2ZMcH
>>115
なるほど!
あと最後に質問なんですが
B(b)って実態できないですか?

122:名前は開発中のものです。
12/05/29 21:06:49.97 ajD2ZMcH
これはできるのでしょうか?

class krasuA{
 int hoge;
 kurasuB* B;

 kurasuA(int tmphoge):hoge(tmphoge){
  for(int i=0;i<hoge;i++){
   new(&hugo+i) B(/*Bのコンストラクタの引き数*/);
  }
 }
};

↓これをちょっと変えたんですけど
URLリンク(marupeke296.com)

123:名前は開発中のものです。
12/05/29 21:23:59.83 5MrgPwME
placement new とか 引数付きコンストラクタはできれば避けたほうがいいな。

124:名前は開発中のものです。
12/05/29 21:36:10.64 5MrgPwME
>>122
できないよ。全くもっておかしい。


125:名前は開発中のものです。
12/05/29 22:13:10.43 ajD2ZMcH
間違えました
hugoじゃなくてBでした

126:名前は開発中のものです。
12/05/29 22:27:07.32 ajD2ZMcH
あ、違う
new(&B+i) kurasuB(/*Bのコンストラクタの引き数*/);
こうでした。
int型を足すのがよくわからないですが、リンク先の文章ではクラスの配列をintでずらしてましたし・・・

127:名前は開発中のものです。
12/05/29 23:19:35.98 Rb8xQrUK
こうやって理解しないままでたまたまコンパイルできちゃったときにバグが蓄積されていくわけだな

128:名前は開発中のものです。
12/05/29 23:27:07.76 CxAL5fmd
どうも2Dキャラの画像パターンが早いと思ったら>と<が逆だった、紛らわしい
ifとかだと逆になるんだっけ

129:名前は開発中のものです。
12/05/29 23:41:16.87 ajD2ZMcH
*kurasuB B;
int Bnum
kurasuA(int num){
Bnum=num;
for(int i=0;i<num;i++){
 B[num] = new kurasuB("aa");
}
}

これじゃダメっていう

130:名前は開発中のものです。
12/05/30 00:30:51.36 2jOUDrUI
悪いことは言わん
Placement newのことはひとまず忘れるんだ

131:名前は開発中のものです。
12/05/30 01:33:55.24 UrD0aw2e
配列とポインタが全然わかってないのが致命的。
もっと初心者向けのやり方でやれ(つまり初期化の関数作れ)

int karasu_num = 100;
Karasu* karasu_list = new Karasu[100];
for(int i=0;i<karasu_num;i++){
 karasu_list[i].Initialize("oh...yea...oh...yes...!");
}

132:名前は開発中のものです。
12/05/30 01:47:19.26 UrD0aw2e
ちなみに placement new だと。

for(int i=0;i<num;i++){
new( B+i ) kurasuB( "aa" );
}

133:名前は開発中のものです。
12/05/30 07:05:58.24 ZKjgmpWL
で、それが出来るとどんなゲームが作れるの?

134:名前は開発中のものです。
12/05/30 07:48:00.61 UrD0aw2e
無能には作れないゲームがつくれます

135:名前は開発中のものです。
12/05/30 08:22:42.69 1zhA8gll
>>131
じゃあ>>132のほうが簡単じゃないですか
numをconstにすれば多分安全ですし・・・

136:名前は開発中のものです。
12/05/30 08:28:13.88 NLDozPhE
CRASS **Crass;
Crass = new *CRASS[Num];
for(i=0;i<Num;i++)

Crass[i]=new CRASS;


137:名前は開発中のものです。
12/05/30 08:37:55.19 kfkMhAbK
少々くどいな
そろそろ他の話題が出てこないかな

138:名前は開発中のものです。
12/05/30 08:54:24.92 dGAr2JTI
非ポインタ配列・コンストラクタで初期化値渡す、ってのに拘ってたら
何時までたってもゲーム作れんぞ。
コーディング中にゲームデザインの見落とし・見直しで嫌ほど悩むのに。

ポインタでの管理が安全じゃないって思うのは単に理解不足。
九九の答えが合ってるか分からないから足し算で計算するのと同レベル。

139:名前は開発中のものです。
12/05/30 09:35:26.80 AhB/MNAS
動いたとしてもメモリリークしまくってそう

140:名前は開発中のものです。
12/05/30 09:52:37.13 UrD0aw2e
>>135
俺がそちらを進めるのは彼がポインタや参照を理解してないとみたから。
質問の文からみて非常に程度が低い。
とりあえず無難なやりかたで進めながら勉強するか、一生無理だね。。

141:名前は開発中のものです。
12/05/30 10:10:01.57 RKjVMfvb
ポインタと参照がわからずつかえないなら
VBでやったほうがわかりやすいし生産効率あがるとおもう
VBで不便に感じたことがCのポインタで便利になったと思え
理解がはやいんじゃないかな


142:名前は開発中のものです。
12/05/30 11:23:54.10 PCmhSwHy
>>140
それぼくです(´・_・`)

143:名前は開発中のものです。
12/05/30 15:00:40.72 7evXqAvV
少し前までシーン遷移は継承したクラスのポインタでやってたが
最近テンプレートの特殊化を知って少しずつ処理を置き換えてる

多少手間増えるけど、コンパイル時にエラー出してくれるのはやっぱいいね

144:名前は開発中のものです。
12/05/30 15:48:03.89 RKMJ5hGw
>>149
具体的にどんなん?

145:名前は開発中のものです。
12/05/30 16:08:58.02 P0UtVE4F
みんな頭良さそうだな、俺なんて順次選択繰り返しのゴリ押しだけでゲーム作ってるのにCプログラマ名乗ってるわ

146:名前は開発中のものです。
12/05/30 17:46:30.28 UOZ4aZwc
ぶっちゃけ画像と音声と条件文あればどうにでも

147:名前は開発中のものです。
12/05/30 17:58:02.14 dGAr2JTI
この板ではC++だろうがHSPだろうがツクールだろうが
ゲームを完成させるのが一番大事。
ただ、C++選んでる奴は既存のシステムや
枠組みに囚われたく無い奴が比較的多いんだろうな。
となれば、それを実現するために
必要な知識や技術も自ずと増えていくわけで。

148:名前は開発中のものです。
12/05/30 17:58:19.30 rNjTrxi5
ジェネリックプログラミングか
本当に使いこなせるのは天才だけだと思ってる

149:名前は開発中のものです。
12/05/30 21:43:05.95 GqVx2abs
言語によって、
遅くて1秒間60フレ出ないとかGC対策が面倒とか、
ライブラリ自体に制約があってやりたいことができないとか、
いろいろ制約あるけど、まぁC++とDXライブラリならそういう制約は少ないから選んだわ

知識や技術は別に特別なものは必要ないと思ってる
他の言語と共通する程度と、あとちょっとC++独自のを知ってる程度で十分かと

150:名前は開発中のものです。
12/05/30 21:51:08.88 0SZX+VUb
>>149
で、ゲームできたの?


151:名前は開発中のものです。
12/05/30 22:10:25.90 P0UtVE4F
この板の中じゃどこ行っても万能すぎるお決まりの文句だよな

152:名前は開発中のものです。
12/05/30 22:35:35.79 GqVx2abs
>>150
鋭意製作中w

153:名前は開発中のものです。
12/05/30 22:58:58.18 vC8mOnYT
一番簡単なのってHSP?DX?

154:名前は開発中のものです。
12/05/30 23:03:34.46 GqVx2abs
小さい仕様であればあるほどHSPのほうが簡単になる
規模が大きくなって、HSPだとめんどくせーってなったらDXライブラリもいい

155:名前は開発中のものです。
12/05/30 23:10:22.61 dGAr2JTI
HSPってクラス扱えないんだよな?
俺には無理w

156:名前は開発中のものです。
12/05/30 23:11:36.82 gc4Q0khA
>>151
でも、他人があえて言う意味って無いよな

157:名前は開発中のものです。
12/05/30 23:14:19.90 e5z2kRn1
モノを完成させたことも無いヤツが、かじった程度で御託を並べるなと言うことだろう。

158:名前は開発中のものです。
12/05/30 23:28:49.34 GqVx2abs
ま、そういうこったなw
小さい仕様のは作ったけど今作ってる奴は完成してないからな

159:名前は開発中のものです。
12/05/31 00:03:48.81 qSE9w4FD
javaとかC#でゲーム作ったことないのにGCがどうこうとかね。
C++の80%が遅いのに、遅いDXライブラリを使う不思議。

160:名前は開発中のものです。
12/05/31 00:09:04.71 3lgmsZci
作った作ってないって言っても0か1じゃねーんだし。
俺は数本ほど2Dゲームを作った経験があるけど、「どうせミニゲームだろ」と思われるだろうだけだろう。

ぶっちゃけミニゲームかそうでないかは、データ量の違いがほとんどを占めると思うけどw

161:名前は開発中のものです。
12/05/31 00:09:52.31 X2kmab9H
横アクション作ってるんだけどジャンプ中に移動が出来なくて困った
ジャンプ処理と移動処理はやはり両方通るようにしないとダメか



162:名前は開発中のものです。
12/05/31 01:16:53.38 3lgmsZci
本来、ジャンプ中に移動できるほう(いわゆるスーパーマリオジャンプ)がおかしいんだけどねw


163:名前は開発中のものです。
12/05/31 06:17:31.08 k8PTBoUk
魔界村はジャンプ中に移動できないが、
あれはプログラマが初心者だったからなのか・・・


164:名前は開発中のものです。
12/05/31 07:18:02.09 M5YppKNB
まあジャンプの出来に関しては作り手のこだわり次第だろ
デコジャンプで面白いゲームもあれば放物線でもつまらないゲームもある

165:名前は開発中のものです。
12/05/31 08:43:38.66 98ut8STl
ジャンプはステージのデザインと切り離しては考えられないしな

C++は処理速度・ライブラリの豊富さ・エラーチェック・日本語がまともに通る、点に魅力感じるなぁ
HSPは「メインループとはなにか?」ってレベルの勉強には使えるかもだが、それ以降は・・・

>>160
そういやミニゲームって何だろうな
RPGの中にポーカーが入っていれば明らかにミニゲームだが
ではポーカーゲームはミニゲームなのか? とか。まあスレ違いだが

166:名前は開発中のものです。
12/05/31 20:55:45.16 qCagfYPX
リアルでないこと、現実シミュレーションと違うことが、
ゲームの面白さに繋がることもあるよな
と思ったがこれもまぁスレチか

167:名前は開発中のものです。
12/05/31 21:53:32.35 AsMcXKmB
繋がることもあるってなんだよw
現実シミュレーションが面白さに繋がってるゲームなんて一握りしかないだろう
だったら現実でやれって話

168:名前は開発中のものです。
12/05/31 22:44:36.71 qCagfYPX
放物線・現実シミュレーションが面白いゲームもあるし、
ジャンプ中に移動できるジャンプが面白いゲームもある

片方が一握りしかないとか、前者をやれ、とかは思わんなあ

169:名前は開発中のものです。
12/05/31 23:12:19.50 tiWdIkDb
現実でFPSをやったら殺人罪になるし、
カーレースをやったら事故死か白バイのお世話になるし、
ジャンプアクションをやったら転落死するし、
恋愛シミュレーションをしたら変態になる。

170:名前は開発中のものです。
12/05/31 23:38:40.80 CSiaqjKe
おまいらはboost使ってる?

171:名前は開発中のものです。
12/05/31 23:41:56.86 XVqRqiij
なんですかそれは

172:名前は開発中のものです。
12/05/31 23:49:58.12 aJXCPyxU
>>170
ゲームそのものでは、あんまり使った記憶ないなあ。
それ以外だと正規表現とか使いまくってるけど。

173:名前は開発中のものです。
12/05/31 23:56:05.31 uky8HTVF
DXLibとか時代遅れのライブラリなんかより
OgreとかBulletとか使ってるひとおらん?
今はまあC++とかよりUnityやunreal engineの時代なのかもしれんけど

174:名前は開発中のものです。
12/06/01 00:06:38.86 2hjVHnyz
流行に流されない俺様は自前ライブラリを使っていますよ?
人間、使い慣れた道具が一番でしょ。


175:名前は開発中のものです。
12/06/01 00:18:08.05 jiOBWGhf
unityとか何それ、美味いの?レベル。
物理エンジンはとにかく、
他はインターフェースの面でしか楽にならんでしょ。
インターフェースのウェイトが重めのゲームとは縁が無い。

176:名前は開発中のものです。
12/06/01 00:22:36.93 TU92J+Oa
>>173
ogreは機能豊富だけどapiデザインはもう時代遅れ
対応プラットフォームも最近だと物足りない
あえて今使う理由はないかな

177:名前は開発中のものです。
12/06/01 00:23:33.07 jiOBWGhf
>>172
なんか使えそうで使わないんだよね。
最近、シリアライズで使おうと思ったんだけど、
随分ややこしそうな処理してるんで結局やめた。
スマポで使ってる話は聞くけど、俺スマポ使わんし。

178:名前は開発中のものです。
12/06/01 00:27:03.18 fycJbMU0
>>176
今だとC++ではどんなのがタイムリーなの?

179:名前は開発中のものです。
12/06/01 00:57:23.11 GysQPsBs
>>176
具体的にどの辺りが時代遅れなの?

180:名前は開発中のものです。
12/06/01 03:56:37.85 bIBm1EvQ
>>169
それらが現実シミュレーションだって?冗談だろw

181:名前は開発中のものです。
12/06/01 06:12:45.95 YzCF0h/I
>>175
unity以外にwin, mac, ps, xbox, iphone, androidに対応してる
エンジンなんかあるのか?


182:名前は開発中のものです。
12/06/01 07:14:24.44 2hjVHnyz
急にステマがわいてきたな

183:名前は開発中のものです。
12/06/01 07:18:32.15 U3o9Kj54
>>170 Xpressive使ってる

>>173 Irrlicht使ってる。新しくはないが素直でいいエンジンだと思う
日本語には弱いけどね

RPG作ろうとしてるんだがゼロから作るとデータの保存・読み出しが面倒だ
Xmlで保存しちまうかw

184:名前は開発中のものです。
12/06/01 08:00:25.82 LAk2EFKF
>>181
そんなに対応する必要あるの?

185:名前は開発中のものです。
12/06/01 08:24:20.72 zQI52x1x
>>184
macはいらないけど、その他は必要でしょ。


186:名前は開発中のものです。
12/06/01 08:35:27.13 TU92J+Oa
>>181
shiva + marmaladeならもっと範囲は広いのではないかと思うが、
marmaladeのゲーム機サポートは最近情報が隠れ気味...
今はideaworkgamestudioチームによる個別移植が必要なのかも。昔はそんなことなさそうだったのだけれど。

187:名前は開発中のものです。
12/06/01 08:42:49.00 46HM1XVZ
>>185
winか携帯だけでいいんじゃね
インディーズでxboxならxnaのほうが楽につくれるし
ps3は会社で専用やつがきまってることがほとんどだし

188:名前は開発中のものです。
12/06/01 09:55:01.79 jiOBWGhf
>>181
現状、windows向けにしか興味ないですしおすし

189:名前は開発中のものです。
12/06/01 10:00:27.62 XmKAMpEh
Ogre触っているけどそれよりもナウなライブラリがあると聞いて

190:名前は開発中のものです。
12/06/01 10:19:57.82 TU92J+Oa
>>189
gritとかmaratisとか
機能面ではogreユーザーには不足かもね

191:名前は開発中のものです。
12/06/01 11:52:56.10 3z3bXcMg
海外のゲームエンジンはメジャーなものでもフルスクリーン切り替えができないものがあって驚く。

>>190
gritは内部でogre使ってるって書いてるような。

192:名前は開発中のものです。
12/06/01 13:51:27.62 TU92J+Oa
>>191
内部で、ね

193:名前は開発中のものです。
12/06/01 14:10:59.17 fDBKT1KS
>>190
ありがと、今度みてみるわー

194:名前は開発中のものです。
12/06/02 18:30:36.97 o2lhntQH
フルスクリーン対応って今更必要か?
液晶モニタももはや新品はHDしか売ってないし、規格は統一されてないみたいだし

195:名前は開発中のものです。
12/06/02 18:34:50.83 JwZ2BVqY
C/C++と関係するかは微妙だが…
コアなプレイヤーからの要望があって初めて搭載を検討するくらいでいんじゃね

196:名前は開発中のものです。
12/06/02 18:43:21.55 yH+d3ni3
その場合ティアリングはどうしてるんかな?


197:名前は開発中のものです。
12/06/02 18:51:16.02 a4OlxP0h
>フルスクリーン対応って今更必要か?

少なくとも俺はフルスクできないゲームはやる気がかなり減退する。
目が悪いからできるだけでかい画面でやりたいし、
全てのPCユーザーが最新環境もしくはそれに近いスペックの環境でやってるわけではない。

198:名前は開発中のものです。
12/06/02 19:15:04.43 /NYjtNV7
PS3でゲームアーカイブスを遊んだり、3DSでDSゲーを遊んだりするとき、
画像サイズを無理やり引き伸ばすか、それとも整数倍(1倍含む)にしてレターボックスにするか設定できたりするけど、
前者の需要はかなり多いと聞く。

199:名前は開発中のものです。
12/06/02 20:07:09.97 JwZ2BVqY
画像サイズを任意サイズに引き伸ばすのは割と優先度高い機能と思う
フルスクリーンなしでも、画像引き伸ばしのほうは必須に近いかと

200:名前は開発中のものです。
12/06/02 21:11:23.06 Fx7ZWIqp
液晶ディスプレイが普及している現在、最適解像度以外に変更するようなフルスクリーン化をするぐらいなら、
最上位ウインドウを全体に展開して、プログラム側で画像を調整するべきだろう。

201:名前は開発中のものです。
12/06/02 22:32:20.69 myF5RtO5
全てのプレイヤーが「最適解像度」を意識してるわけじゃない。
そんなの一部のマニアくらいだ。

「最上位ウィンドウを展開して〜うんぬん」ができるのは良いとして
それとは別にフルスクリーンモードをできるようにすればいいだけなのに
それをしないのは作り手の怠慢だ。


202:名前は開発中のものです。
12/06/02 22:51:41.46 j4ElIJFU
4:3の映像を16:9に引き伸ばしてデブったキャラに違和感を感じないんだろうか・・・
上下移動より左右移動の方が速かったり・・・

203:名前は開発中のものです。
12/06/02 22:58:05.13 JwZ2BVqY
1)「フルスクなし、引き伸ばしなし」 →NG
2)「フルスクあり、引き伸ばしなし」 →NG
3)「フルスクなし、引き伸ばしあり」 →OK
4)「フルスクあり、引き伸ばしあり」 →OKだがそこまで手間かけなくてもいいよ
こんなとこ

204:名前は開発中のものです。
12/06/02 22:59:09.90 QK2zXOEH
解像度やアスペクト比って
それなりに柔軟に対応出来るように作るもんじゃねーの…?
と思ったけど完全2Dゲームは黒縁いれなどうにもならんのかね

205:名前は開発中のものです。
12/06/02 23:02:11.37 myF5RtO5
フルスクリーンってひょっとしてディスプレイの大きさに完全一致させる事を言ってるのか。
フルスクリーンを望む人間がそれを望んでいると思うのか。
黒縁ありでアスペクト比優先に決まってるじゃん。

206:名前は開発中のものです。
12/06/02 23:04:55.36 JwZ2BVqY
・ゲームの解像度が画面の解像度に比べて小さすぎてプレイに支障をきたす
・アスペクト比が違っていてプレイに支障をきたす
この2点について対策するのは、必須に近いな
引き伸ばしできればこのあたりはできる

207:名前は開発中のものです。
12/06/03 00:23:21.31 3U3UPjhL
スレ違い

208:名前は開発中のものです。
12/06/03 01:12:58.58 aP5ZetOZ
javaでAndroidSDK触ってきたけどなんだアレ難しすぎワロタ

209:名前は開発中のものです。
12/06/03 01:13:07.02 v/OzWZ4D
対応できる言語が他にはあまり無いだろ
全く無いとまでは言わないが


210:名前は開発中のものです。
12/06/03 01:13:34.79 aP5ZetOZ
やっぱC++でコードいじってる方が性に合うわ

211:名前は開発中のものです。
12/06/03 08:47:32.70 UydZV2Td
3Dゲームなら4:3にも16:9にも対応してないと困る。
3D部分はカメラのパラメータいじるだけだし。
GUIのレイアウトがちょっと面倒だが。


212:名前は開発中のものです。
12/06/03 09:19:16.35 v/OzWZ4D
Windows2Kも見捨てた事だし、4:3も見捨てるかな?
どうせ完成までには時間もかかるし

213:名前は開発中のものです。
12/06/03 09:29:33.79 UydZV2Td
4:3モニタだと香港映画のエンドロールみたく縦長になるの?w


214:名前は開発中のものです。
12/06/03 09:52:01.34 XtOj+Vwn
DbD、アス比固定、全画面の選択はビデオカードもしくはディスプレイの仕事だから下手に弄る必要ないよ

例外として、ドット絵系のゲームが拡大されてぼけぼけになるのを防ぐために必ずゲーム側でNN法で拡大したいとか、
画面の大きさによってゲーム内で見える範囲を変えたいとか、3DならGUIの大きさだけ小さいままにしたいとかなら弄らないといけないけどね

「画面が小さいからプレイに支障をきたす」ということで拡大したいならゲーム側での処理は一切必要ない
もちろんフルスクリーンとウィンドウモードを切り替えるオプションは必要だけどな

215:名前は開発中のものです。
12/06/03 10:29:18.59 VQ0xfCpl
スレ違いか微妙なところだな
ブラウザゲーでは考慮のいらない部分だし
C/C++以外の環境ではあまり問題にならない部分か

個人的には、ゲーム側に拡大機能がついてないと困るわ
わざわざ拡大するフリーソフトが存在する理由はそれだし
しかも、そのソフトでも拡大できないゲームとかあったりして困るわ

216:名前は開発中のものです。
12/06/03 10:35:05.15 cJiiOnF4
2Dエフェクトとか3Dエフェクトって作るの難しいな…微妙な差が違和感を産む
もしかして自分で作成ツールとか作るのが普通なのか?

217:名前は開発中のものです。
12/06/03 10:41:19.26 J6YmoIaF
>>216
モンハンのような血しぶきがつくれなくてこまっています

218:名前は開発中のものです。
12/06/03 13:25:57.94 XtOj+Vwn
>>215
普通のPCならグラボかモニタで設定できるだぞ?

5年以上古いビジネス用途のノートパソコンとか使ってるんだろうが
ゲームするならまともなやつに買い替えたほうがいいよ

219:名前は開発中のものです。
12/06/03 14:07:41.96 4q6OEElb
>>218
そういうもんなのか、初耳だった

220:219
12/06/03 14:29:44.36 4q6OEElb
ああ失敬、フルスクリーンでか。
拡大機能っていうからウィンドウモードでの話かと思ってた。

それならグラボなりモニタ任せってのは1つの方法だよね。
多くのモニタ/グラボが対応してる解像度を選ぶなら、1920x1080とかになっちゃいそうだけど…。
つい最近、昔の320x240のゲームをフルスクで起動したら、見事に真ん中に小さく表示されてしまったのを思い出した。

洋ゲーとかその辺しっかりしてる印象があるけど、デュアルモニタ絡みになると結構バラバラのような。

221:名前は開発中のものです。
12/06/03 15:52:09.21 XtOj+Vwn
対応してる解像度って何の話してんだ?
どんな解像度だろうがスケーリングはできるだろ

>つい最近、昔の320x240のゲームをフルスクで起動したら、見事に真ん中に小さく表示されてしまったのを思い出した。
これはスケーリングの設定をDbDにしてるからだろ
嫌なら他の設定にすればいいのに意味がわからん

222:名前は開発中のものです。
12/06/03 16:03:02.78 /Di23sVK
>>217
赤い点をばら撒くだけでいい

223:名前は開発中のものです。
12/06/03 16:29:41.17 dCvIbGe4
newとかmallocでちゃんとエラー処理してる人っている?
ってかメモリ確保失敗って実際問題起こる?

224:名前は開発中のものです。
12/06/03 17:56:48.59 v/OzWZ4D
エラー処理って言ってもログ出すぐらいだな。
ちなみに、細かい動的メモリー確保で起きるフラグメンテーションには自前でGC作って対応した。

225:名前は開発中のものです。
12/06/03 19:26:32.14 lfTPN7Pn
起きないだろ。
メモリ足りなきゃOSがHDD使って仮想メモリをいくらでも作るはず。
それにプレイヤーが推奨動作環境でプレイしていれば
まずメモリが足りなくなるはずないし、普通は必要ない。

226:名前は開発中のものです。
12/06/03 21:00:29.34 v/OzWZ4D
VCのヒープメモリーのサイズは10Mしか無いって知らないんだね
ちなみにnewやmallocはヒープメモリーだ
それ以上のメモリーを取得しようと思ったら、VirtualAllocを使わないと駄目だよ

227:名前は開発中のものです。
12/06/03 21:14:18.66 v/OzWZ4D
間違えた。ヒープのサイズは1Mだった。

228:名前は開発中のものです。
12/06/03 21:20:15.72 ufFTQ137
スタックサイズと間違えてるだろ明らかに・・・

229:名前は開発中のものです。
12/06/03 21:22:27.91 Y5aEM5Jb
>>226
そんな事実はない。VirtualAllocのがぎりぎりまでとれるのは事実だけど管理も全部自分でするはめになるぞ

230:名前は開発中のものです。
12/06/03 21:26:33.66 Y5aEM5Jb
>>228
いや、初期値はそれで合ってる。仮想メモリの上限がくるまでどんどん拡張される仕様

231:名前は開発中のものです。
12/06/03 21:27:17.84 cJHhyghN
ヒープが1Mってw
20年前かw


232:名前は開発中のものです。
12/06/03 21:30:41.62 v/OzWZ4D
>>228
VC2010とヒープで検索してみ?
っつ〜か、携帯からの入力は疲れるな

233:名前は開発中のものです。
12/06/03 21:37:01.71 v/OzWZ4D
>>230
何処に拡張されるって書いてあるの?

234:名前は開発中のものです。
12/06/03 21:40:50.99 +Cd4NORe
Windows で new の仕様としてHeapAlloc を呼ぶ
HeapAlloc はヒープサイズが足りなくなったらVirtualAlloc を呼ぶ

235:名前は開発中のものです。
12/06/03 21:44:36.31 v/OzWZ4D
ソースプリーズ

236:名前は開発中のものです。
12/06/03 21:48:02.82 +Cd4NORe
ごめんうそ書いた。確かめたら
new は足りなくなったら直接VirtualAlloc 呼ぶのね

237:名前は開発中のものです。
12/06/03 21:51:19.35 ufFTQ137
じゃあ、どっち道newでいいじゃん。
つか、32Mでも確保エラー俺のとこじゃ起きないけど。

238:名前は開発中のものです。
12/06/03 21:58:54.52 xWr54rm7
newとヒープは同じで、VirtualAllocは別物だね。
URLリンク(msdn.microsoft.com)(v=vs.85).aspx


239:名前は開発中のものです。
12/06/03 22:03:21.55 Y5aEM5Jb
>>233
実際やってみ。状況にもよるが数百Mぐらいは特に問題ないから

240:名前は開発中のものです。
12/06/03 22:27:01.07 Y5aEM5Jb
Win32の VirtualAlloc は仮想メモリから直接メモリを確保する機能で、
ページ単位の操作しかできないので細かい確保にはむかない。
100byte だけ欲しいと思っても 64kbとられてしまうので、
C++のオブジェクトの確保とかで使うとすごい無駄なことになる
静的なM単位の大容量データの確保用に使うのには向いてる

HeapAlloc は仮想メモリから確保したメモリを、
さらに小分けに管理して割り当ててくれる。管理のオーバヘッドと
引き替えに細かいメモリを効率的に使える。
VC++ の malloc や new はこの HeapAlloc で実装されてるはず

ただ、ヒープ系メモリはどうしても「断片化」がおこる。
合計ではメモリが余ってても、間に邪魔者がいると連続領域を確保できなくなる。
ゲームはわりとこの断片化をおこしやすい傾向があるので、
オブジェクトの寿命ごとにヒープを別グループで確保するのが
定番テクニックになる。C++ ではクラス単位で new を差し替えできるから、
そこで使うヒープを切り替えるようにする

Win なら HeapAlloc を直接使って別ヒープを確保する形で new を実装するか、
あるいはVirtualAlloc したメモリに対して dlmalloc などの
ヒープライブラリを使って実装することになる。


241:名前は開発中のものです。
12/06/03 22:52:52.00 dCvIbGe4
良く分からんけど、エラー処理は趣味の問題ってことでいいの?

242:名前は開発中のものです。
12/06/03 22:57:43.88 v/OzWZ4D
>>239
VisualStudio2005を使ってた頃、自作のスクリプト言語を作ってみた所、
数百行程度でフラグメンテーションによると思われる確保失敗を起こした。
ちなみにその頃のOSはxp。
で、GlobalAllocのGHNDを使って回避した。
Windowsが7になってもこの状況が変わったとは思えないんだがな……

243:名前は開発中のものです。
12/06/03 23:13:03.94 7gzK+eao
銃クラスが、兵士クラスのアドレス貰って銃クラスが当たり判定すべき?
それとも銃クラスから判定クラスに銃クラスの位置や角度を渡して判定させるべき?

244:名前は開発中のものです。
12/06/03 23:34:56.12 0GlelDaK
なになにする「べき」なんて方法は無い。
システムに合わせて一番実装しやすい方法を選択しろ。

245:名前は開発中のものです。
12/06/03 23:37:00.73 Y5aEM5Jb
>>241
メモリ確保失敗したら、基本続けるのは無理だろうから基本は即終了でいいんじゃないかと
全部解放してタイトルに戻るとかそういう工夫はしてもいいと思う

>>242
Win32以降のGlobalAlloc/LocalAlloc はHeapAlloc のラッパー関数です。領域も malloc と同じはず
GHNDすると再配置もしてくれてるからフラグメンテーションにならなかったってことではないかと。
そのかわりパフォーマンスはわりと落ちていたと推測します

スクリプト系は、作りにもよるけど、案外あっさり
フラグメンテーションの原因になるので、あらかじめ
リソースとはヒープわけるのが上策ですね

246:名前は開発中のものです。
12/06/03 23:38:27.61 xWr54rm7
>>241
メモリリークを引き起こさない自信があるなら、エラー処理しなくてもいいと思う
フラグメンテーションに関しては、頭の片隅にでも入れておけばいい。

247:名前は開発中のものです。
12/06/04 00:11:37.59 U4cKxLml
>>245
その辺りの推測は、大筋では当たってると思う。ただ、ちょっと疑問がね。
GlobalAllocのクリップボードでの使われ方の説明がつかない。そして、
GlobalAllocのGHND(正確にはGMEM_MOVEABLE)は64K個まで使える。
この意味理解できる?

おそらく、GlobalAllocのGHNDのヒープは、アプリケーションのヒープ領域
とは別に、OSが割り振ったヒープ領域を使ってる可能性がある。そのため、
下手にヒープ領域を使うよりもより多くのヒープ領域を使える可能性がある。

248:名前は開発中のものです。
12/06/04 00:18:22.31 suZpr76G
メモリ談義はいいんだが
C++ならnew/deleteにこだわるのはやめたほうがいいと思うぜ
URLリンク(www.libjingu.jp)

>>243
疑って悪いが、お前>>15じゃないだろうな?

249:名前は開発中のものです。
12/06/04 00:20:39.87 Em2GMpFA
>>248
そうだよ
似た質問しない方が良かった?

250:名前は開発中のものです。
12/06/04 00:48:35.66 suZpr76G
何回も同じような質問するのはまずいだろ

「やろとしたができなかった」とか「やってみたが効果がいまいちだった」とかなら
それを軽く説明してから改めて質問に入るべきじゃね

でなきゃ>>243だよ。相手する意味がないしな

251:名前は開発中のものです。
12/06/04 00:55:06.96 NFm2pd34
銃は発射するだけだろ。弾受け取って兵士が処理すりゃいい。
フルアーマーの奴と、裸の奴もおるだろ。

252:名前は開発中のものです。
12/06/04 01:12:22.83 5kM6hLnq
じゃあ生成したユニットデータに座標を持たせるのと、
マップの座標にユニット番号持たせるのどっちが良いのっと

253:名前は開発中のものです。
12/06/04 02:02:20.06 NFm2pd34
好みだろ

254:名前は開発中のものです。
12/06/04 05:46:34.75 BRzk8XkE
>>252
どっちも持たせる。


255:名前は開発中のものです。
12/06/04 07:59:01.95 weX4F0Ac
>>251
基本的に当たり判定って食らう側がするもんだよね

256:名前は開発中のものです。
12/06/04 08:37:58.08 kLL4aZzx
>>255
どっちでもやる事は一緒。


257:名前は開発中のものです。
12/06/04 08:47:58.63 Em2GMpFA
>>252
処理多くならない?

258:名前は開発中のものです。
12/06/04 08:48:30.58 alVEkGAv
この手の話って、常に正解を教えられて育ってきた人間が、精神病のごとく質問してくるよね。
自分で決めていいことなのに、自分で決められず、
誰かに正解を提示されないと不安で仕方がない心の病気にかかっているヤツ。

259:名前は開発中のものです。
12/06/04 09:49:57.78 TYJ+eYx9
それまで・これからのコーディングやゲームデザインによっても変わってくるしな。
その上で、この手法はこういうデメリットがあるし、
あの手法はああいうデメリットがあるし悩んでる。
っていうのを言えば、こういう方法があんじゃね?
ってことも言えるんだけど。
質問が大雑把過ぎるんだよな、結局。
恐らくデザインやクラス設計がイマイチ固まってないんだろう。

260:名前は開発中のものです。
12/06/04 10:15:50.33 kLL4aZzx
弾が速くて可変フレームレートの場合は、
前回の位置と今の位置との線分で当たり判定が必要だから、
弾を移動させるロジックと同時に判定もさせた方が
楽だと思うに一票。


261:名前は開発中のものです。
12/06/04 13:25:02.85 kY76Nlsr
銃の弾は、弾の移動でやったほうが楽だし
地雷の接触などはキャラが動いた時のほうが楽だし
楽なほうでやったらいいんじゃないかい
もしくは当たりイベントのスレッドをつくって統括するって方法もあるけど

262:名前は開発中のものです。
12/06/04 14:00:18.48 GfSYyx1Y
弾クラスには弾クラスだけで、兵士クラスには兵士クラスだけで
完結するメソッドを持たせて、存在する全ての弾と兵士にアクセスできる
判定クラスがあればいんじゃね?
mediatorパターンというか、トランザクションスクリプトというか
Cライクやり方をお勧めする。

class Judge {
Bullet* all_bullet_array;
Soldier* all_soldier_array;
void judge_all(){
for(...){...};
}
};

263:名前は開発中のものです。
12/06/04 15:48:15.62 nQ9KtldE
FPSなら線分で良さそうに思えるが
毎フレーム接触判定してるもんなのかな

264:名前は開発中のものです。
12/06/04 16:20:02.21 GfSYyx1Y
3Dかどうかもわからんが、彼のレベルからすると
ファミコンマリオぐらいのアクションゲームだと思う。

265:名前は開発中のものです。
12/06/04 20:21:19.07 NFm2pd34
シミュレーションかもしれんぞ

266:名前は開発中のものです。
12/06/04 20:30:56.37 QyF/fiyn
マリオって作るの結構難しいよね
あのジャンプなんだよ

267:名前は開発中のものです。
12/06/04 21:55:13.21 q0NKYXAt
ジャンプ中、亀を蹴って飛び上がれるときと当たって死ぬときが
あるけどどういう判定にしているのかみたいな話題がどっかのスレであったな

268:名前は開発中のものです。
12/06/04 22:06:41.15 5kM6hLnq
>>257
射線1マスごとにユニット表総舐めする前者と
行動主を特定するのにマップを総当たりする後者
冗長構成の一貫性さえ保てればイイトコ取りの>>254

好きなのを選ぼう!

269:名前は開発中のものです。
12/06/04 22:40:23.00 l61wSE5A
ユニットスタックの概念がなかったら後者の方が単純でわかりやすいけど、
汎用性とか考えたら前者の方がよいんじゃないかという気がするな。

まぁ今のPCならメモリ不足はあまり心配する必要ないんだし、
前者をベースに後者の「ユニット判定専用マップ」を用意するってのが
いろいろできていいかも。

270:名前は開発中のものです。
12/06/04 23:31:53.31 gSaZzhQ+
リアルテイストの競馬育成ゲームで毎年生まれる馬3万体の
遺伝データをずーっとメモリに持たせたらとんでもないことになった思い出

271:名前は開発中のものです。
12/06/05 07:03:53.84 5hghPcJi
どうなったんです?

272:名前は開発中のものです。
12/06/05 19:54:18.88 X1AjLJeN
正直初心者にはマリオですらアクションゲーは無謀だと思う
まずはWizみたいな探索ゲーを作るべき

273:名前は開発中のものです。
12/06/05 19:57:18.38 AKltwP6Q
おいおいw Wizは難易度高いだろ。
最初はパックマンか倉庫番でいくべし。

274:名前は開発中のものです。
12/06/05 20:14:39.78 X1AjLJeN
そうかな
シーン管理と変数配列構造体辺り出来れば割りとなんとかできそうなんだけど

275:名前は開発中のものです。
12/06/05 20:35:08.86 s+a7RtxR
探索だけなら簡単だな。
1マス未満の移動を出来るようにするとか、戦闘やらイベントを加えると途端に面倒だと思う

276:名前は開発中のものです。
12/06/05 20:57:04.12 rQvv9pU4
宣言用.hと定義用.cpp作って
そこにexternで変数関係ぶち込むと凄い楽できることに気付いた
単純なミニゲームとかなら楽に作れそうだけど何か穴とかあるのかな

277:名前は開発中のものです。
12/06/05 21:12:18.32 s+a7RtxR
単純なミニゲームならそれでいいんじゃね。
規模に比例して、デメリットが大きくなると思うけど。

278:名前は開発中のものです。
12/06/05 23:39:25.37 mjwjZU1k
>>276
関数外のstaticの使い方とか覚えると、さらに世界が広がる
>>277
デメリットって?

279:名前は開発中のものです。
12/06/05 23:46:14.46 mjwjZU1k
>>236
ソースプリーズ
new はVirtualAllocを呼ばないだろ

280:名前は開発中のものです。
12/06/06 00:15:24.25 yfcMlTbU
extern自体あまり使うべきじゃないよな...

281:名前は開発中のものです。
12/06/06 00:31:44.41 s5fJFGX+
>>278
「グローバル変数 弊害」などでぐぐると沢山の資料が出てくるので、そちらを参考にされたい。
名前空間やシングルトンパターンなどの利用で回避できる部分もあるけどね。


あと、プログラミングにおける有名な考え方(哲学)の1つなんだけど。
ざっくり言うと、「オレ専用のモノはオレだけが知っていればいい」という考え方がある。

例えばfor文で使ってる変数iとか、他のところから見て何の価値も無いよね。
単にどうでもいいってだけじゃなく、価値のない情報が溢れかえると肝心の情報が埋没するというデメリットがある。
本当に必要なものだけを選別しないと、それこそ狼少年みたいに重要なことが見過ごされてしまうかもしれない。

ミニゲームのうちは、そういった無価値な情報が多少あっても問題にならない。
でも規模が大きくなると、相対的に不要な情報が増えてくるんだ。

282:名前は開発中のものです。
12/06/06 00:57:04.37 0Qe/6ch0
木の葉を隠すなら森の中

283:名前は開発中のものです。
12/06/06 05:05:34.22 F+8wYuiU
デバイスまとめクラスは
オレオレ名前空間内のstaticなグローバルオブジェクトにしてるな

どの程度正しく作るかって難しいよな

284:名前は開発中のものです。
12/06/06 06:13:10.68 BB9r7cef
>>274
迷路自動作成ロジックはどうする?


285:名前は開発中のものです。
12/06/06 07:30:32.76 B+n3k45G
>>281
例えばだけど、規模が大きくても付けた変数名を絶対に忘れない人が一人で作れば問題ないよな
場合によっちゃそこらへんのツールで重複調べられるしな

286:名前は開発中のものです。
12/06/06 07:45:33.71 LQ8HTB51
グローバル変数名は頭に「g_」を付けましょう。


287:名前は開発中のものです。
12/06/06 09:05:26.97 mjTHO3b4
>>285
ホントに「例えば」だな。クラス設計が分からない時、
やたらグローバルな変数を宣言してたが見事に破綻したよ。

288:名前は開発中のものです。
12/06/06 09:28:51.13 yfcMlTbU
>>285
「人によってはなんとかなることもあるから開発効率落としてみてもいいだろ。俺もそのなんとかなる人の一人かもしれないし」
こういうこと?

289:名前は開発中のものです。
12/06/06 10:15:18.79 WiOpGBsA
名前空間+グローバル変数は結構使いやすい。

.hと.cppをめんどくても分けるのは
相互参照でコンパイル通らないC++の都合だね。

290:名前は開発中のものです。
12/06/06 12:11:44.97 Ez398/8e
なんだかんだで「変数はクラスに入れとけ」となるのはわかるんだが
じゃあそのクラスのインスタンスはグローバル的に参照したらダメなんかね?

たとえばジャンルがRPGだとして、キャラクターデータを

// common.h(各cppでincludeする)
namespace Sample {
 // パーティーデータを宣言
 MyCharacterData Party;
};

// main.cpp
#include "common.h"
int main( int argc, char ** argv, char ** env ) {
 // 起動時に初期化
 Party.init();
 :
}

・・・といった作りにするのはどうなんだろ

291:名前は開発中のものです。
12/06/06 13:28:41.38 s5fJFGX+
グローバル変数のデメリットと言われるものは複数ある。
そのうちの幾つかは解消されるけど、残りは解消されないと言った感じ。

例えば、意図しない変数名のバッティングは回避されるだろう。
でも、複数の箇所から操作される可能性はそのままだ。

292:名前は開発中のものです。
12/06/06 13:31:53.21 mJCSqxTc
グローバル変数のメリットは複数の箇所から操作出来る事なのでは……。

293:名前は開発中のものです。
12/06/06 13:50:04.63 s5fJFGX+
>>292
それがグローバル変数の「特徴」だな。 メリットにもなりうるし、デメリットにもなりうる。

どうしても複数の箇所から操作しなければならない変数だけ、ピンポイントでグローバルにするのはマジ有効。
何でもかんでもグローバルにするのは、あまり好ましくないと言われる。

熟練者が使えば凄く有効に使えるけど、
俺のような初心者は、最初から「グローバル変数は絶対に使わない」と決めてしまった方が楽w
他にもgoto文なんかがそうだね。


ちなみに自分は、C++のconst変数(いわゆる定数)のみ、
きちんと名前空間で整理した上で、まさに>276の方法でグローバル化することがある。

もちろん、ビルド時間や不要な情報が増えるというデメリットは超デカいけど、
一箇所にまとまるというメリットも、それなりに大きい。

294:名前は開発中のものです。
12/06/06 13:54:50.07 mJCSqxTc
そうなんだ。
俺はどうでもいい一時変数以外は全部グローバルでやっちゃってるよ。

別んとこで確保したローカル変数をまた別んとこで利用する、なんてやりかたやってたらバグの温床になりそうで。

295:名前は開発中のものです。
12/06/06 14:03:27.96 s5fJFGX+
>>294
呼び出し元(例えばmain関数)で変数を宣言して、複数の関数に引数で渡すというのは、
ありとあらゆるプログラム(C/C++以外の言語でも!)で使われる書き方だ。

だからもし、そこに面倒臭さとか一種の恐怖感を感じるなら、
無理矢理にでも改善したほうが良いかもしれない。

その上でグローバルを使うなら、ご自由に。

296:名前は開発中のものです。
12/06/06 14:39:35.53 9xH4E1Ru
>>294
さすがにそれは言語に対する理解が足りてないだろ。

「グローバル変数は絶対使ってはいけない」みたいなことを言う人達はおかしいとは思うけどね。
グローバル変数はどうしても必要なときにだけ使った方がいいぞ。

297:名前は開発中のものです。
12/06/06 15:00:33.42 mjTHO3b4
逆にグローバルが最適ってどんなケースだろ?
サブクラス化でメッセージ受け取ったときのための、
ウインドウハンドルを記憶させたstlのmapくらい。
とりあえず俺が使ってるのはそれくらい。
dxutなんかも、使い出したらグローバル変数は使いそうだなぁ。

298:名前は開発中のものです。
12/06/06 15:35:42.70 PskKn+mp
>>294
一時変数ってローカル変数だろ?
確保したローカル変数ってなんぞ

299:名前は開発中のものです。
12/06/06 15:57:44.74 UXlaP3IH
メインループの前に変数宣言しておいて
メインループの中で弄ってるんだけど、
これってクラスのフィールドとメソッドポインタで代用できるよね
お前ら的にはこの方法どうなの?

300:名前は開発中のものです。
12/06/06 16:19:17.31 s5fJFGX+
>>299
簡潔かつ具体的にどうぞ

301:名前は開発中のものです。
12/06/06 19:31:30.78 WiOpGBsA
シングルトンとしてわざわざprivateコンストラクタとか書きたくない場合、
引数でデータを渡すセッターが書きたくない場合かな。
まあ手抜きだね。

経験や設計力の足りない人が、とりあえずグローバル変数で手抜きをしてつくり、
後で修正するのはいいんじゃないかな。

>>299
>>15さんの好きなようにやりなさい。

302:名前は開発中のものです。
12/06/06 20:03:58.82 dE87BNoI
一人で開発してるとどうしても手抜きになるのは仕方かも。
就職してチームで開発するようになればセオリーの
コーディングスタイルを学べるんだけどね。
すでに退職した人が書いたコードのバグを治す立場になれば
グローバル変数の悪どさが身を持って分かるようになる。


303:名前は開発中のものです。
12/06/06 20:08:37.83 K3C+b+6o
クラスごとに読み込み専用とか書き込み可能とかのアクセス制御を簡単に記述できるなら
何処からでも参照可能なデータクラスがあっても悪くないのかもしれないけど

304:名前は開発中のものです。
12/06/06 20:13:09.98 s5fJFGX+
システム担当が1人しかいないので大して変わらん俺…(´・ω・`)

305:名前は開発中のものです。
12/06/06 20:21:15.36 wItmrJee
そもそも数人で作れるほどの腕を持つ奴はこんなとこ来ないから別にいいよ
しかもなんでバグ前提だよ>>302

306:名前は開発中のものです。
12/06/06 20:22:50.00 z1YH6Ic0
まとめ
グローバル変数は把握出来るようにきちんと整理しておきましょう

307:名前は開発中のものです。
12/06/06 21:31:22.54 fkjdBITD
>>305
バグ0前提のほうがありえないだろw

308:名前は開発中のものです。
12/06/06 21:32:44.31 wItmrJee
一項目を一通り作ったらビルドしないの?
まさか全部作るまでテストしない…?

309:名前は開発中のものです。
12/06/06 21:35:34.97 wItmrJee
なにいってんだ俺は
一通り終わってバグがあったらその都度バグ潰すってことね

310:名前は開発中のものです。
12/06/06 21:56:51.01 s5fJFGX+
>>308-309
そこだけ訂正されても、「お前は何を言ってるんだ」は変わらんぞw

311:名前は開発中のものです。
12/06/06 22:10:00.23 Ez398/8e
というか、グローバル変数をあちこちから直接触るのが危険、はわかるが
(どうせ他人のプログラム読むにはGrep必須じゃね? みたいな揚げ足取りは置いといて)

クラスインスタンスを大域的にアクセス可能にすることにはどういうリスクがあるかな
あちこちで生成・破棄を繰り返したらヤバイとか、
マルチスレッド時変数にロック必須とかは俺にもわかる
他に目立つデメリットってどんなものがあるだろう?



次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4352日前に更新/85 KB
担当:undef