などを出題します。
具体的なところ
🟦以下のプログラム(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次元配列で表現する方法
☑️矩形の内外判定
☑️ボタンクリックの処理(ボタンを押した瞬間だけ入力を取る)
bool IsClicked() { static int prev = 0; int now = GetMouseInput(); bool downEdge = ( ここの判定どうすればいいかな? ); prev = now; return XXXX; // inside も考慮すること }