DXライブラリ 総合スレッド 2008
レス数が1000を超えています。これ以上書き込みはできません。
0001名前は開発中のものです。
2008/10/25(土) 17:37:53ID:BCFbbKcoGUIのゲームを比較的容易に作成する事を可能にする、
「DXライブラリ」に関するスレッドです。
DXライブラリの詳細ついては
http://homepage2.nifty.com/natupaji/DxLib/
を参照して頂きたい。
DXライブラリに関するテクニックなどの情報交換などを行う事で、
多くのDXライブラリユーザのスキルの向上に役立てたら幸いです。
過去スレ:DXライブラリ 総合スレッド
http://pc11.2ch.net/test/read.cgi/gamedev/1197468399/
0974名前は開発中のものです。
2009/03/29(日) 03:45:29ID:wJL07IJTどちらにしても15年前ほど前の事だったからたぶん今では問題ないと思う。
0975名前は開発中のものです。
2009/03/29(日) 03:45:43ID:4SqorqSCふむふむ、全く問題ないのですね!
提示してくれたソースもよくわかるのですが、た…typedef…。
勉強不足のためなんとなくでしかわからないですがなんとなく分かった感じです。
こんな感じでもいいですかね?
class Hoge {
public:
void (Hoge::*pf)(int param);
void A(int x) {
if(x == 0) pf = &Hoge::C;
if(x == 1) pf = &Hoge::D;
if(x == 2) pf = &Hoge::E;
}
void B(int param) { (this->*pf)(param);}
void C(int param) { printf("C called:%d", param);}
void D(int param) { printf("D called:%d", param);}
void E(int param) { printf("E called:%d", param);}
};
int main(){
Hoge obj;
int i;
scanf("%d", &i);
obj.A(i);
obj.B(10);
return 0;
}
0976名前は開発中のものです。
2009/03/29(日) 03:53:35ID:uaYHl2HPあー、コンパイラのバグ……。そういうのは一度ふむと使わなくなりがちですな(苦笑)
状態遷移系の処理の他だと、半自動のバインド処理の類を書くときとかに、
テンプレートと組み合わせてばりばり使ってたりします。
0977名前は開発中のものです。
2009/03/29(日) 03:57:18ID:uaYHl2HPtypedefは、宣言した複雑な型をシンプルに表記できて、
書き方覚えるととてもすっきりするので、時間あったら勉強してみてください
表記はそれで特に問題はないですが、その条件判定なら
switch つかったほうがいいと思いますです。
0978名前は開発中のものです。
2009/03/29(日) 04:13:27ID:4SqorqSC起きててよかった。
勉強してきます=3
0979名前は開発中のものです。
2009/03/29(日) 07:10:28ID:wuoKvdm5初心者相手に技術自慢したいならc++関係のスレに行けばいいのに。
そこでは相手にもされない程度なのか?
DXライブラリ
0980名前は開発中のものです。
2009/03/29(日) 07:26:38ID:vMEVjIQX俺はCについてはド素人同然なので、いろいろ教えてもらえるのは助かる。
確かにスレ違いではあるんだが、DXライブラリを使ってること前提で
話をしたい場合もあるし。
0981名前は開発中のものです。
2009/03/29(日) 10:08:36ID:BGS9yVjy趣味でゲーム作ってるのが長い人には、Cの書き方でパパーッと書き上げる事もできるし、
(Windows95の頃から始めたような人なら短いものならOOじゃない方がある程度の大きさでも楽だったりするしね。)
3Dに手出す(主にデータ的な部分)のが面倒な人には、
余計なモンついてなくて2Dに特化してるのに、 変な癖が少ないから使いやすい。
あと、最初からゲームパッドとかに対応は何気に使えるし。
車輪の再開発をやってきた様な人には、
ソースもあるからちょっとだけ手を加えたい時とかも 其れが可能で、
わざわざRequestしないで良いのは、時間的にもモチベーション的にも良い選択肢。
初心者にも優しいライブラリだけど、其れだからといって
昔のHSPみたいに、他の言語知ったら使いたくなくなるような不自由さがあるわけでもない。
まぁ、DirectXバリバリつかうぜ!!って人とかには別だろうけど。
0982名前は開発中のものです。
2009/03/29(日) 12:18:31ID:eagJL9bRそれバグでもなんでもねえし、
ポインタのサイズは変わらないだろ
0983名前は開発中のものです。
2009/03/29(日) 13:11:06ID:Zf+/7kJf>>982
正確に書くと、継承した場合のメンバ関数ポインタのサイズが4バイトとは限らない(コンパイラ依存)
多重継承や仮想継承をしている場合、正しいポインタサイズを返すために8バイトや12バイトとなることがある。
しかし、昔のバグコンパイラではこの点が考慮されておらず必ず4バイト固定だった時代があり、派生や仮想関数を呼び出そうとするとアラインメントを調節する必要があった。
ということ。ポインタは必ず4バイトというのは早計だよ。
0984名前は開発中のものです。
2009/03/29(日) 18:18:24ID:eagJL9bR何故得意気なのか理解できんが、
それはサイズが変わるとは言わないだろ?
結局のところ、静的なサイズは確定している。
0985名前は開発中のものです。
2009/03/29(日) 21:00:34ID:aWInPsJ8RTTIしていると大問題。
なんか、微妙にスレ違いだし、
偉そうにしているといわれたようなので黙って老害は去りますね。
失礼しやした。
0986名前は開発中のものです。
2009/03/29(日) 22:56:36ID:8b86AGfHで、次スレはどうするんよ
0987名前は開発中のものです。
2009/03/30(月) 00:07:56ID:Ui9Ndm7F0988名前は開発中のものです。
2009/03/30(月) 01:19:18ID:Y8nEXzvT0989名前は開発中のものです。
2009/03/30(月) 01:54:36ID:1JQfO1aW> RTTIしていると大問題。
会話になってねぇww
0990名前は開発中のものです。
2009/03/30(月) 18:27:06ID:II/eiBAq{
{ //1フレーム間での処理
A ;
B ;
C ;
}
ScreenFlip();
}
すごく大まかに言って↑このようにゲーム作ってるのですが
CheckHitKeyの判定ってって「フレームの最初のみ」に行われるんでしょうか?
それとも「ifの処理があるごと」なんでしょうか?
もし後者ならif CheckHitKey(SPACE)==1 みたいな処理をA部とB部両方に入れた場合、
Aが行われてる瞬間にSPACE離しちゃったら
Aは行われてBは行われないっていうことも起きちゃうんでしょうか?
0991名前は開発中のものです。
2009/03/30(月) 18:39:19ID:x1tfO2A20992名前は開発中のものです。
2009/03/30(月) 18:42:02ID:b98OMwXUを使えば起きない
0994名前は開発中のものです。
2009/03/30(月) 18:46:45ID:x1tfO2A2適当な変数にそのフレームで一回押されたか押されてないかを記憶しておけばいいんでは?
main{
int space = 0;
while(うんたら){ //1フレーム間での処理
if (CheckHitKey(SPACE)==1)space=1;
A ;
B ;
C ;
space=0;
ScreenFlip();
}
}
0995名前は開発中のものです。
2009/03/30(月) 19:18:36ID:9Ep+SxhG「ifの処理があるごと」じゃなくて「ChecHitKey」が実行されるごとだけど、
ご想像の通り、1フレームに何回もチェックしてたら
Aでは行われてBでは行われないって事がおきるはずだね。
994さんが言われてるようにフレームの一箇所でだけチェックして記録しておくってのも手だけど、
やっぱり992さんの言われてるGetHitKeyStateAllが俺としてはお勧めかな。
これはこの命令だけで全てのキーの入力情報を記録するから、
フレームの最初に一回やっておけば、あとはそれを参照するだけでいい。
0996名前は開発中のものです。
2009/03/30(月) 20:06:33ID:II/eiBAq>>994
説明サンクス
上手くいきました!
>>995
なるほど、やはりでしたか。
それが原因のバグがでてましたがなんとか除けました。
0997名前は開発中のものです。
2009/03/30(月) 21:58:12ID:9rT9QBj30998名前は開発中のものです。
2009/03/30(月) 21:59:19ID:9rT9QBj30999名前は開発中のものです。
2009/03/30(月) 22:00:03ID:9rT9QBj31000名前は開発中のものです。
2009/03/30(月) 22:00:48ID:9rT9QBj310011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。