برنامه نویسی - C ++ - کاربرد زبان c در بازی سازی-قسمت اول- صفحه 1

 

کاربرد سی پلاس در بازی سازی - قسمت اول
پژوهشگر و گرداورنده : امیر نوری

PDF download


  درس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             عناوین مطالب

آمار بازدیدکنندگان

آنلاین: 5
امروز: 121
دیروز: 132
ماه: 1027
سال: 41799
کل: 54588
آخرین بازدید: 15:32