ここまでの冒険を記録しますか?

長岡技大ソフトウェア開発サークルの開発ブログ

DXライブラリを使うプロジェクトについて

書き手: Jun

初期設定

  1. 開発環境

  2. プロジェクト設定の細かなところ

    1. [新しいプロジェクト]->[Visual C++ 空のプロジェクト]->["ソリューションのディレクトリを作成"のチェックを外す]
    2. プロジェクト内にソースファイルを1つでも含めたあとに,プロジェクトの設定ができる.
    3. ディレクトリの設定は相対パス指定(例:"..\DxLib_VC\プロジェクトに追加すべきファイル_VC用")が可能.このルールを決めると,人のプロジェクトをまるごとコピーしても設定なしで実行できる.
    4. ソリューションエクスプローラーで[すべてのファイルを表示]のアイコンを押すと,ディレクトリでソースコードの管理ができる.
    5. 人のプロジェクトをまるごとコピーしても動かないときは,協力して新しいプロジェクトを作ってみる.いずれ慣れたときに,原因がわかるようになる.原因がわかるようなら,gitなどのバージョン管理でプロジェクトの共有が可能.

理想のWinMain.cpp

#include "DxLib.h"
#include "GameMain.h"



int WINAPI WinMain(
  HINSTANCE hInstance,      // 現在のインスタンスのハンドル
  HINSTANCE hPrevInstance,  // 以前のインスタンスのハンドル
  LPSTR lpCmdLine,          // コマンドライン
  int nCmdShow              // 表示状態
  ){
  // ウインドウモードにする.
  ChangeWindowMode(TRUE);

  // ウインドウがアクティブではない状態でも処理を続行するか否か.
  SetAlwaysRunFlag(TRUE);

  // Log.txtの出力をしない.
  SetOutApplicationLogValidFlag(FALSE);

  SetMainWindowText("ゲームタイトル");

  SetGraphMode(800, 600, 32);

  if (DxLib_Init() != 0){
    return -1;;
  }

  // 裏画面を使う.
  SetDrawScreen(DX_SCREEN_BACK);

  // Game本体の初期化.
  GameMain* game_main = new GameMain();

  // メインループ.
  while (ProcessMessage() == 0 && ScreenFlip() == 0 && ClearDrawScreen() == 0){
    int frame_start_time = GetNowCount();

    game_main->update();

    if (CheckHitKey(KEY_INPUT_ESCAPE)){
      break;
    }

    int frame_end_time = GetNowCount();

    // 現在のフレームにかかった時間を表示する.
    DrawFormatString(700, 30, 0xffffff, "%d", (frame_end_time - frame_start_time));
    // 30フレームに調整する.
    WaitTimer((1000 / 30) - (frame_end_time - frame_start_time));
  }


  // Game本体の削除.
  delete game_main;

  DxLib_End();

  return 0;
}

ウインドウサイズ,フレーム数は定数で用意しておくとさらにいい.