修复代码:让含随机元素的 Win32 游戏界面代码正常运行
bstacles; // 障碍物的位置 void CreateRandomPoints(std::vector<point>& points, int count) { while (points.size() < count) { point p; p.x = rand() % grid_size; p.y = rand() % grid_size; bool valid = true; for (const point& other : points) { if (p.x == other.x && p.y == other.y) { valid = false; break; } } if (valid) { points.push_back(p); } } } void DrawGrid(HWND hwnd, HDC hdc) { for (int x = 0; x < grid_size; x += grid_size / 10) { MoveToEx(hdc, x, 0, NULL); LineTo(hdc, x, grid_size); } for (int y = 0; y < grid_size; y += grid_size / 10) { MoveToEx(hdc, 0, y, NULL); LineTo(hdc, grid_size, y); } } void DrawBoxes(HWND hwnd, HDC hdc) { for (const point& p : boxes) { BitBlt(hdc, p.x, p.y, grid_size, grid_size, hdcBox, 0, 0, SRCCOPY); } } void DrawTargets(HWND hwnd, HDC hdc) { for (const point& p : targets) { SelectObject(hdc, htargetbrush); Ellipse(hdc, p.x, p.y, p.x + grid_size, p.y + grid_size); } } void DrawObstacles(HWND hwnd, HDC hdc) { for (const point& p : obstacles) { SelectObject(hdc, hobstaclebrush); Rectangle(hdc, p.x, p.y, p.x + grid_size, p.y + grid_size); } } LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; switch(Message) { case WM_CREATE: { // Load resources hboxbitmap = (HBITMAP)LoadImage(NULL, "box.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); htargetbrush = CreateSolidBrush(RGB(255, 0, 0)); hobstaclebrush = CreateSolidBrush(RGB(128, 128, 128)); srand(time(0)); CreateRandomPoints(boxes, box_count); CreateRandomPoints(targets, target_count); CreateRandomPoints(obstacles, obstacle_count); break; } case WM_PAINT: { hdc = BeginPaint(hwnd, &ps); DrawGrid(hwnd, hdc); DrawBoxes(hwnd, hdc); DrawTargets(hwnd, hdc); DrawObstacles(hwnd, hdc); EndPaint(hwnd, &ps); break; } case WM_DESTROY: { // Release resources DeleteObject(hboxbitmap); DeleteObject(htargetbrush); DeleteObject(hobstaclebrush); PostQuitMessage(0); break; } default: return DefWindowProc(hwnd, Message, wParam, lParam); } return 0; } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { WNDCLASSEX wc; HWND hwnd; MSG msg; memset(&wc, 0, sizeof(wc)); wc.cbSize = sizeof(WNDCLASSEX); wc.style = 0; wc.lpfnWndProc = WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wc.lpszMenuName = NULL; wc.lpszClassName = "MyClass"; wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION); if (!RegisterClassEx(&wc)) { MessageBox(NULL, "Window Registration Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK); return 0; } hwnd = CreateWindowEx(WS_EX_CLIENTEDGE, "MyClass", "Win32 App", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 640, 480, NULL, NULL, hInstance, NULL); if (hwnd == NULL) { MessageBox(NULL, "Window Creation Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK); return 0; } ShowWindow(hwnd, nCmdShow); UpdateWindow(hwnd); while(GetMessage(&msg, NULL, 0, 0) > 0) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } ######[AI写代码神器 | 2686点数解答 | 2024-10-31 15:01:39]
- Java JFrame 实现多界面跳转:含登录、注册及个人信息管理功能(讯飞星火 | 503点数解答 | 2024-06-06 23:49:29)390
- 超燃年会来袭!诗舞歌戏轮番上阵,共赴欢乐盛宴! (字节豆包 | 206点数解答 | 2025-01-08 10:59:43)343
- Python根据身高体重,精准判断成年人胖瘦程度!(字节豆包 | 161点数解答 | 2025-12-07 09:35:27)44
- 成年人身高体重揭秘:用BMI判断胖瘦程度(字节豆包 | 320点数解答 | 2025-12-12 17:59:52)51
- C++实现:根据身高体重计算并输出成年人胖瘦程度(字节豆包 | 324点数解答 | 2025-12-12 18:01:07)47
- Python 简易计算:根据身高体重判断成年人胖瘦程度(字节豆包 | 157点数解答 | 2025-12-12 19:28:38)43
- Python实现多个整数相乘的计算及开发建议(字节豆包 | 427点数解答 | 2026-02-25 19:25:10)25
- 编程求解 1 到 N 的阶乘和:Python 与 C++ 实现(字节豆包 | 650点数解答 | 2026-03-01 20:05:48)14
- 用 JavaScript 实现福利彩票抽奖:一键体验浏览器上的中奖乐趣!(GPT | 282点数解答 | 2024-09-25 20:36:52)266
- JavaScript实现福利彩票抽奖:含规则、界面与代码示例(GPT | 1542点数解答 | 2024-09-27 14:41:50)431
- 用 C++ 和 OpenCV 生成带随机偏移的圆周上的点:代码剖析(字节豆包 | 29点数解答 | 2024-11-06 23:40:42)259
- jQuery 实现动态操作 DOM:打造可增删任务的待办事项列表应用(百度文心 | 1015点数解答 | 2024-10-26 23:41:22)431