ツール開発試験について

  1. ツール開発試験
    1. ツール開発と言いながらWindowsプログラミングの基本
    2. C++の基礎的な内容
    3. ゲーム制作現場におけるツール開発について

などを出題します。

具体的なところ

🟦以下のプログラム(Window1枚出すだけ)を理解できていること!

#include <windows.h>   // Windows API の基本ヘッダ
 
//プロトタイプ宣言
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
 
// エントリーポイント
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst, 	
                     LPSTR lpCmdLine, int nCmdShow)   // HINSTANCE
{
    // ウィンドウクラスの定義
    WNDCLASSEX wc;
    wc.cbSize = sizeof(WNDCLASSEX);              // この構造体のサイズ
    wc.hInstance = hInstance;                    // インスタンスハンドル
    wc.lpszClassName = "SampleGame";             // クラス名
    wc.lpfnWndProc = WndProc;                    // ウィンドウプロシージャ名
    wc.style = CS_VREDRAW | CS_HREDRAW;          // スタイル(デフォルト)
    wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);  // アイコン
    wc.hIconSm = LoadIcon(NULL, IDI_WINLOGO);    // 小さいアイコン
    wc.hCursor = LoadCursor(NULL, IDC_ARROW);    // マウスカーソル
    wc.lpszMenuName = NULL;                      // メニュー(なし)
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); //背景(白)
    RegisterClassEx(&wc);						
 
    HWND hWnd;      // ウィンドウハンドル
 
    // ウィンドウ作成
    hWnd = CreateWindow(
        "SampleGame",           // クラス名
        "サンプルゲーム",       // ウィンドウタイトル
        WS_OVERLAPPEDWINDOW,    // ウィンドウスタイル(普通のウィンドウ)
        CW_USEDEFAULT,          // 表示位置左(おまかせ)
        CW_USEDEFAULT,          // 表示位置上(おまかせ)
        800,                    // 幅
        600,                    // 高さ
        NULL,                   // 親ウインドウ(なし)
        NULL,                   // メニュー(なし)
        hInstance,              // インスタンスハンドル
        NULL                    //パラメータ(なし)
    );
 
    // ウィンドウを表示
    ShowWindow(hWnd, nCmdShow);
 
    // メッセージループ
    MSG msg;
    ZeroMemory(&msg, sizeof(msg));
    while (msg.message != WM_QUIT)
    {
        //メッセージあり
        if (PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
        //メッセージなし
        else
        {
            //ゲームの処理(フレーム更新など)
        }
    }
    return 0;
}
 
// ウィンドウプロシージャ
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) // ④ HWND
{
    switch (msg) 
    {
    case WM_DESTROY:
        PostQuitMessage(0); // メッセージループ終了(アプリ終了)
        return 0;
    }
    return DefWindowProc(hWnd, msg, wParam, lParam);
}

✅Windowを作る手順は理解できていますか?

  • ウィンドウクラスの登録
  • ウィンドウサイズの指定
  • ウィドウの生成(クライアント領域とは)
  • エラーを収集できる戻り値
  • インスタンスハンドルとウィンドウハンドル
  • ウィンドウを終了させる処理
  • デフォルトのメッセージ処理
  • ウィンドウの表示

✅ダイアログの種類を2種類いえる?
☑️2次元配列を1次元配列で表現する方法

  • 計算法(双方向で変換できる?)
  • メリット
  • デメリット

☑️矩形の内外判定

  • クリック位置 $ p(p_x, p_y) $ が矩形 $ (q_x, q_y, w, h) $ の内部かどうか判定する処理

☑️ボタンクリックの処理(ボタンを押した瞬間だけ入力を取る)

bool IsClicked() {
    static int prev = 0;
    int now = GetMouseInput();
    bool downEdge = ( ここの判定どうすればいいかな? );
    prev = now;
    return XXXX; // inside も考慮すること
}
  • 継承
  • ポリモーフィズム
  • STL(Vector,list,イテレータ)
  • game-engineer/classes/2025/ge2-tool-dev/first-term/5/09-08.txt
  • 最終更新: 5カ月前
  • by root