發(fā)布時間:2023-11-27 04:22:28 瀏覽量:111次
對這方面感興趣或者想學(xué)習(xí)C/C++可以加群:558502932,有問題可以在群內(nèi)大家一起交流學(xué)習(xí)。
對于正在學(xué)習(xí)C/C++的同學(xué)或者朋友來說,如何用C/C++寫程序都有些模糊的概念,畢竟如果只是學(xué)習(xí)C/C++的理論知識,很多人甚至都不知道C/C++學(xué)了能干嘛。
有很多人都想去往游戲方面發(fā)展,畢竟能寫出一個游戲供大家學(xué)習(xí)是一件特別自豪的事情。但是要寫出一個游戲,不是那么容易的事情,今天我就來分享一下,我們講師寫過的一個游戲框架,希望能對你們有所幫助。
對這方面感興趣或者想學(xué)習(xí)C/C++可以加群:558502932
代碼如下:
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// WindowsFrame.cpp: This is a Windows-Game Forms
// Author: MOYG
// Date: Dec-19-2015
// Version 1.0
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// INCLUDEs ////////////////////////////////////////////////////////////////////////////////////////////////////
#include "windows.h"
#include "time.h“
// DEFINES ////////////////////////////////////////////////////////////////////////////////////////////////////
#define WINDOW_WIDTH 800 //Window width of a macro definition
#define WINDOW_HEIGHT 600 //Window height of a macro definition
#define WINDOW_TITLE L"【潭州教育】程序核心框架" //The window title of marco definition
// GLOBALS /////////////////////////////////////////////////////////////////////////////////////////////////////
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam ); //The process window function
// WINMAIN /////////////////////////////////////////////////////////////////////////////////////////////////////
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{
//【1】 窗口創(chuàng)建四部曲之一:開始設(shè)計一個完整的窗口類
//【First】 One of the windows to create tetralogy:Start to design a whole window calss
WNDCLASSEX wndClass = { 0 }; //With WNDCALSSEX definition of a window class
wndClass.cbSize = sizeof(WNDCLASSEX); //Number of bytes to set up the structure size
wndClass.style = CS_HREDRAW | CS_VREDRAW; //Set the window style
wndClass.lpfnWndProc = WndProc; //Set the pointer to the window procedure function
wndClass.cbClsExtra = 0; //Additional memory window class
wndClass.cbWndExtra = 0; //Additional memory window
wndClass.hInstance = hInstance; //Specified contains the window handle to an instance of the process of program
//Local load custom ico
wndClass.hIcon = (HICON)::LoadImage(NULL, L"icon.ico", IMAGE_ICON, 0, 0, LR_DEFAULTSIZE | LR_LOADFROMFILE);
wndClass.hCursor = LoadCursor(NULL, IDC_ARROW); //Specifies the window handle of the cursor
wndClass.hbrBackground = (HBRUSH)GetStockObject(GRAY_BRUSH); //The handle of Brush
wndClass.lpszMenuName = NULL; //Specify the menu resource
wndClass.lpszClassName = L"ForTheDreamOfGameDevelop";
//【2】窗口創(chuàng)建四部曲之二:注冊窗口類
//【Second】 Second of the window to create tetralogy: RegisterClass
if (!RegisterClassEx(&wndClass))
return -1;
//【3】窗口創(chuàng)建四部曲之三:正式創(chuàng)建窗口
//【Third】 Third of the window to create tetralogy:Formal creation window
HWND hwnd = CreateWindow(L"ForTheDreamOfGameDevelop",
WINDOW_TITLE, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT,
WINDOW_WIDTH, WINDOW_HEIGHT, NULL, NULL, hInstance, NULL);
//【4】窗口創(chuàng)建四部曲之四:窗口移動、顯示與更新
//【Four】 Fourth of the window to create tetralogy:Windows moblie,display and update
MoveWindow(hwnd, 250, 80, WINDOW_WIDTH, WINDOW_HEIGHT, true); //In the left corner of the window(250,70);
ShowWindow(hwnd,nShowCmd); //Display window
UpdateWindow(hwnd); //Update window
//【5】消息循環(huán)過程
//windows information rotation
MSG msg = { 0 }; //init msg
while (msg.message != WM_QUIT)
{
//查看應(yīng)用程序消息隊(duì)列,有消息時將隊(duì)列中消息派發(fā)出去
if (PeekMessage(&msg, 0, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg); //將虛擬消息轉(zhuǎn)換為字符信息
DispatchMessage(&msg); //分發(fā)一個消息給窗口程序
}
}
//【6】窗口類的注銷
//【Sixth】 logout window class
UnregisterClass(L"ForDearmOfGameClassDevelop", wndClass.hInstance);
return 0;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_PAINT: //重繪消息
ValidateRect(hwnd, NULL); //更新客戶的顯示
break;
case WM_KEYDOWN: //若是鍵盤按下任意鍵消息
if (wParam == VK_ESCAPE) //如果按下的是ESC鍵
DestroyWindow(hwnd); //銷毀窗口,并發(fā)送一條WM_DESTORY消息
break;
case WM_DESTROY: //若是窗口銷毀消息
PostQuitMessage(0); //像系統(tǒng)表示有個線程有終止請求,用來響應(yīng)WM_DESTROY消息
break;
default:
return DefWindowProc(hwnd, message, wParam, lParam); //調(diào)用默認(rèn)的窗口過程
}
return 0;
}
以上,就是游戲框架設(shè)計的源程序,希望對你們有所幫助,當(dāng)然,你們?nèi)绻信d趣可以運(yùn)行試試,如果有什么問題,可以加群:558502932,把問題發(fā)到群里,或者找群內(nèi)管理問一下,會幫你解答的。
希望你們學(xué)習(xí)C/C++都能學(xué)有所成。
熱門資訊
探討游戲引擎的文章,介紹了10款游戲引擎及其代表作品,涵蓋了RAGE Engine、Naughty Dog Game Engine、The Dead Engine、Cry Engine、Avalanche Engine、Anvil Engine、IW Engine、Frostbite Engine、Creation引擎、Unreal Engine等引擎。借此分析引出了游戲設(shè)計領(lǐng)域和數(shù)字藝術(shù)教育的重要性,歡迎點(diǎn)擊咨詢報名。
2. 手機(jī)游戲如何開發(fā)(如何制作傳奇手游,都需要準(zhǔn)備些什么?)
?如何制作傳奇手游,都需要準(zhǔn)備些什么?提到傳奇手游相信大家都不陌生,他是許多80、90后的回憶;從起初的端游到現(xiàn)在的手游,說明時代在進(jìn)步游戲在更新,更趨于方便化移動化。而如果我們想要制作一款傳奇手游的
3. B站視頻剪輯軟件「必剪」:免費(fèi)、炫酷特效,小白必備工具
B站視頻剪輯軟件「必剪」,完全免費(fèi)、一鍵制作炫酷特效,適合新手小白??靵碓囋?!
4. Steam值得入手的武俠游戲盤點(diǎn),各具特色的快意江湖
游戲中玩家將面臨武俠人生的掙扎抉擇,戰(zhàn)或降?殺或放?每個抉定都將觸發(fā)更多愛恨糾葛的精彩奇遇?!短烀嬗肪哂卸嗑€劇情多結(jié)局,不限主線發(fā)展,高自由...
5. Bigtime加密游戲經(jīng)濟(jì)體系揭秘,不同玩家角色的經(jīng)濟(jì)活動
Bigtime加密游戲經(jīng)濟(jì)模型分析,探討游戲經(jīng)濟(jì)特點(diǎn),幫助玩家更全面了解這款GameFi產(chǎn)品。
6. 3D動漫建模全過程,不是一般人能學(xué)的會的,會的多不是人?
步驟01:面部,頸部,身體在一起這次我不準(zhǔn)備設(shè)計圖片,我從雕刻進(jìn)入。這一次,它將是一種純粹關(guān)注建模而非整體繪畫的形式。像往常一樣,我從Sphere創(chuàng)建它...
7. 3D動畫軟件你知道幾個?3ds Max、Blender、Maya、Houdini大比拼
當(dāng)提到3D動畫軟件或動畫工具時,指的是數(shù)字內(nèi)容創(chuàng)建工具。它是用于造型、建模以及繪制3D美術(shù)動畫的軟件程序。但是,在3D動畫軟件中還包含了其他類型的...
?三昧動漫對于著名ARPG游戲《巫師》系列,最近CD Projekt 的高層回應(yīng)并不會推出《巫師4》。因?yàn)椤段讕煛废盗性诓邉澋臅r候一直定位在“三部曲”的故事框架,所以在游戲的出品上不可能出現(xiàn)《巫師4》
9. 3D打印技巧揭秘!Cura設(shè)置讓你的模型更堅固
想讓你的3D打印模型更堅固?不妨嘗試一下Cura參數(shù)設(shè)置和設(shè)計技巧,讓你輕松掌握!
10. Unity3D入門:手把手帶你開發(fā)一款坦克大戰(zhàn)的游戲
Unity工程創(chuàng)建完成后如圖所示: 接下來應(yīng)該導(dǎo)入此項(xiàng)目所需的Unity Package文件,要用到的Unity package文件大家可以去Unity3D的官方網(wǎng)站下載(地址:ht...
最新文章
同學(xué)您好!