






کاربرد سی پلاس در بازی سازی - قسمت اول
پژوهشگر و گرداورنده : امیر نوری
درس1: قسمت های تشکیل دهنده یک بازی
هفت قسمت از یک بازی!
یک بازی ویدِویی در اصل یک حلقه است که فرمان های پیوسته را انجام میدهد و هر بار اجرای حلقه یک فریم از بازی را ایجاد میکند.
خوب تصویر پایین مرحله های یک بازی را نشان میدهد.(از چپ به راست)

فاز یا مرحله اول : مقدار دهی اولیه برنامه
Initialize Program
اینجا زمان شروع کار است !. شما یک صفحه برای نمایش بازی خودتان میسازید و دایرکت ایکس را برای استفاده از گرافیک ها مدل ها و ... و اختصاص دادن حافظه در اینجا به اصطلاح راه اندازی می کنید.
فاز یا مرحله دوم : شروع بازی
این قسمت بازی شما را آمده شروع و بازی کردن میکند. اینجا قسمتی است که مثلاً شما مپ را انتخاب میکنید. مکان بازیکن ها را مشخص کرده و ترین بازی را میسازید و مقدار های رندم را میدهید(در بخشهای بعدی بیشتر با هر قسمت آشنا مشید).
فاز یا مرحله 3 : گرفتن ورودی از بازیکن
در اینجا شما تمام ورودی های موجود را از کیبورد و موس یا جویستیک میگیرید. این قسمت به .Dircet input مربوط می شود.
فاز یا مرحله 4 : اجرای منطق بازی مثل فیزیک یا هوش مصنوعی
در این بخش شما عملیات و کارهایی که در دنیای شما انجام میشود را پردازش میکند.چقدر مهمات برای بازیکن شما مونده ؟ آیا دشمنانش در حال آمدن یا رفتن هستند ؟ به چی برخورد میکند؟ و.. تمام این چیزها و خیلی چیزهای دیگه در این بخش تعیین میشود.
فاز یا بخش 5 : رندر گرافیک ها (تصویرها یا رسم ها نمیدونم ترجمه دقیق چیه همینطوری بهتره!)
اینجا قسمتی است که دایرکت ایکس بیشتر استفاده میشه. در اینجا شما تمام تصاویر(گرافیک ها)ی دو بعدی و سه بعدی را پردازش میکنید و آنهارا بر روی صفحه رندر میکنید.
فاز یا بخش6: Restart
برگشت به بخش 3 و انجام دوباره همه چیز...
فاز یا بخش 7 CleanUp:
این آخرین فرصت در برنامه شما برای پاک کردن همه چیز است. چون برنامه در پایان است.در اینجا تمام حافظه ها که برای کارتون اختصاص داده بودید آزاد میکنید.
درس2 : نگاهی کوتاه به ویندوز
کد پایین برنامه ساده hello world را نشان میدهد
کد زیر نمونه یک برنامه ویندوز است که یک پنجره را میسازد»
// include the basic windows header file
#include <windows.h>
#include <windowsx.h>
// the WindowProc function prototype
LRESULT CALLBACK WindowProc(HWND hWnd,
UINT message,
WPARAM wParam,
LPARAM lParam);
// the entry point for any Windows program
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// the handle for the window, filled by a function
HWND hWnd;
// this struct holds information for the window class
WNDCLASSEX wc;
// clear out the window class for use
ZeroMemory(&wc, sizeof(WNDCLASSEX));
// fill in the struct with the needed information
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = (WNDPROC)WindowProc;
wc.hInstance = hInstance;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)COLOR_WINDOW;
wc.lpszClassName = L"WindowClass1";
// register the window class
RegisterClassEx(&wc);
// create the window and use the result as the handle
hWnd = CreateWindowEx(NULL,
L"WindowClass1", // name of the window class
L"Our First Windowed Program", // title of the window
WS_OVERLAPPEDWINDOW, // window style
300, // x-position of the window
300, // y-position of the window
500, // width of the window
400, // height of the window
NULL, // we have no parent window, NULL
NULL, // we aren't using menus, NULL
hInstance, // application handle
NULL); // used with multiple windows, NULL
// display the window on the screen
ShowWindow(hWnd, nCmdShow);
// enter the main loop:
// this struct holds Windows event messages
MSG msg;
// wait for the next message in the queue, store the result in 'msg'
while(GetMessage(&msg, NULL, 0, 0))
{
// translate keystroke messages into the right format
TranslateMessage(&msg);
// send the message to the WindowProc function
DispatchMessage(&msg);
}
// return this part of the WM_QUIT message to Windows
return msg.wParam;
}
// this is the main message handler for the program
LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
// sort through and find what code to run for the message given
switch(message)
{
// this message is read when the window is closed
case WM_DESTROY:
{
// close the application entirely
PostQuitMessage(0);
return 0;
} break;
}
// Handle any messages the switch statement didn't
return DefWindowProc (hWnd, message, wParam, lParam);
}
در نهایت ،نتیجه کد بالا ایجاد پنجره پایین میشه!
ساخت هر پنجره در برنامه نویسی ویندوز از سه قسمت تشکیل شده:
1.Register The windows class
2.Create the window
3.show the window
خوب حالا هر قسمت را توضیح میدیم:
Registering the window class
به طور ساده یک کلاس پنجره یک ساختار پایه ای است که ویندوز برای جمع و جور کردن خواص و عمل پنجره های مختلف استفاده میکنه.یک کلاس پنجره در حقیقت یک قالب از خواص همیشگی و پایه یک پنجره است که برای وجود یک پنجره ساده نیاز است.شکل پایین اینو نشون میده (کلاس اول که به عنوان یک قالب برای بقیه است).
صفحه 1 صفحه 2 صفحه 3 عناوین مطالب











