- 1 名前:名前は開発中のものです。 mailto:sage [2012/02/23(木) 21:35:32.53 ID:Si08WDH/]
- Cを習得した程度のスキルでも、
ゲームのグラフィックを比較的容易に描画する事のできる、 「DXライブラリ」に関するスレッドです。 DXライブラリに関するテクニックなどの情報交換などを行う事で、 多くのDXライブラリユーザのスキルの向上に役立てたら幸いです。 【公式】 homepage2.nifty.com/natupaji/DxLib/ 【過去スレ】 DXライブラリ 総合スレッド pc11.2ch.net/test/read.cgi/gamedev/1197468399/ DXライブラリ 総合スレッド 2008 pc11.2ch.net/test/read.cgi/gamedev/1224923873/ DXライブラリ 総合スレッド その3 pc11.2ch.net/test/read.cgi/gamedev/1238429676/ DXライブラリ 総合スレッド その4 pc11.2ch.net/test/read.cgi/gamedev/1249822550/ DXライブラリ 総合スレッド その5 pc11.2ch.net/test/read.cgi/gamedev/1259912953/ DXライブラリ 総合スレッド その6 hibari.2ch.net/test/read.cgi/gamedev/1267108154/ DXライブラリ 総合スレッド その7 hibari.2ch.net/test/read.cgi/gamedev/1286180687/ DXライブラリ 総合スレッド その8 hibari.2ch.net/test/read.cgi/gamedev/1301818631/ DXライブラリ 総合スレッド その9 hibari.2ch.net/test/read.cgi/gamedev/1310904069/ DXライブラリ 総合スレッド その10 hibari.2ch.net/test/read.cgi/gamedev/1313655495/ DXライブラリ 総合スレッド その11 toro.2ch.net/test/read.cgi/gamedev/1322844235/
- 608 名前:名前は開発中のものです。 mailto:sage [2012/05/10(木) 12:34:52.15 ID:4XOda0N/]
- 10数年前の常識だから、今はバンバン使ってもいい
つーか使わなきゃ3Dゲーム作れないよ・・・
- 609 名前:名前は開発中のものです。 mailto:sage [2012/05/10(木) 13:22:25.06 ID:v9pLXRdM]
- sin cos テーブルなら俺今も使ってるけどね。
同じ計算何度もさせるのに、いちいちsin cos 再計算させるとか無駄だし。
- 610 名前:名前は開発中のものです。 mailto:sage [2012/05/10(木) 15:04:57.12 ID:kc9Z57zY]
- テーブルなんて使ってたら超長距離の狙撃ゲーとかできなさそう
- 611 名前:名前は開発中のものです。 mailto:sage [2012/05/10(木) 15:11:34.69 ID:tfJkmKLP]
- テーブルの間の値を取るときに線形補完でもすれば結構使えそうな気はするな
- 612 名前:名前は開発中のものです。 [2012/05/10(木) 15:21:30.43 ID:VHianwBM]
- 内積とか使わないの?
- 613 名前:名前は開発中のものです。 mailto:sage [2012/05/10(木) 15:23:18.02 ID:v9pLXRdM]
- そんなピンポイントな仕様の時だけテーブル使わなければいいだけじゃ。
CPU性能が上がったからテーブル使わなくていいじゃん、て理屈なら メモリ増えたからテーブル大きくしてもいいじゃん、って手もあるし。
- 614 名前:名前は開発中のものです。 mailto:sage [2012/05/10(木) 16:45:22.46 ID:dVfrJx5F]
- でかいテーブルにキャッシュ圧迫される位なら素直に計算したほうが速いと思う
- 615 名前:名前は開発中のものです。 mailto:sage [2012/05/10(木) 16:58:49.22 ID:dtfgAWXR]
- インタプリタで弾幕STGが作れる時代だぜ?
- 616 名前:名前は開発中のものです。 mailto:sage [2012/05/10(木) 18:55:39.93 ID:v9pLXRdM]
- 俺も最初は普通に計算させていたが、「これテーブルでいけるんじゃね?」と思って
テーブル処理させるようにしたら、スピードは変わらなかったがCPUファンが急に静かになった。 また、随分前に別のスレで同様の議論が起こった時、サンプルコード作って実測値を求め、 コードとその結果を晒すと、今までなんだかんだと言ってた連中は黙り込んだ。 つまり比較検討すらせずに論じてたわけだ。 よって俺は、PC性能が向上したからテーブル処理は不要という説は机上の空論だと思ってる。
- 617 名前:名前は開発中のものです。 mailto:sage [2012/05/10(木) 19:02:46.00 ID:sVBnl2Jo]
- 三角関数のコストの話題をsinテーブルで例えたのは俺だけど
特に誰もそれを不要とか言ってないからね 俺もちゃんと的確な場所で使えば今でも十分通じる最適化の手法だと思っております
- 618 名前:名前は開発中のものです。 mailto:sage [2012/05/10(木) 20:11:40.30 ID:ZR8vamBu]
- テーブルで処理してる人って固定小数点数とか使ってるの?
俺は浮動小数点数使ってるんでテーブル化の恩恵とかいまいちピンとこない グラフィックの処理限界が先に来るんでCPUの処理速度に無頓着なのもあるんだろうけど
- 619 名前:名前は開発中のものです。 mailto:sage [2012/05/10(木) 20:51:13.05 ID:mUHUEJ/5]
- VCで数学系の関数を高速化する命令ってなかったっけ? 内部でテーブル作ってくれるやつ
- 620 名前:名前は開発中のものです。 mailto:sage [2012/05/10(木) 21:35:16.35 ID:2KkjXKar]
- アプリケーションの計算頻度しだいで必要としか言いようがない。
- 621 名前:名前は開発中のものです。 mailto:sage [2012/05/10(木) 21:41:39.79 ID:dtfgAWXR]
- 数年前のCPUでさえ、普通に毎回計算しても弾幕シューで一万発60フレーム出せるし
core2とかなら更に数倍計算できるだろうし
- 622 名前:名前は開発中のものです。 mailto:sage [2012/05/10(木) 21:52:54.52 ID:e/HoFmGV]
- 1日目 dxlibraryをインストール
2日目 visual c++をインストール 3日目 Dxlibraryのサンプルプログラムを観賞 4日目 リファレンスを見て関数勉強 5日目 リファレンスサイトを探す 6日目 you tubeを見て作品観賞 7日目 ニコニコ動画を見て作品観賞 8日目 Dxlibraryの普及度をネットで調べる こんな感じで一向にゲーム作る気になりませんでした^o^ やる気はあるんだよ? バイトしてるほうがマシだなでもww
- 623 名前:名前は開発中のものです。 mailto:sage [2012/05/10(木) 21:56:57.00 ID:8OIpRinM]
- sinテーブルなんかは最適化には有効だけど、
わざわざsinテーブルなんて作るよりベタ書きでいいじゃんって話でしょ。 毎秒何フレーム描画したいかにもよるけど、どんな酷い書き方しても今のCPUなら最低でも60fpsは出るぞ。 そもそもcore2なんて化石だしなあ。 三千円出してSandyのCeleronでも買えばいい。
- 624 名前:名前は開発中のものです。 mailto:sage [2012/05/10(木) 22:01:40.33 ID:8OIpRinM]
- >>622
お前みたいなやつに限ってやる気はあるってのが口癖だったりするんだよな。 自分でもう一度眺めてみろよ。 既にdxlibをインストールしてるのに、後から普及率を調べたり リファレンスがあるのに、別のリファレンスサイトを探したり、 今までいろいろなゲームを見たことがあるはずなのに、今さらゲーム作品を鑑賞している。 全部プログラムを書くことからの逃げでしかないだろ。 1時間程度でvc++インストールしてdxlib入れて、リファレンスとにらめっこしながら書きはじめない時点でやる気が無いのと同じ。
- 625 名前:名前は開発中のものです。 mailto:sage [2012/05/10(木) 22:01:42.65 ID:K6/fMJqa]
- atan2は普通に使ってるけど、
1/60sec.内に必ず処理が終わるようにしなければならない、っていう決めのもとで、 newとdeleteなど動的なメモリ確保する処理がこわくて使えない 具体的にはSTLのmapがこわくて使えない 低確率であろうとも負荷が集中して1/60secを超えるリスクがもしあるのなら、と思って使ってない そんなことがあるのか、よくわからないんだけど で、全インスタンスを予め確保して使ってる アクションゲーならあらかじめ敵最大1000匹とか決めておいて、インスタンス1000個を配列で確保して、 で1個1個に生死フラグをもたせてる
- 626 名前:名前は開発中のものです。 mailto:sage [2012/05/10(木) 22:07:23.83 ID:feNuwH83]
- >>621
自分弾幕やらないからよく分からないのだけど 解像度800x600 で 8x8の小さなドット敷き詰めても 7500発にしかならないと思うんだ 一体どんなゲーム(計算方法が分かっているならツール?)なんだろ
- 627 名前:名前は開発中のものです。 mailto:sage [2012/05/10(木) 22:08:02.47 ID:e/HoFmGV]
- >>624
石橋を叩いて渡るタイプだから俺はw
- 628 名前:名前は開発中のものです。 mailto:sage [2012/05/10(木) 22:12:18.01 ID:e/HoFmGV]
- どっちかっていうと勉強できない奴がゲーム作るのに逃げたって風潮なのに
回転座標とか行列とか、三角関数とか嫌にならないのかね。
- 629 名前:名前は開発中のものです。 mailto:sage [2012/05/10(木) 22:15:05.37 ID:dtfgAWXR]
- >>626
あくまで昔作ってたゲームでどこまで弾が出せるかの計測の結果だから、実際のゲームでそんなに出したわけじゃないよ なので、普通にゲーム作る分には三角関数は最適化しなくても余裕はあまりまくるって意味 >>627 やらない奴のテンプレすぎるw
- 630 名前:名前は開発中のものです。 mailto:sage [2012/05/10(木) 22:15:53.49 ID:e/HoFmGV]
- 内積はベクトルが作る面積、外積は体積だよな。
- 631 名前:名前は開発中のものです。 mailto:sage [2012/05/10(木) 22:17:05.95 ID:dtfgAWXR]
- 高校の頃は、ゲームに活用できる単元だけテストの点数高かったな
ゲーム制作に活かせることなら興味モリモリだろ普通
- 632 名前:名前は開発中のものです。 mailto:sage [2012/05/10(木) 22:39:01.08 ID:yUL5kazs]
- >>627
渡ってないだろw
- 633 名前:名前は開発中のものです。 mailto:sage [2012/05/10(木) 23:03:40.82 ID:um7ucooq]
- 目的なくリファレンス見ても何も頭に入らないと思うんだが
- 634 名前:名前は開発中のものです。 mailto:sage [2012/05/11(金) 00:12:18.56 ID:7pB6w4/u]
- ロダやパス聞いて叩かれてるタイプ
- 635 名前:名前は開発中のものです。 mailto:sage [2012/05/11(金) 00:16:59.89 ID:IxDfbQFz]
- グローバル変数使いまくってたのをクラスにまとめてすっきりしたと思ったら100エラー越えて泣いた。
オブジェクトの宣言てどこですればいいの。もうexternは使わんと決めたお…
- 636 名前:名前は開発中のものです。 mailto:sage [2012/05/11(金) 00:19:27.34 ID:GbmOtmCH]
- 同じスタイルでやるならexternの数を減らせる以外の効果は無いと思うよ
externが一個で済むようになるならいいじゃん
- 637 名前:名前は開発中のものです。 mailto:sage [2012/05/11(金) 00:46:06.52 ID:IxDfbQFz]
- >>636
散らかってた変数や関数を複数のクラスにまとめたってこと。そして素人の俺はクラスの数だけexternすることに。 もっとゲーム設計に適したやり方はないの?とお前さんらに泣きついた次第
- 638 名前:名前は開発中のものです。 mailto:sage [2012/05/11(金) 00:53:39.42 ID:N2bOf4fY]
- セーブ・ロードするんでもなきゃ、下手にクラスにまとめないほうがいいよ
クラスにまとめるくらいなら、ネームスペースで囲っとけ
- 639 名前:名前は開発中のものです。 mailto:sage [2012/05/11(金) 01:04:26.09 ID:IxDfbQFz]
- >>638
クラスは便利って聞いたから慣れようとしたんだけどね。いろいろ試してみる
- 640 名前:名前は開発中のものです。 mailto:sage [2012/05/11(金) 02:39:58.68 ID:bSxE0QNK]
- クラスの実体をグルーバル変数にしない→どうやって実体化したクラスにアクセスするか?→ポインタ(リファレンス)を渡す
後はメンバのアクセス権とかを設定すればなんとなくC++っぽいプログラムになる
- 641 名前:名前は開発中のものです。 mailto:sage [2012/05/11(金) 02:51:15.70 ID:B2rtNnmh]
- 基本的にexternてextern "C"位しか使わないはずだけどな
ポインタの引数渡しだとかシングルトンとかでポインタ返したりするので間に合うし #pragma once等で多重インクルード防止してるよね?
- 642 名前:名前は開発中のものです。 [2012/05/11(金) 08:33:33.00 ID:ZM042uCS]
- 目的が達成されればやり方はなんでもいいんだよ
- 643 名前:名前は開発中のものです。 mailto:sage [2012/05/11(金) 10:30:32.73 ID:3e5VHKoo]
- クラス設計見てないからなんとも言えんが、
ゲーム総括クラスを一つwinmainで メッセージループ入る前やWM_CREATEで生成、終了時破棄ってのが普通じゃないか? ってかDXライブラリ関係ないな。クラス設計スレあったと思うよ。
- 644 名前:名前は開発中のものです。 mailto:sage [2012/05/11(金) 10:45:55.87 ID:vcjHam5B]
- >>625
毎フレームmapに自前でnewはあんまやらないと思う 別コンテナにすでにインスタンス確保してあるなら、 そのポインタかスマートポインタを入れたらいんじゃね
- 645 名前:名前は開発中のものです。 mailto:sage [2012/05/11(金) 17:14:52.22 ID:ROU9gqxB]
- DXライブラリって直接半透明に画像描画することって出来ないのかな?
透明メッセージ枠やりたかったけどSetDrawBlendModeが必須なのか…
- 646 名前:名前は開発中のものです。 mailto:sage [2012/05/11(金) 18:12:28.51 ID:dJRyU0/j]
- 普通は、それができるようにDXライブラリを更にラッピングして描画関数やフレームワークを作る
- 647 名前:名前は開発中のものです。 mailto:sage [2012/05/11(金) 18:21:46.43 ID:ZalIzh5v]
- α情報ある画像ならいけるよ
- 648 名前:名前は開発中のものです。 mailto:sage [2012/05/11(金) 19:17:48.33 ID:3dGi95mh]
- 透明メッセージ枠くらいならアルファ画像の方がいいんじゃないかな。
- 649 名前:名前は開発中のものです。 [2012/05/11(金) 22:34:22.76 ID:4SsxSVut]
- フリーゲーム紹介サイト一覧(登録関係)
ttp://www.geocities.jp/y_u_n_o_a/distribution/chapter1-2.html ゲームを制作したらここへ
- 650 名前:名前は開発中のものです。 mailto:sage [2012/05/11(金) 23:02:20.93 ID:y/guoP93]
- 自貼りするのは構わんが、あちこちのスレにマルチはするなよ。
- 651 名前:名前は開発中のものです。 mailto:sage [2012/05/11(金) 23:46:30.66 ID:o/+Gc2jH]
- 透明画像なんて使えたのか…
- 652 名前:名前は開発中のものです。 mailto:sage [2012/05/12(土) 00:05:05.70 ID:c1qmluZz]
- >>644
ありがとう STLのmapでのinsert/eraseでsecondをポインタにするのなら、 ほとんどnewとかdelete発生しない (か発生してもサイズが小さいから、負荷が集中しても1/60sec超えるほどにはならない) ってことか mapが内部的に保持している要素数をオーバーしたときに再配置が生じるくらいかな… 先に大量に配置してからclearしておけばいいのかな 1/60secに常に収まることが必要な敵オブジェクトやタスクの管理にもmapは使えそうな気がしてきた 必要に応じてvector/set/multimapあたりになるのかもしれんけど
- 653 名前:名前は開発中のものです。 mailto:sage [2012/05/12(土) 00:12:48.35 ID:nwxeejja]
- 宣言した変数に文字を代入したいんだけどcharやintじゃダメなのかな
char Sound = BGM1; みたいにやってるんだけどどうも美味くいかない 文字はcharだと思ってたんだが
- 654 名前:名前は開発中のものです。 mailto:sage [2012/05/12(土) 01:06:33.81 ID:nwxeejja]
- ごめん分かり辛かったかもしれない
--main.cpp----------------------------------------------- int BGM001 = LoadSoundMem( "BGM/音声.mp3" ); int BGMVol = 255; //BGM音量 int SEVol = 255; //SE音量 char SoundSet,SoundVol = BGM001 , 255; void Sound_On(); --Sound.cpp---------------------------------------------- char SoundSet = 0; int SoundVol = 0; void Sound_On(){ ChangeVolumeSoundMem( SoundVol, SoundSet ); } -------------------------------------------------------- こんな感じで指定するだけで流すBGMとその音量を楽に変えられるようにしたいんだけど 文字列が使えないとなるとここからどうすればいいんだろう全く分からない
- 655 名前:名前は開発中のものです。 mailto:sage [2012/05/12(土) 01:14:46.09 ID:Sk4hsssu]
- Cの基礎文法から地道に勉強したほうがいいよ
勉強するのが嫌ならchar[]とかstringで検索
- 656 名前:名前は開発中のものです。 mailto:sage [2012/05/12(土) 10:20:02.82 ID:oiw6jIIK]
- おっぱい
- 657 名前:名前は開発中のものです。 [2012/05/12(土) 11:08:26.00 ID:4PAPvi2J]
- >>654
ツリーマップとかハッシュマップがしたいんじゃないか?
- 658 名前:名前は開発中のものです。 mailto:sage [2012/05/12(土) 11:33:22.89 ID:pM6R2rdg]
- stringってなんだよ
char*やchar[]となにが違うんだ
- 659 名前:名前は開発中のものです。 mailto:sage [2012/05/12(土) 11:44:07.77 ID:pM6R2rdg]
- 動的に配列を確保したぃだけどできる?
kurasu hoge[] = new kurasu[i]
- 660 名前:名前は開発中のものです。 mailto:sage [2012/05/12(土) 11:44:13.65 ID:7ZI1drDU]
- なにって、文字列長可変できることに決まってるじゃまいか
- 661 名前:名前は開発中のものです。 mailto:sage [2012/05/12(土) 11:46:31.53 ID:7ZI1drDU]
- >>659
vector使っとけ
- 662 名前:名前は開発中のものです。 mailto:sage [2012/05/12(土) 13:15:24.26 ID:Y7LnpGkk]
- >>654
色々とダメすぎ。 char型にint型を代入しようとしているし、 char SoundSet,SoundVol = BGM001 , 255; こんな代入ってできたっけか? 少なくとも、このコードで文字列を使うようなところはないぞ。 LoadSoundMem()の引数で使うのなら別だけど。 最低でも、配列ぐらいは勉強しようぜ
- 663 名前:名前は開発中のものです。 mailto:sage [2012/05/12(土) 13:20:23.81 ID:scKJS9wa]
- >>654
"BGM/音声.mp3"以外に文字列使ってるところないと思うけど あとcharは+-127で 255いれるならアンサインドしないといけない。 SoundVol = BGM00はキャストしないといけないけど int型のハンドルからcharにいれるとおかしくなる
- 664 名前:名前は開発中のものです。 mailto:sage [2012/05/12(土) 13:33:12.14 ID:e6ix4ssi]
- charがsignedとは決まってないぞ?
unsignedとも決まってないが
- 665 名前:名前は開発中のものです。 mailto:sage [2012/05/12(土) 14:03:15.85 ID:Cm45Qp6Q]
- >>664
釣乙と思って調べてみたらマジで処理系依存だった。 今まで何も意識してなかったんだぜ。
- 666 名前:654 mailto:sage [2012/05/12(土) 14:28:24.06 ID:6R8HK7WJ]
- ダメ過ぎてごめんなさい
charもstringも使わずに出来ました、レスくれた人ありがとう
- 667 名前:名前は開発中のものです。 mailto:sage [2012/05/12(土) 16:54:50.46 ID:MLybp27S]
- atan2って0渡すと落ちない?
- 668 名前:名前は開発中のものです。 mailto:sage [2012/05/12(土) 17:17:40.32 ID:aTzzNn3r]
- c#用のdxlibがあるらしいけど、
使い心地はc用と比較してどう?
- 669 名前:名前は開発中のものです。 mailto:sage [2012/05/12(土) 17:49:08.27 ID:bBRavtqR]
- >>667
処理系依存なのでVCは0を返す BCCならエラーになるかも GCCは0だったかな?
- 670 名前:名前は開発中のものです。 mailto:sage [2012/05/12(土) 18:04:49.21 ID:e6ix4ssi]
- >>667
C99対応処理系の場合、設定次第で例外を生成する
- 671 名前:名前は開発中のものです。 mailto:sage [2012/05/12(土) 18:47:25.96 ID:dhHNv3dR]
- >>668
構造体名が全部大文字だったり C#ならenumを使うようなところが全部const静的メンバだったり C#を使い込んでいる人ほど使いにくいと感じるかもしれない 個人的な感想をいうと 「どうしてもC#で使いたい人向けにとりあえず用意しました」 という感じが強い 使い心地という観点では、正直あまり良くない まぁ、もともとCやC++用のライブラリだから仕方ないんだけどね
- 672 名前:名前は開発中のものです。 mailto:sage [2012/05/12(土) 19:15:17.60 ID:qdtYJdCq]
- enumで定義して欲しいとかはC/C++でもあるけどね
演算に利用するような定数でもなければ、型で縛っといてくれた方が安全だし
- 673 名前:名前は開発中のものです。 mailto:sage [2012/05/12(土) 22:25:31.97 ID:0khMsYy7]
- 練習に簡単なじゃんけんゲー作ってたら面白くなってきた
- 674 名前:名前は開発中のものです。 [2012/05/12(土) 22:35:13.58 ID:vkMbVikO]
- どうせ軽いフレームワークは自作するんだろ?
そのついでにC#らしからぬ所を隠してしまえばいい。
- 675 名前:名前は開発中のものです。 mailto:sage [2012/05/12(土) 23:07:24.89 ID:zvVDUBCv]
- >>652
再配置ってvectorなんかで起こるメモリの再割り当て? ↑ならmapでは特に気にしなくていんじゃないかな
- 676 名前:名前は開発中のものです。 mailto:sage [2012/05/13(日) 00:34:39.15 ID:a5SCC/ey]
- ゲームプログラミング作り難しすぎ。
O型のやつは大雑把だから細かいプログラミングは絶対不向きだな。
- 677 名前:名前は開発中のものです。 mailto:sage [2012/05/13(日) 00:59:03.31 ID:2yoWSG9U]
- 言い訳乙
- 678 名前:名前は開発中のものです。 mailto:sage [2012/05/13(日) 01:59:31.47 ID:SIc+R5jE]
- >>675
そうなん? 例えば10個の、敵その他オブジェクトへのポインタをmapにinsert/eraseをしてて、 場面によってオブジェクトが1000個に増えるようなときって、 mapが持ってるメモリ上の領域って10個分から1000個分に拡張されるんじゃないかなとか思う でそのときに再配置というか、追加割り当てが発生するんじゃないかなとか まぁその規模の処理で1/60秒食われるわけもないから、気にする必要もないのか…
- 679 名前:名前は開発中のものです。 mailto:sage [2012/05/13(日) 02:18:54.50 ID:oOXluPnN]
- プログラミングが難しいとか正気か?
- 680 名前:名前は開発中のものです。 mailto:sage [2012/05/13(日) 02:30:01.68 ID:ClwAHpRU]
- こういう場で血液型占い持ち出すやつは文系でも最下層の人間だろうから難しくても無理はない
- 681 名前:名前は開発中のものです。 mailto:sage [2012/05/13(日) 05:10:58.13 ID:lpryfgyO]
- >>678
最初にリザーブしとけばいいんじゃね?
- 682 名前:591 mailto:sage [2012/05/13(日) 08:53:27.43 ID:8OrJeLU+]
- >>591
DXライブラリをビルドして試してみました。 >>399 さんの推測で当たりのようです。 DxGraphics2.cppの4134〜4168行をコメントアウトして GRH.FrameTime=16; にしたら動きました。(16という値は1000(ms)/60(fps)=16.666...ですよね多分) 上の行番号はDXライブラリ3.05での値で3.07だと変わっていると思うので、 // 1フレームの時間を取得しておく のコメントの部分を探して、そこを同様に変更すればとりあえず回避できると思います。 ログ出力を埋め込んで見たところ、当該処理の中で呼び出している GetRasterStatus()×4のうち、2番目のfor(;;)ループ (// VBlank が終わるのを待つ)が無限ループしてるようです。 回避策は分かったけど、正しい修正方法までは分かりませんでした。 当該処理の中で呼び出しているGetRasterStatus()がおかしな値を返して 来ている?ようですが、原因まで調べるだけの知識・スキルは有りませんでした。 公式サイトの掲示板の方にも報告しようと思いますが、VirtualBox固有の問題 だと思うので、作者さんのところに環境が無いと調べて対策するのは難しいでしょうね...
- 683 名前:名前は開発中のものです。 mailto:sage [2012/05/13(日) 09:01:44.64 ID:9MSRAsYc]
- >>679
じゃあジャンケンのプログラムを余計なとこは省いてレス行以内で書けるか?
- 684 名前:名前は開発中のものです。 mailto:sage [2012/05/13(日) 09:21:17.97 ID:NHkyJdx+]
- #include <stdlib.h>
#include <stdio.h> #include <time.h> void shoubu(int a, int b) { char* hand[] = {"グー", "チョキ", "パー"}; printf("あなた:%s vs 相手:%s\n", hand[a], hand[b]); if (a == b) printf("あいこだった\n"); else if ((a+1)%3 == b) printf("あなたの勝ち!\n"); else printf("相手の勝ち!\n"); } void main() { unsigned int a; srand(time(0)); printf("あなたの手は?(0=グー, 1=チョキ, 2=パー):"); scanf("%d", &a); shoubu(a%3, rand()%3); }
- 685 名前:名前は開発中のものです。 mailto:sage [2012/05/13(日) 09:29:20.51 ID:EZnOWHsv]
- なにこれうごかない
- 686 名前:名前は開発中のものです。 mailto:sage [2012/05/13(日) 09:30:56.65 ID:oOXluPnN]
- ちょ、俺書いてたのにw
- 687 名前:名前は開発中のものです。 mailto:sage [2012/05/13(日) 09:52:50.74 ID:w1fS3w9l]
- w
- 688 名前:名前は開発中のものです。 mailto:sage [2012/05/13(日) 09:58:44.99 ID:AAmzPGEo]
- >>671
ありがとう 公式に機械的にc#用に変換したとあったね おとなしくxna使うわ
- 689 名前:679 mailto:sage [2012/05/13(日) 10:02:11.55 ID:oOXluPnN]
- #include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ){ if( DxLib_Init() < 0 ) return -1; int game=0,zibun=-1,aite=0,hantei=0,temp=0;//ゲームの状態・自分・相手・判定・勝敗チェック用の char* hand[] = {"グー", "チョキ", "パー"};//パクった グー=0 チョキ=1 パー=2 char* win[] = {"勝ちました", "負けました", "あいこでした"}; SRand(GetNowCount()); SetDrawScreen( DX_SCREEN_BACK ) ; while( ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0 ){ switch(game){ case 0://初期化 aite=GetRand(2); game=1; break; case 1://入力待ち DrawString(0,0,"グー=Z チョキ=X パー=C 選んでからスペースキーでバトル",GetColor(255,255,255)) ; if(zibun!=-1)DrawFormatString(0,32,GetColor(255,255,255),"現在の選択は「%s」",hand[zibun]) ; if(CheckHitKey(KEY_INPUT_Z))zibun=0; if(CheckHitKey(KEY_INPUT_X))zibun=1; if(CheckHitKey(KEY_INPUT_C))zibun=2; if(zibun!=-1 && CheckHitKey(KEY_INPUT_SPACE))game=2; break; case 2://判定 DrawFormatString(0,0,GetColor(255,255,255),"自分の手は「%s」、相手の手は「%s」",hand[zibun],hand[aite]) ; if(zibun==aite)hantei=2; else{ temp=zibun;if(temp==2)temp=-1;if((temp+1)==aite)hantei=0;else hantei=1;} if(zibun!=-1)DrawFormatString(0,32,GetColor(255,255,255),"%s。エンターキーで再戦、ESCで終了",win[hantei]) ; if(CheckHitKey(KEY_INPUT_RETURN))game=0; break; }; ScreenFlip(); ClearDrawScreen(); } DxLib_End(); return 0; }
- 690 名前:名前は開発中のものです。 mailto:sage [2012/05/13(日) 10:06:18.59 ID:oOXluPnN]
- コード汚すぎるけどDXライブラリで動く的な
- 691 名前:名前は開発中のものです。 mailto:sage [2012/05/13(日) 10:07:06.00 ID:W1RKjCLb]
- DXライブラリ関係ない話が多いなw
>>685 全角スペース消せ
- 692 名前:名前は開発中のものです。 mailto:sage [2012/05/13(日) 10:09:01.24 ID:Ls9MBT4q]
- ksに付き合うなよ…w
- 693 名前:名前は開発中のものです。 mailto:sage [2012/05/13(日) 10:18:47.38 ID:oOXluPnN]
- 問題を出されると組みたくなるのはプログラマの性
- 694 名前:名前は開発中のものです。 mailto:sage [2012/05/13(日) 10:27:17.86 ID:pjQ/YiEQ]
- >>689
いいね
- 695 名前:名前は開発中のものです。 mailto:sage [2012/05/13(日) 11:18:22.18 ID:SIc+R5jE]
- >>681
reserveはvector系にはあるけど、map系にはないみたい >>652のやりかた(最初にたくさん確保してからclear)をすればいいのかもしれない
- 696 名前:名前は開発中のものです。 mailto:sage [2012/05/13(日) 12:16:43.99 ID:8C9TJ7oh]
- mapって配列で保持してるとでも思っているか…
- 697 名前:名前は開発中のものです。 mailto:sage [2012/05/13(日) 12:17:22.35 ID:2jBPxDkl]
- >>678
再配置ってのが push_backしまくってvectorが確保したメモリ超えたときに起こる メモリの再確保&要素全コピー&古い領域解放のことだと思って mapじゃ起こらないから気にしなくていんじゃねって思ってレスした vectorは>>681に同意でreserveとセットだと思ってる
- 698 名前:名前は開発中のものです。 mailto:sage [2012/05/13(日) 12:38:55.03 ID:SIc+R5jE]
- >>696,697
たしかに、その話ではないね。 言いたかったのは、 ・mapの実装が、要素間をポインタでリンクしてるものだとする。 ・mapに要素を追加した場合は、 既存の要素が持っているポインタ値が、新要素へのリンクを示す値になる だから… あっごめん再配置の問題ないわー
- 699 名前:名前は開発中のものです。 mailto:sage [2012/05/13(日) 17:18:26.44 ID:JYF+zVYV]
- 途中で何度も挿入と削除繰り返す場合は
要素でアクセスする必要ないならlistのが良いし ソート不要ならunordered_maptも考慮してもいい
- 700 名前:名前は開発中のものです。 mailto:sage [2012/05/13(日) 18:37:46.05 ID:SIc+R5jE]
- >>699
ありがとう 例えば敵オブジェクトを1000要素の配列に入れて、存在フラグtrue/falseで管理し、 存在フラグtrueのものだけ処理を行う、という用途で、 要素検索によるランダムアクセスしないなら、 listが向いてるって感じか 用途に応じて選ぶ際の参考になるわ
- 701 名前:名前は開発中のものです。 [2012/05/13(日) 18:38:44.99 ID:pSj6hJ1W]
- map, vector, listでクラス使う際は
ポインタ <T*> を使うのがいいんだな javaやってて気付いた
- 702 名前:名前は開発中のものです。 mailto:sage [2012/05/13(日) 22:06:28.55 ID:4FieMYmt]
- vectorでどうやって動的にクラス配列確保するんだよ( ;´Д`)
- 703 名前:名前は開発中のものです。 [2012/05/13(日) 22:18:11.78 ID:pSj6hJ1W]
- だからポインタ使えって。コピーコンストラクタ書かずに済むし速い。
プリミティブなら逆にポインタ使わないほうがいいけど。
- 704 名前:名前は開発中のものです。 mailto:sage [2012/05/13(日) 23:02:43.31 ID:SIc+R5jE]
- >>701の<T*>をぐぐったけどよくわからんかった
ので>>702もよくわからんし>>703もわからん もちろんプリミティブならそのままsecondに代入しちゃってのはわかる
- 705 名前:名前は開発中のものです。 mailto:sage [2012/05/13(日) 23:22:05.25 ID:SToQPpoQ]
- 普通にvector使えばいいんじゃないの?
- 706 名前:名前は開発中のものです。 [2012/05/13(日) 23:22:50.12 ID:pSj6hJ1W]
- >>704
Hogeなら vector<Hoge*>ってこと。 するとSTLが管理するのはポインタの配列だけで ポインタが指すインスタンスは結局自分でnew(), delete()する必要があるね。 vector::push_back()とかにあわせて 参照先new(), delete()するラップクラス作っちゃったり。
- 707 名前:名前は開発中のものです。 mailto:sage [2012/05/14(月) 00:20:26.40 ID:nfhDOHHW]
- ああ、T*というところがわからなかったけど、
要はmapならsecondにはポインタを入れておけばいいってことで、 >>644と同じことをいってるってことね
- 708 名前:名前は開発中のものです。 mailto:sage [2012/05/14(月) 12:57:31.44 ID:BTxAOBmy]
- mapならというかコンテナ全般、プリミティブじゃないなら
ほとんどの場合ポインタかスマートポインタになると思う インスタインス生成する場合でも生成してからポインタをコンテナに入れる
|

|