とりあえずSeleneでキーボード入力

とりあえず前のHelloWorldの文字をキーボードの十字キーで移動させるようなプログラムに直してみました

Peripheral::IKeyboardを生成して、GetKeyData関数でキー情報を取るだけでした

main.cpp("*"がついているのが追加・修正したところです)
  1. #include <Selene.h>
  2. ///////////////////////////////////////////////////////////////
  3. int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
  4. {
  5. using namespace Selene;
  6. //
  7. ICore* pCore=NULL;
  8. IGraphicCard* pGraphicCard=NULL;
  9. Renderer::IRender* pRender=NULL;
  10. Peripheral::IKeyboard* pKeyboard=NULL; // *
  11. // *HelloWorldの位置*
  12. Math::Point2DI Pos(0,0); // *
  13. // システムの初期化
  14. System::Initialize();
  15. // コアの生成
  16. pCore=System::CreateCore();
  17. // 初期化
  18. if(!pCore->Initialize("Hello World",FRAME_RATE_60)){goto EXIT;}
  19. // タイトルバーに情報を表示
  20. pCore->EnableDrawTitleInformation(true);
  21. // グラフィックカードを取得
  22. pGraphicCard=pCore->CreateGraphicCard(GRAPHIC_CARD_DEFAULT_NO);
  23. if(pGraphicCard==NULL){goto EXIT;}
  24. // ウィンドウ作成(640x480,WindowMode)
  25. pCore->Start(640,480,true);
  26. // レンダラーを取得
  27. pRender=pGraphicCard->CreateRender();
  28. if(pGraphicCard==NULL){goto EXIT;}
  29. // *キーボードを取得*
  30. pKeyboard=pCore->GetKeyboard(); // *
  31. if(pKeyboard==NULL){goto EXIT;} // *
  32. // メインループ
  33. while(pCore->Run())
  34. {
  35. // *Update処理*
  36. if(pKeyboard->GetKeyData(SELENE_VK_LEFT)==TRUE){Pos.x--;} // *
  37. if(pKeyboard->GetKeyData(SELENE_VK_RIGHT)==TRUE){Pos.x++;} // *
  38. if(pKeyboard->GetKeyData(SELENE_VK_UP)==TRUE){Pos.y--;} // *
  39. if(pKeyboard->GetKeyData(SELENE_VK_DOWN)==TRUE){Pos.y++;} // *
  40. // 裏画面のクリア(white)
  41. pRender->Clear(CColor(255,255,255));
  42. // 画面への描画を開始
  43. pRender->Begin();
  44. // *文字列(HelloWorld)を描画(black)*
  45. pRender->DrawText(Pos,CColor(0,0,0),"Hello World"); // *
  46. // 画面への描画を完了
  47. pRender->End();
  48. }
  49. // 開放
  50. SAFE_RELEASE(pKeyboard); // *
  51. SAFE_RELEASE(pRender);
  52. SAFE_RELEASE(pGraphicCard);
  53. SAFE_RELEASE(pCore);
  54. // システムの解放
  55. System::Finalize();
  56. // 終了
  57. return 0;
  58. }
  59.  
とりあえずこれで動きます


virtual Selene::Peripheral::IKeyboard* Selene::ICore::GetKeyboard(void)
キーボードインターフェイスを取得(取得後ちゃんとReleaseすること)
返り値 キーボードインターフェイス

virtual Bool Selene::Peripheral::IKeyboard::GetKeyData(eVirtualKeyCode Key)
キーが押されているかチェックする
eVirtualKeyCode Key 押されているか調べるキーの仮想キーコード
返り値 キーが押されているか(押されている:TRUE/いない:FALSE)

最終更新:2009年06月08日 22:32
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。
添付ファイル