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