====== ツール開発試験について ======
- ツール開発試験
- ツール開発と言いながらWindowsプログラミングの基本
- C++の基礎的な内容
- ゲーム制作現場におけるツール開発について
などを出題します。\\
具体的なところ \\
==== Windowsプログラミングの基本 ====
🟦以下のプログラム(Window1枚出すだけ)を理解できていること!
#include // 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 も考慮すること
}
==== 🔶C++とSTLの基礎問題 ====
* 継承
* ポリモーフィズム
* STL(Vector,list,イテレータ)