[過去ログ]
C++でRPGゲームを作成する (908レス)
C++でRPGゲームを作成する http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
837: ◆UUwiUCL1P6 [sage] 2011/03/26(土) 10:36:17.74 ID:pvmCllah 必要な変数(静的メンバ)を設定します。 .h public: enum { JOY1,JOY2,JOYMAX,}; private: static IDirectInput8* input; static IDirectInputDevice8* keyboard; static IDirectInputDevice8* mouse; static IDirectInputDevice8* joypad[]; static unsigned int joycnt; .cpp namespace { IDirectInput8* GameInput::input; IDirectInputDevice8* GameInput::keyboard; IDirectInputDevice8* GameInput::mouse; IDirectInputDevice8* GameInput::joypad[JOYMAX]; unsigned int GameInput::joycnt; } http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/837
838: ◆UUwiUCL1P6 [sage] 2011/03/26(土) 11:18:46.58 ID:pvmCllah DirectInputの初期化です。 GameInput::Init input = NULL; DirectInput8Create( GetModuleHandle( NULL ), DIRECTINPUT_VERSION, IID_IDirectInput8, reinterpret_cast< void** >( &input ), NULL ); GameInput::Free if ( input ) { input->Release(); input = NULL; } >>837 .hに#include <dinput.h>が必要でした。 http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/838
841: ◆UUwiUCL1P6 [sage] 2011/03/26(土) 14:20:22.37 ID:pvmCllah >>840 では、namespace{}での括りは外してしまってください。 http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/841
842: ◆UUwiUCL1P6 [sage] 2011/03/26(土) 14:22:30.73 ID:pvmCllah keyboardの初期化です。 GameInput::Init input->CreateDevice( GUID_SysKeyboard, &keyboard, NULL ); keyboard->SetDataFormat( &c_dfDIKeyboard ); keyboard->SetCooperativeLevel( Window.Handle(), DISCL_FOREGROUND|DISCL_NONEXCLUSIVE ); { DIPROPDWORD dipd = {}; dipd.diph.dwSize = sizeof( DIPROPDWORD ); dipd.diph.dwHeaderSize = sizeof( DIPROPHEADER ); dipd.diph.dwObj = 0; dipd.diph.dwHow = DIPH_DEVICE; dipd.dwData = 8; keyboard->SetProperty( DIPROP_BUFFERSIZE, &dipd.diph ); } keyboard->Acquire(); GameInput::Free if ( keyboard ) { keyboard->Unacquire(); keyboard = NULL; } http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/842
844: ◆UUwiUCL1P6 [sage] 2011/03/26(土) 14:40:47.38 ID:pvmCllah WINDOWクラスに下記の関数を作成してください。 public: const HWND Handle( void ) const { return handle; } >>842 GameInput::Init keyboard = NULL // ねんのため追加してください input->CreateDevice( GUID_SysKeyboard, ... GameInput::Free: 解放の順番は初期化と反対にしてください。 input初期化->keyboard初期化 〜 keyboard解放→input解放 http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/844
848: ◆UUwiUCL1P6 [sage] 2011/03/26(土) 16:40:45.61 ID:pvmCllah >>845 下記を宣言してください。 extern WINDOW window; この先いろんなところで参照するので、ヘッダに記載した方がよいです。 (>>846)のような意見も出ていますし、ソースを断片的に記載していくのは効率や誤謬が出やすいので、 別の手段を検討したほうがよいかも知れません。 ブログかアップローダを指定いただければそちらでお渡ししますんで、 ご検討ください。 http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/848
849: ◆UUwiUCL1P6 [sage] 2011/03/26(土) 16:53:57.96 ID:pvmCllah extern WINDOW Window; でした(最初大文字) ソース全体でこれだけはグローバル変数にしています。 他の変数はクラスの静的メンバでprivateにしています(IDirectInput8* input等)。 ここに書いてやり取りするのは楽でいいんですけど先々難しそうですね。 スレッドのリサイクル法が適用されて日記帳扱いになればOKかも。 http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/849
851: ◆UUwiUCL1P6 [sage] 2011/03/26(土) 18:14:33.03 ID:pvmCllah >>850 gmdevにDirectInputの.h/.cppを置きました。 ttp://gmdev.xrea.jp/st/up/245.txt >common.hみたいなヘッダ そうです。自分専用のマクロとか定義とかの置き場にヘッダ作りますよね。 そこに入れておいてください。 ついでに↓もお願いします。 #define ARRAY(a) (sizeof(a)/sizeof(a[0])) 配列の要素数のマクロです。 置いたソースですが現在の自分のソースからいろいろはしょって整形しているので、 部分的に文法がおかしくなったりで、エラーがでるかも知れません。 それはすいませんがうまく直してください。 http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/851
854: ◆UUwiUCL1P6 [sage] 2011/03/26(土) 19:15:55.16 ID:pvmCllah >>852 index は static です。付け忘れました。 >>853 DATA_MAXです。記述ミス。 入力ワーク回りで間違い多いのは、現在その部分は環状リストで可変長で実装しているので、 急ごしらえで変更したためです。 一部、ヘッダにあって実装されていない関数(JoyPush等)は実際にゲーム中で使用する関数です。 これはGameInput.cppとは別ファイルにした方がよいです。 GameInput.cppはいったん完了するとほとんどいじらなくなります。 ライブラリィ化してもいいかも知れません。 http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/854
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.026s