====== ツール開発試験について ====== - ツール開発試験 - ツール開発と言いながら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,イテレータ)