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


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

DXライブラリ 総合スレッド 2008



1 名前:名前は開発中のものです。 mailto:sage [2008/10/25(土) 17:37:53 ID:BCFbbKco]
Cを習得した程度のスキルでも、
GUIのゲームを比較的容易に作成する事を可能にする、
「DXライブラリ」に関するスレッドです。

DXライブラリの詳細ついては
homepage2.nifty.com/natupaji/DxLib/
を参照して頂きたい。

DXライブラリに関するテクニックなどの情報交換などを行う事で、
多くのDXライブラリユーザのスキルの向上に役立てたら幸いです。

過去スレ:DXライブラリ 総合スレッド
      pc11.2ch.net/test/read.cgi/gamedev/1197468399/

266 名前:名前は開発中のものです。 mailto:sage [2008/12/13(土) 03:06:51 ID:DJ2YFwb1]
そう
shotflagって弾があるかないかのフラグでしょ?
今のままだとshotflagが0の時にも判定される

あといろいろ突っ込みどころがあるけど
そういう書き方してると確実にスパゲティソースになる

267 名前:名前は開発中のものです。 mailto:sage [2008/12/13(土) 11:56:05 ID:E/1bppJy]
>>266
マジかw
プログラム初心者で全然分からんから適当に組んでる
既にややこしくなってる


268 名前:名前は開発中のものです。 mailto:sage [2008/12/13(土) 12:55:29 ID:6PMqtPt6]
動けば結構。
実際に作って慣れればいいのだ。

269 名前:名前は開発中のものです。 mailto:sage [2008/12/13(土) 13:01:52 ID:E/1bppJy]
>>263-264
そのとおりにやってみたけど
やっぱり玉一つで「次にショットボタンが押されるまで」の間に複数回攻撃判定が出ちゃう・・・。



270 名前:名前は開発中のものです。 mailto:sage [2008/12/13(土) 13:08:45 ID:WaQfNGav]
>>267
初心者なら仕方なら、一回スパゲティコード書いて捨てる経験もしてみるといいかもね。
それがいやならオブジェクト指向の簡単な本があるからそれ読んでみるといいよ。
オブジェクト指向とゲームは相性がよい部類。

ためしにオブジェクト指向で書き直してみようかと思ったけど、半分ほど書いた時点で
長くなった上に果たしてこれを理解できるのかという疑問がわいてきたので捨てた^w^)


271 名前:名前は開発中のものです。 mailto:sage [2008/12/13(土) 13:10:15 ID:WaQfNGav]
仕方ならってなんだよOTL 仕方ない、ね

272 名前:名前は開発中のものです。 mailto:sage [2008/12/13(土) 13:19:00 ID:klDdA96T]
OOとゲームって相性いいかなぁ。
素人の俺がいうのもなんだけどむしろ相性はよくない方だと思うけど、経験が足りないからかな?
一応ゲーム作りはDXライブラリ使ってもOO(OO風ともいう)を意識して書いてるけど、
C++の便利な機能(クラスや継承程度)を使うくらいでこれぞOOって感じでもないなぁ。
C#でちょっとしたツールなんか作るとOOだなぁって感じるけど。

273 名前:名前は開発中のものです。 mailto:sage [2008/12/13(土) 13:48:06 ID:WaQfNGav]
>>272
ツールを作る件はオブジェクト指向じゃなくて提供されるオブジェクト指向ライブラリが優秀
ってだけだと思う。

>相性はよくない方
どの辺が?ならデータ指向で作る?手続き指向で?俺は絶対いやだけどなー。

パラダイムってのはつまるところコードの整理術なわけで、それを感じないってのは別に
不思議じゃないよ。

さっきでたコード、弾丸と敵との当たり判定がでてきだけど、

int dx = shot->getX() - enemy->getX();
int dy = shot->getY() - enemy->getY();
double distance = sqrt( dx*dx + dy*dy );
if( distance < HIT_SIZE )
{
/*ヒット処理*/
}

って書いてたらお前ちょっと表に出ろだけど、ちゃんとTell, dont ask の原則にのっとって書いたら

if( shot->hitTest( enemy ) )
{
/*ヒット処理*/
}

変更にも強く、なおかつコードはわかりやすくなる。

274 名前:名前は開発中のものです。 mailto:sage [2008/12/13(土) 17:56:36 ID:E/1bppJy]
もー全然できねーよおおおおおおお

いっそコレ仕様にすっか
敵の端っこにショット当てた状態でショットボタンを押さないと一定時間大ダメージ!

画期的と言えば画期的だが生憎ただのバグだ。



275 名前:名前は開発中のものです。 mailto:sage [2008/12/13(土) 18:54:39 ID:DJ2YFwb1]
>>274
今じっくり見たけど
>>262のif( shotflag == 1 )のブロックを>>262の一番最後で閉じるか
else if(hitS < hit )のブロックの中でhitSを条件満たさないように変更する
これで正常になると思うが、違ったらすまそ

276 名前:名前は開発中のものです。 mailto:sage [2008/12/13(土) 18:56:46 ID:O5bnNqrG]
shotflagっていうのは弾の生死状態を管理するフラグなんだから、
弾が生きているときだけ判定をすればいいわけだよね。
>>>264が言う通り当たり判定をするブロックを if ( shotflag == 1 ){}で囲めば出来ると思うんだけどなあ。
弾が死んでても玉の座標は留まって、さらにshotflagが機能していないから(セットが上手く行っていないか判定処理に考慮されていない)
何度も当たっていると思われるんだけど。

てか敵をデタッチするのにDeleteGraph()で画像そのものを削除するって激しすぎないか?w
if ( enemy_alive ) { Task(); } // 敵が生きているときのみ敵に関する処理を行う
とかにした方が良いと思うんだが。

277 名前:名前は開発中のものです。 mailto:sage [2008/12/13(土) 18:59:29 ID:O5bnNqrG]
ごめん、if ( enemy_alive ) → if ( enemy01_Life >= 0 )

278 名前:名前は開発中のものです。 mailto:sage [2008/12/13(土) 21:59:39 ID:E/1bppJy]
>>274だけど、ちょっと検証した
当たり判定は座標で行ってたから

www.uploda.org/uporg1853070.jpg

この画像の様に(hit>hitS)になってる時に判定が出て、その判定が次玉を出すときまで残るんだ。
だからこの画像はhitは21でhitSは13.9.....ってなってるので次に玉が出るまで(hitSの数値が変わるまで)凄い勢いでenemy_Lifeが減り続けてる

敵に当たった瞬間にhitSをリセットすればいいのかな?

279 名前:名前は開発中のものです。 mailto:sage [2008/12/13(土) 22:22:05 ID:O5bnNqrG]
もうソースうpしてくれよ

280 名前:名前は開発中のものです。 mailto:sage [2008/12/13(土) 22:28:29 ID:E/1bppJy]
www2.uploda.org/uporg1853197.zip.html
パスは274

問題のソースはenemy_moveとplayerにあります。

初心者だからすげー読みずらいと思う

281 名前:名前は開発中のものです。 mailto:sage [2008/12/13(土) 22:30:08 ID:DJ2YFwb1]
>>275では解決しなかったか?

282 名前:名前は開発中のものです。 mailto:sage [2008/12/13(土) 22:32:35 ID:E/1bppJy]
>>281
うん、その通りにやってみても何故か結果は変わらずだった

283 名前:名前は開発中のものです。 mailto:sage [2008/12/13(土) 22:32:46 ID:O5bnNqrG]
hitSっていうのは敵と弾との距離でしょ
それは当たり判定をする必要があるとき、
つまり弾と敵が生きているときに毎フレーム計算すればいい
弾の座標を遥か彼方にリセットしたりhitSを直接いじくって
当たり判定が真にならないようにすれば確かに上手く行くだろうけど
本質的には当たり判定をする必要が無いときに判定しているのが問題なんじゃないの?

284 名前:名前は開発中のものです。 mailto:sage [2008/12/13(土) 22:45:11 ID:E/1bppJy]
>>283
毎回計算して判定してるんだけど
ヒットした時に計算が次玉出すときまで止まっちゃう



285 名前:名前は開発中のものです。 mailto:sage [2008/12/13(土) 22:47:31 ID:O5bnNqrG]
>>280
全然修正されてないじゃないかw

「enemy_move.cpp」の
GetGraphSize( enemy01 , &SizeX , &SizeY ) ; //グラフィックのサイズを取得
の前に一行追加して
if ( shotflag == 1 ){
GetGraphSize( enemy01 , &SizeX , &SizeY ) ; //グラフィックのサイズを取得
とする。
次に、その下のほうの
int Color ;
の前に閉じ括弧を追加して
}
int Color ;
とする。
つまり、当たり判定をしている部分を
if ( shotflag == 1 ){
}
で括る。

それとインデントをきっちりしないとネストレベルが分からなくなるよ。

286 名前:名前は開発中のものです。 mailto:sage [2008/12/13(土) 22:53:39 ID:klDdA96T]
>>273
んーていうかC#の件は、ライブラリが優秀で作りやすい=オブジェクト指向って事じゃなくて、
コントロール一つ設置してイベントを呼び出すってだけでオブジェクト指向を感じる。
もっと具体的に言えばイベントハンドラ(やデリゲート)がオブジェクト指向だなぁって。

提示してくれた下のコードも、それだけじゃオブジェクト指向を感じない。
結果的に言わんとしようとしてることはわかるけどね。
ただそれだけじゃただのサブルーチン呼び出し。

言いたいのはそのコードだけを見てオブジェクト指向じゃないって事じゃないし、
自分でゲーム作る時もオブジェクト指向で書きたいわけだけど、
概念的に無理やり感があるのと、非オブジェクト指向でも書けるってので、
GUIアプリと比べて相性がいい方ではないって事。


287 名前:名前は開発中のものです。 mailto:sage [2008/12/13(土) 23:05:58 ID:E/1bppJy]
>>285
おおおおおおお!!!ありがとおおおおお
一つのライフしか減らないwwwwwww

すげー!ショットフラグがONの時にしか判定しないようにするってそういう事だったのかwww

ちなみにプログラムの書き方?はこんな感じでいいのかな?


288 名前:名前は開発中のものです。 mailto:sage [2008/12/13(土) 23:22:28 ID:HImZ/jwv]
どうでもいいけど定数を#defineで書くのとconstで書くのってどっちがいいのけ?
俺は気持ち悪いからconstでやってるわけだが

289 名前:名前は開発中のものです。 mailto:sage [2008/12/13(土) 23:33:22 ID:Swo2xfir]
>288
・歴史的な経緯とかはあるかも
・特に理由が無ければconstでいいんじゃね?
・defineじゃないと出来ないこと、スマートなこともあるから気をつけろ

290 名前:名前は開発中のものです。 mailto:sage [2008/12/13(土) 23:34:35 ID:Swo2xfir]
>287
とりあえず、何でもいいので1つ完成させてからじゃないと
定番の書き方とかは説明しても意味が無いし、おそらく理解できないと思う。

291 名前:名前は開発中のものです。 mailto:sage [2008/12/13(土) 23:42:11 ID:MCFYNnvA]
#defineは計算式入れられるのがいいな
気を付けないと間違った結果が返ってくるハメになるが

292 名前:名前は開発中のものです。 mailto:sage [2008/12/14(日) 00:49:54 ID:UsQn7VQk]
>>287
おめでとう。お世辞にも綺麗なソースとは言えないけど、
モノとして動いているということはとても大事なこと、すごいことだよ。
作り続けていれば段々上手くなって行くはず。

あと>>285の修正をした段階で、今度は敵の消滅タイミングがおかしくなると思う。
敵のライフが-1になった瞬間には敵は消滅せず、その後自機が弾を発射した瞬間に消滅する、っていう風に。

これを修正するには、敵をデタッチ(殺す)処理をしている部分を移動させればいい。

/* ↓elseは消し、必要なら if ( enemy01_Life >= 0 && hitS < hit ) などとする。しなくても出来るが。
  または if ( shotflag == 1 ) のところに敵の生死チェックを入れる。即ち if ( enemy01_Life >= 0 && shotflag == 1 ) とする。しなくてもでき(ry */
if(hitS < hit ){ //敵の画像と自機の玉を直角三角形結んだ時の斜辺が当たり判定より小さい時(hit!!)
    PlaySoundMem( hit_test , DX_PLAYTYPE_BACK );
    shotflag = 0;
    enemy01_Life -=1;
    if(enemy01_Life < 0){ //敵死亡してる時 /* この3行を */
        DeleteGraph( enemy01 ) ;        /* ここに */
    }                        /* 移動 */
}

まずはインデント(ソースコードの段落処理)から始めよう。

293 名前:名前は開発中のものです。 mailto:sage [2008/12/14(日) 01:24:21 ID:2jf1rfQx]
そこでPythonとrubyの登場ですね

294 名前:名前は開発中のものです。 mailto:sage [2008/12/14(日) 07:22:24 ID:HIyGZizO]
>>286
さっき提示したコードの価値をただのサブルーチン呼び出しとか
言っちゃってる時点でなんかもう全然わかってない。

あれはShotオブジェクトにEnemyとの当たり判定を”頼んで”いるんだよ。
この違いがわからないんならいつまでたっても素人のまま。

というか
>もっと具体的に言えばイベントハンドラ(やデリゲート)がオブジェクト指向だなぁって。
デリゲートなんか関数型プログラミング言語の概念の拝借だよ。
これがオブジェクト指向!なんてデザインパターンこそがオブジェクト指向!というのと同じくらい笑えるんだが。

>概念的に無理やり感があるのと、非オブジェクト指向でも書けるってので、
>GUIアプリと比べて相性がいい方ではないって事。
どこが無理やりなんだよw
さっきのコード、Enemy,Player,Shotというクラスを抽出できるけど、これのどこが無理やりなんだよ。自然だろうに。

それとGUIアプリだって手続き型で書ける。イベントハンドラやデリゲートはオブジェクト指向の一機能を使って
実装されてるけれど、それ自体はオブジェクト指向じゃない。だからVBでもGUIアプリが組めるわけだ。


ここまで言ってゲームをオブジェクト指向で組むのは向いてないと言うならもうしらね
というかもっと勉強してくださいいやマジで



295 名前:名前は開発中のものです。 mailto:sage [2008/12/14(日) 09:52:32 ID:1zOFBaLD]
C#6年やってるんだけど未だにオブジェクト指向わからねえ。
でもゲームとオブジェクト指向は相性いいと思うよ。

296 名前:名前は開発中のものです。 mailto:sage [2008/12/14(日) 11:03:33 ID:DFScKmBl]
イベントを使ってたところをEventListenerとか使ってobserver剥き出しに変更したら
オブジェクト指向になるのか? 実質的に全く等価なのに?
>>294の言うオブジェクト指向って何なんだ

297 名前:名前は開発中のものです。 mailto:sage [2008/12/14(日) 11:38:14 ID:NFgVN8d3]
オブジェクト指向って単純に、人が走っても車が走っても同じ「走る」だ、ってだけじゃねーの

298 名前:名前は開発中のものです。 mailto:sage [2008/12/14(日) 12:16:50 ID:h39ltAFv]
オブジェクト指向って考え方が出る前からプログラム作って遊んでるが
未だにオブジェクト指向が理解できん。
273で言うならちょっと表へ出ろレベル以下だ。

299 名前:名前は開発中のものです。 mailto:sage [2008/12/14(日) 17:59:02 ID:17g8Fdx4]
>>294は釣りだよな?w
突っ込むところが多すぎるww
「ShotオブジェクトにEnemyとの当たり判定を”頼んで”いる」だけでオブジェクト指向とかww

ところで、ゲームをオブジェクト指向で組むのは向いてないって話題は誰がしてるの?してない気がする。。

300 名前:名前は開発中のものです。 mailto:sage [2008/12/14(日) 18:01:31 ID:17g8Fdx4]
>>297
たぶんオブジェクト指向入門書にはそういう概念的な事が書いてあると思うけど、
オブジェクト指向って本当は概念の事じゃないよ。
もっと具体的なプログラミングの事。
「ShotオブジェクトにEnemyとの当たり判定を”頼んで”」も別にオブジェクト指向じゃないww

301 名前:名前は開発中のものです。 mailto:sage [2008/12/14(日) 18:44:57 ID:CDnr1Yv3]
>>300
そうなん?
レシーバか引数が違えばそれは別物だっていう名前空間の概念がまずあって
そいつを楽に実現するための補助がクラスやテンプレートやインターフェースなんだって認識だったが
具体的なプログラミングの事を言うなら言語がクラスベースかどうかで相当違ってくると思うし
あと>>299最後の行は>>272

302 名前:名前は開発中のものです。 mailto:sage [2008/12/14(日) 18:58:29 ID:AhiFoxCU]
構造体に関数がくっついただけのクラスのインスタンスを生成して
それで動かしたらオブジェクト指向。
そう思っている俺が通りますよ。

303 名前:名前は開発中のものです。 mailto:sage [2008/12/14(日) 19:02:22 ID:ST598Jfh]
何もめてんだよ

>>272は基本的に用語を間違っているがそれに気付いていない
で、親切に答えてくれた>>273と会話がかみ合っていない

>>272はVBライクなコンポーネント貼りつけとプロパティ設定での
プログラミングスタイルとオブジェクト指向を混同している
また、Windowsのイベントドリブン構造を言語仕様と勘違いしてる

-まとめ-

Q.DXライブラリを使うとVBでアプリ作るみたいにコンポーネント貼ってプロパティ設定だけでプログラムできますか?
A.できません

Q.イベントドリブンがオブジェクト指向ですよね?
A.違います

Q.イベントドリブンでゲームプログラムは書けますか?
A.書けます

Q.オブジェクト指向でゲームプログラムは書けますか?
A.書けます


304 名前:名前は開発中のものです。 mailto:sage [2008/12/14(日) 19:18:54 ID:mrF69eoK]
ん〜・・・?
>>272
>DXライブラリ使ってもOO(OO風ともいう)を意識して書いてるけど
っていうのはDXライブラリ自体がC(非OOPL)で書かれてるけどって意味だろ
>>303こそ勘違いしてるだろ



305 名前:名前は開発中のものです。 mailto:sage [2008/12/14(日) 19:22:31 ID:17g8Fdx4]
厳密に言えばC/C++使ってる時点でピュアなオブジェクト指向は無理だけどな。
メッセージ呼び出しっていう機能はないし、それに似た機能はメソッド呼び出し(=関数呼び出し)でしかないし。
組み込み型もオブジェクトじゃないしいきなりint main(){}で始まるしww

306 名前:名前は開発中のものです。 mailto:sage [2008/12/14(日) 19:33:16 ID:5menpJL8]
幸せって何ですか?

307 名前:名前は開発中のものです。 mailto:sage [2008/12/14(日) 20:33:18 ID:P8eg6rH1]
オブジェクト指向ってそんなに高度な事なの?
それとも人それぞれ考え方が変わるモノなの?

308 名前:名前は開発中のものです。 mailto:sage [2008/12/14(日) 20:46:29 ID:uHyIUedU]
CしかわかんなくてもDirextXゲームプログラムがさっくりできちゃうのがウリの
DXライブラリのスレでオブジェクト指向を熱っぽく語る男の人って……

309 名前:名前は開発中のものです。 mailto:sage [2008/12/14(日) 21:04:56 ID:SEtb8HBj]
        ____   
       / \  /\ キリッ
.     / (ー)  (ー)\      
    /   ⌒(__人__)⌒ \    < 厳密に言えばC/C++使ってる時点で
    |      |r┬-|    |        ピュアなオブジェクト指向は無理だけどな。
     \     `ー'´   /
    ノ            \
  /´               ヽ              
 |    l              \
 ヽ    -一''''''"~~``'ー--、   -一'''''''ー-、.    
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))


          ____
        /_ノ  ヽ、_\
 ミ ミ ミ  o゚((●)) ((●))゚o      ミ ミ ミ
/⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\   /⌒)⌒)⌒)
| / / /     |r┬-|    | (⌒)/ / / //  だっておwwwww
| :::::::::::(⌒)    | |  |   /  ゝ  :::::::::::/
|     ノ     | |  |   \  /  )  /
ヽ    /     `ー'´      ヽ /    /     バ
 |    |   l||l 从人 l||l      l||l 从人 l||l  バ   ン
 ヽ    -一''''''"~~``'ー--、   -一'''''''ー-、    ン
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))


310 名前:名前は開発中のものです。 mailto:sage [2008/12/14(日) 21:23:33 ID:a4AnO2Cl]
DXライブラリで質問が・・・



あ、スレ間違えました!すみません

311 名前:名前は開発中のものです。 mailto:sage [2008/12/14(日) 21:47:10 ID:17g8Fdx4]
>>309
int main()ってオブジェクト指向的になんなの?www

312 名前:名前は開発中のものです。 mailto:sage [2008/12/14(日) 22:41:43 ID:ST598Jfh]
>>304
何がん〜・・・?だ
そんな事だから

>>286
>んーていうかC#の件は、ライブラリが優秀で作りやすい=オブジェクト指向って事じゃなくて、
>コントロール一つ設置してイベントを呼び出すってだけでオブジェクト指向を感じる。

とかマヌケな事を書いてしまうのさ
>>303のまとめでいいんだよ

RADツールと言語の区別もついてない質問に対して、みんなにちゃんと答えてもらってる事をまず理解するべきだな
元々スレ違いだ、感謝こそすれ相手を見下すとか勘違いすぎるんだよww

313 名前:名前は開発中のものです。 mailto:sage [2008/12/14(日) 23:20:03 ID:17g8Fdx4]
なんか常に話がちょいズレの人いるな

314 名前:さらに話がちょいズレの人 mailto:sage [2008/12/15(月) 00:08:20 ID:JJfbOdAj]
>>303には、同意だけど。 OOなんて元の発生が3つぐらいあって、
さらに様々な言語にそれらのOOが混同されながら導入される過程で
どんどんと複雑に入り組んでいってる。
(しかも、良くも悪くも元がProgramming言語における概念だから、
 普通の言葉に意味を汲み出す過程で色々とノイズや過不足が起こる。
さらに、OOAだ、OODだなんだので純粋なOOよりも
とりあえず使える道具としてのOOが今のメインストリームだと思うし。)
だから、結果的には、人によってOOの概念も色々な違いがある。


あと、そんな訳だからと言う訳じゃないがCだって、OOPLは可能。
ただし、言語的なサポートが対応してないから、
様々な工夫をする必要があったりする。
また、逆の意見としても>>305のint main()で始まるからオブジェクト指向じゃない。
ってのもどうかと思う。
OSも含めたアプリケーションをProgramとみるならば、
int main()は、ズバリそのアプリの呼び出しメッセージと見做しても誤解ではないしね。

あと、>>301の言ってる事は別にOOじゃないと思うぞ。
それらは単に多態性とかであって、OOとしてあったら好ましいが、

さらに>>300のプログラミングの概念と具体的なプログラミングが別モノっぽいのも違うんじゃない?
基本アセンブリでやるでもない限りは、プログラムは概念に概念を積み上げた産物だし、
それらの概念を如何につかうか?どのように解釈するか?がプログラミングでしょ。
だからこそ、gotoは悪!!やJavaにはポインタはありません!!みたいな話も出てくるわけでww



315 名前:名前は開発中のものです。 mailto:sage [2008/12/15(月) 00:20:00 ID:xNu63hXk]
俺は別にピュアだか厳密だか理想的だかなOOじゃなくても
それなりに作れてメンテできればいいかな
ピュアなのがいい人はその人が納得する言語なりなんなりを使えばいいし

316 名前:名前は開発中のものです。 mailto:sage [2008/12/15(月) 00:48:36 ID:syJyrDB+]
ついこの前DXライブラリでゲームを作り始めた初心者なんですが。
時間のとり方について質問があります
ttp://homepage2.nifty.com/natupaji/DxLib/function/dxfunc_other.html#R7N1
のサイトを見て時間所得して表示までできたのですが、ボタン(たとえばスペースボタン)を押して時間を最初からやり直すのはどうすればいいでしょうか?(キー入力状態の取得はできています)
日本語わかりずらかったらすいませんm(_ _;)m

317 名前:名前は開発中のものです。 mailto:sage [2008/12/15(月) 00:52:41 ID:r0Y4Aqo3]
int ゲーム内ではこっちを使う;

ゲーム内ではこっちを使う = GetNowCount();
if (ボタンが押された) ゲーム内ではこっちを使う = 0;

318 名前:317 mailto:sage [2008/12/15(月) 00:57:14 ID:r0Y4Aqo3]
間違えた。正しくは
int ゲーム内ではこっちを使う;
int 前にリセットした時間;

int now = GetNowCount();
ゲーム内ではこっちを使う = now - 前にリセットした時間;
if (ボタンが押された) { ゲーム内ではこっちを使う = 0; 前にリセットした時間 = now; }

319 名前:名前は開発中のものです。 mailto:sage [2008/12/15(月) 05:27:51 ID:dny0TB5O]
>>148
いや、スレチでもないぞ。ライブラリ作者の古い作品だから

320 名前:名前は開発中のものです。 mailto:sage [2008/12/15(月) 11:37:12 ID:gYDVxSnY]
>>273
if( shot->hitTest( enemy ) )
{
/*ヒット処理*/
}
って書くとたしかに変更に強くわかりやすくなるけどそれがOOだっていうのは尚早だよ。
hitTest()の中身は結局上と同じ事してるんだから。
だからその部分がOOだって言われるとただのリファクタリング手法でしかない。
もしその部分だけでOOだっていえるならGUIアプリだって
TextBox tb = new TextBox;
list.add(tb);
ほら、同じ。
でも両方ともただオブジェクトを渡してるって事実しかないよ。
それを推しておきながらデリゲートだけじゃOOじゃない!っていうのは横暴だなぁ。
ちなみにVBは今はOOPLだよ。
OOは議論が起きるくらい曖昧なところもあるけど、やっぱりカプセル化・継承・ポリモーフィズムの3つは最低限主張すべきだね。
個人的にはわざわざなんでカプセル化なんてあるのか疑問だけどw(隠蔽や最小の原則なんかは構造化言語からずっとあった)

321 名前:名前は開発中のものです。 mailto:sage [2008/12/15(月) 11:46:55 ID:gYDVxSnY]
>>303
煽るわけじゃないけど流れを読んできてなんでいきなりWindowsのイベントドリブンが出てくるのかなって思ったんだけど、
きっと>>305のメッセージ呼び出し機能って言葉からそう思ったのかな?
たしかにイベントドリブンもメッセージっていうけどOOのメッセージっていうのは全く別物だよ。
純粋なOOPL(Smalltalkなど)ではメッセージ機能っていうのがあるんだ。
メソッド呼び出しに似てるけどちょっと違う。
C++ではメンバ関数、Javaではメソッド呼び出しで実現してるけどね。
詳しくは自分で調べてみて。

322 名前:名前は開発中のものです。 mailto:sage [2008/12/15(月) 13:36:35 ID:Mi5wQEEl]
>>321
>>286
>コントロール一つ設置してイベントを呼び出すってだけでオブジェクト指向を感じる。
>もっと具体的に言えばイベントハンドラ(やデリゲート)がオブジェクト指向だなぁって。
いや、Windowsのイベントドリブン構造の事だ
読めばわかる

323 名前:名前は開発中のものです。 mailto:sage [2008/12/15(月) 17:20:30 ID:k3xYLtfr]
オブジェクト指向は僕達の心の中にあります

324 名前:名前は開発中のものです。 mailto:sage [2008/12/15(月) 18:27:06 ID:VbZykIE5]
俺の中でオブジェクトっつったらスプライトの事だ!



325 名前:名前は開発中のものです。 mailto:sage [2008/12/15(月) 20:55:40 ID:0kk0L8Su]
じゃあ俺は、この形。

int WINAPI WinMain(うんたらかんたら〜){
    Application App;
    App.Run();
    return 0;
}

Applicationのインスタンスが生成されてる間はアプリが生きてる。
App破棄と同時にアプリも終了する、この形がいちばん美しいと思う。

326 名前:名前は開発中のものです。 mailto:sage [2008/12/15(月) 21:40:30 ID:fyQ9eFTJ]
>>325
シングルスレッドであれば、確かに良いアイディアだと思う。

327 名前:名前は開発中のものです。 mailto:sage [2008/12/15(月) 21:43:08 ID:WW1gkqvT]
そこまでやる必要あるか?

328 名前:名前は開発中のものです。 mailto:sage [2008/12/15(月) 23:22:35 ID:A6pVWDv7]
>>326
中でタスクマネージャー的なものでCPU毎に負荷分散させているかもしれんぞ?

329 名前:名前は開発中のものです。 mailto:sage [2008/12/16(火) 00:20:42 ID:fzHt/ZSS]
>>325のやりかたにどこかまずいところあるの?

330 名前:名前は開発中のものです。 mailto:sage [2008/12/16(火) 00:26:55 ID:JBSSxUHl]
>>324
用語が適当すぎるよな。

メモリを占拠した実体→「オブジェクト」
コンパイルして出来るファイル→「オブジェクト」
自分自身で処理させる論理機構→「オブジェクト」

名前付けたやつちょっとツラ貸せっていうか
昔、書籍読んだときさっぱり意味わからんかったぜ・・

331 名前:名前は開発中のものです。 mailto:sage [2008/12/16(火) 00:44:36 ID:o3pFEybH]
メモリを占拠した実体ってインスタンスのこと?

332 名前:名前は開発中のものです。 mailto:sage [2008/12/16(火) 01:58:01 ID:r2TMQqJU]
変数じゃないの?変数もオブジェクトだよね

333 名前:名前は開発中のものです。 mailto:sage [2008/12/16(火) 04:02:55 ID:dNyohwYS]
>324はもっと誉められていいと思う

334 名前:名前は開発中のものです。 mailto:sage [2008/12/16(火) 11:37:43 ID:IA9CyF+N]
昔読んだ本には、OOPは

オブエクとは「物」と訳される。曖昧さの象徴である。
頭の中でイメージしなさい。
物と呼ばれる、段ボール箱「みかん箱」がたくさんある。
みかん箱の中身は隠されている、知らなくて良い。
みかん箱を紐で結ぶ事が「プログラム」である。
みかん箱には切替スイッチが付いている、それで位置、色、大きさが変化する。
みかん箱が「オブジェクト」である。




335 名前:名前は開発中のものです。 mailto:sage [2008/12/16(火) 14:57:03 ID:j+OyGE8J]
基本的にOOやマイノリティ言語のウンチクや自分語りはスレ違いだな

336 名前:名前は開発中のものです。 mailto:sage [2008/12/17(水) 01:37:25 ID:SDA7SaR9]
>>334
簡単に言うと
バカでも切り替えスイッチをポチって押せば変化する事が出来る。
けどその変化する「仕組み」を理解する必要は無い。

って事?

オブジェクト指向あんまよく分からないけど、そうなると定数#defineって簡単なオブジェクト指向に入るの?

例えば
#define SPEED 25//数値を変えると速度が変えられます。
ってあったら数字を変えるだけで変化が実装できるし。

なんか違うかw

337 名前:名前は開発中のものです。 mailto:sage [2008/12/17(水) 02:09:42 ID:adQIUXL6]
>>336
それだけだとただのブラックボックス化。
OOの一部ではあるけどCの関数だってブラックボックスでしょ?

338 名前:名前は開発中のものです。 mailto:sage [2008/12/17(水) 02:33:05 ID:S1ZUobQv]
グラフィック表示させる関数いろいろあるじゃない
DrawGraphとかDrawTurnGraphとかDrawExtendGraphとかDrawRotaGraphとかDrawRotaGraph2とかDrawModiGraphとか
あれみんな同じ重さなのかな
あと、やっぱ画像の大きさと重さにも関係あるのかな
あと、同じ四角のグラを表示させるのでもその四角のグラ用意して読み込んで表示させるのと
DrawBoxで表示させるとでは重さは変わらないのかな

339 名前:名前は開発中のものです。 mailto:sage [2008/12/17(水) 02:38:22 ID:S1ZUobQv]
自分でOO使ってゲーム作ろうとすると結局グローバル多用したりパブリック多用しちまうんだよなあ

340 名前:名前は開発中のものです。 mailto:sage [2008/12/17(水) 02:53:08 ID:dezoAnwU]
>>336
>>337
ttp://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0

341 名前:名前は開発中のものです。 mailto:sage [2008/12/17(水) 02:59:26 ID:dezoAnwU]
>>338
自分で実際に比べてみればいいんじゃね

342 名前:名前は開発中のものです。 mailto:sage [2008/12/17(水) 03:20:54 ID:adQIUXL6]
>>338
”重さ”ってなんだ?^^;
ソース見てベンチ測って見ればいいじゃん。

343 名前:名前は開発中のものです。 mailto:sage [2008/12/17(水) 06:22:20 ID:S1ZUobQv]
なるほど
その発想はなかったわ
そんなこといままでしたことなかったからな
面倒臭さと相談してやるかどうか考えてみる

344 名前:名前は開発中のものです。 mailto:sage [2008/12/17(水) 07:31:49 ID:dezoAnwU]
>>343
やるならGetNowHiPerformanceCount()を使うのはどうだ?
で、計測した方法と結果をここに書けば聞きっぱなしじゃなく他のやつの参考にもなる



345 名前:名前は開発中のものです。 mailto:sage [2008/12/17(水) 08:18:15 ID:/BQwBqZh]
DXライブラリでスムーズに最大値合成できませんかね?
「画像を減算合成→重ねて加算合成」で実装すると、色深度が16ビットの時汚くなるし、描画コストも倍になるんですが……

346 名前:名前は開発中のものです。 mailto:sage [2008/12/17(水) 20:28:28 ID:S1ZUobQv]
VC6.0でLONGLONG型表示させるには%I64dでよかったかな

347 名前:名前は開発中のものです。 mailto:sage [2008/12/18(木) 10:36:19 ID:Gli++Azx]
sprintfの話?
__int64 を使うならそれだね。

348 名前:名前は開発中のものです。 mailto:sage [2008/12/22(月) 14:30:15 ID:3lSGgVQC]
DXライブラリいいね!
DXライブラリ3Dとは別ものなのかね?

349 名前:名前は開発中のものです。 mailto:sage [2008/12/22(月) 14:38:38 ID:fWgsLNUU]
3Dの方は派生verだな

350 名前:名前は開発中のものです。 mailto:sage [2008/12/23(火) 10:53:03 ID:0Fgrfb5X]
ゲームプログラムってMSXのころBASICでやってた程度だけど
DirectXっつーやつはすごいな
ダブルバッファリングっつーのがあれば
MSXのころ悩んでたことがほとんど悩まなくていいじゃんね。
スクロールすら画像を移動するだけって最強すぎ。

351 名前:名前は開発中のものです。 mailto:sage [2008/12/23(火) 12:05:58 ID:UbzH2xVf]
>>350
ちょっ、MSXの頃だってダブルバッファリングしてたっつうのw
MSXはページ切り替えできたから、最高に楽だったわ
まあ、ハードウェアスクロールがあればもっと良かったが仕方ない

352 名前:名前は開発中のものです。 mailto:sage [2008/12/23(火) 12:16:16 ID:0Fgrfb5X]
>>351
そうか
それはすまんかった

あー。そういえばあったような気がしないでもないな。
でも俺の技術では処理速度が遅くてスプライトを動かす程度しかできなかった
スクロールとかもってのはか。


353 名前:名前は開発中のものです。 mailto:sage [2008/12/23(火) 15:26:44 ID:9N5u30T9]
してたっけ。
もう覚えてないやw

354 名前:名前は開発中のものです。 mailto:sage [2008/12/23(火) 16:45:08 ID:SQBujvLn]
つーか、毎回全画面書き換えに耐えられないからページ切り替えはヘルプ画面とかで
利用してた気がしないでもないが。



355 名前:名前は開発中のものです。 mailto:sage [2008/12/23(火) 17:12:48 ID:VOrvPW1P]
タイトル画面を一瞬で表示するために使ってた。
あとはAVGの絵や3D迷路の表示とか。
アクション系のゲームには使わなかったな。

356 名前:名前は開発中のものです。 mailto:sage [2008/12/23(火) 17:42:12 ID:1h1OeV87]
ページを切り替えないと、
ロゴとかが生成される様子が眺められるんだよな。あれはあれで楽しかった。

357 名前:名前は開発中のものです。 mailto:sage [2008/12/23(火) 17:47:08 ID:0Fgrfb5X]
やっぱりいろいろ工夫する必要あったよね。
でもDXライブラリ使ったらそんなことまったく考えなくてよかったから
カルチャーショックだった。

358 名前:名前は開発中のものです。 mailto:sage [2008/12/23(火) 19:15:26 ID:5et0/vdD]
流石に時代は変わったわ。
ま、MSXBASICのノリでかる〜く作っちゃえ。

359 名前:名前は開発中のものです。 mailto:sage [2008/12/23(火) 20:09:58 ID:LP/OttsW]
なんだこの40代スレ

360 名前:名前は開発中のものです。 mailto:sage [2008/12/23(火) 22:47:31 ID:fMIdyvOB]
How many pages ? ■

361 名前:名前は開発中のものです。 mailto:sage [2008/12/24(水) 00:56:47 ID:DPn+CnyU]
MSXが導入されて、それまでのマシンで頻発してた
「雑誌掲載のソースコードを打ち込んでも自分のマシンだと動かない」っていうのが
少なくなったって印象があったなあ。

まあ、MSX自体のバージョンアップがあって、その栄光も一瞬だったんですけどね!


>359
まだ20代の真ん中くらいだよ!

362 名前:名前は開発中のものです。 mailto:sage [2008/12/24(水) 01:58:38 ID:fELrH+/v]
Windowsが導入されて、
「自分で作ったプログラムが他人のPCでは動かない」っていうのが
少なくなった…………かな?

363 名前:名前は開発中のものです。 mailto:sage [2008/12/24(水) 05:58:03 ID:IOaM1VJp]
昔はスペックのわりにマシンも高価だったし
CPUやビデオをアップグレードするには、PCをまるごと買い換えるのが基本だったり
お殿様商売の時代だったなあ

364 名前:名前は開発中のものです。 mailto:sage [2008/12/24(水) 06:59:35 ID:S9NW4iC4]
>>350
>>351
MSX1なのか2なのか2+なのかターボRなのかどのスクリーンモードなのかで話が違ってくるし
ここはDirectXのスレじゃなくDXライブラリのスレだぜ!



365 名前:名前は開発中のものです。 mailto:sage [2008/12/24(水) 09:24:20 ID:WpOVuCI5]
VECTOR3 hoge;
hoge = mL.GetCameraEyePoint();

としてVECTOR3の中身をとりだしたいのですが
hoge.x
とかいうような形でとりだせないものでしょうか?

366 名前:名前は開発中のものです。 mailto:sage [2008/12/24(水) 09:43:56 ID:WpOVuCI5]
VECTOR3 cc;
cc.x=5;
mL.printf("cc.x=%d", cc.x);

としてもcc.x=0って表示されてしまいます。






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

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

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