آيا با اين ملاك براي تايين ميزان تاثير گزاري اÙراد مواÙقيد Ùˆ چرا ØŸ |
بله |
|
60% |
[ 3 ] |
خير |
|
0% |
[ 0 ] |
با اصل مقاله مواÙقم ولي وجود بعضي از تغييرات باعث نتيجه گيري بهتر مي شود |
|
40% |
[ 2 ] |
|
مجموع آراء : 5 |
|
|
كار گروهي
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
نويسنده |
پيغام |
Jack کاربر اخراج شده
تاريخ عضويت: جمعه 11 دي 1383 تعداد ارسالها: 199 محل سكونت: Earth planet
جمعه 6 خرداد 1384 - 17:07 |
|
|
در اين پست من از تگ code استفاده كرده ام . متاسفانه كدها از چپ به راست مرتب نمي شوند براي نمايش دقيق كدها مي توانيد آنها را در word باز نماييد .
کارهای انجام شده
ساخت یک HUD Engine :
یکی از اقدامات پایه ای در ساخت بازی استفاده از hud در بازی است . در بازیهای جدید صفحات hud بسیار شبیه پنجره ها و کنترلهای ویندوز شده است . چون پنجره های ویندوز دارای یکسری خصوصیات پیش فرض و بر پایه خصوصیات سیستم است مانند شکل دکمه های minimize , maximize , … و همچنین قالب خاص فونتی که در این پنجره ها به کار بده شده است و عدم سازگاری این فونتها با فونت PowerRender و بوجود آمدن مشکلات اساسی در اجرای بازی و کلا عدم سازگاری سیستم hud ی PowerRender با سیستم ساخت و نمایش پنجره ها در ویندوز نیاز به یک hud engine در PowerRender را ضروری کرده است .
این موتور خصوصیات نوع ، مکان ، اندازه و نام و ... پنجره ها را از اسکریپت ساخته شده توسط HUD Editor می گیرد و آنها را به صورت بصری نمایش می دهد .
HUD Editor یک ابزار برای طراحی دیالوگهای بازی و قرار دادن کنترلها در داخل انها و نهایتا ذخیره نتیجه در یک فایل است .
قبل از ساخت HUD Editor نهایت سعی من بر این بود که یک editor مانند Resource ediror در VC را بسازم . ولی بعد از بررسی vc resource editor و بررسی فایلهای rc ساخته شده توسط آن به فکر استفاده از این فایلهای rc افتادم و بنابراین بدون نوشتن یک خط کد من یک Resource editor فوق العاده در اختیار داشتم . تنها کاری که باید می کردم ساخت یک event system و امکان اختصاص توابع Mouse_Click ، Mouse_Move و ... به کنترلهای یک فرم بود .
برای دستیابی به فرم و کنترلهای بازی هنگام کد نویسی دو نوع متغیر به نامDialogFrame و Control ساخته شد . برای دستیابی به یک دیالوگ تابع زیر را ساختم :
كد: |
DialogFrame * Maindialog;
Maindialog = Getdialog(IDD_MAIN);
|
حال که Maindialog را در اختیار دارم می توانم خصوصیات آنرا تغییر دهم
كد: |
Maindialog->BaseFrame.Visible = 1;
|
با این عمل دیالوگ نمایش داده می شود
حال فرض کنید من یک تابع ساخته ام و تصمیم دارم از این تابع به عنوان Mouse_Down برای یکی از دکمه هایم که IDC_START نام دارد استفاده کنم . به صورت زیر عمل می کنم
كد: |
Control * ctl;
ctl = GetControl(IDD_MAIN,IDC_START);
ctl->BaseFrame.Mouse_Down = Start;
ctl->BaseFrame.Target = 0;
UpdateControl(Maindialog , ctl);
|
در خط دوم تابع Start به عنوان تابع Mouse_Down برای کنترل در نظر گرفته شده است . این تابع وظیفه گرفتن ورودی از 2 کنترل از جنس TextBox و سپس مقدار دهی اولیه Server بازی را به عهده دارد .
كد: |
void Start(void)
{
Control * ctl;
char ServerName[200];
char ServerPort[200];
char MessageOfDay[200];
int res;
ctl = GetControl(IDD_MAIN,IDC_PORT);
strcpy(ServerPort,ctl->EditBox->Texts->pszStringsArray[0]);
ctl = GetControl(IDD_MAIN,IDC_SERVERNAME);
strcpy(ServerName,ctl->EditBox->Texts->pszStringsArray[0]);
ctl = GetControl(IDD_MAIN,IDC_MESSAGEOFDAY);
strcpy(MessageOfDay,ctl->EditBox->Texts->pszStringsArray[0]);
res = InitializeServer(ServerPort,ServerName,MessageOfDay);
if (res == 1)
Beep(100,100);
}
|
حال ادامه کد قبل را بررسی می کنیم .
تابع UpdateControl باعث به روز کردن کنترل در آرایه کنترلهایی که در هر دیالوگ تعریف کرده ام استفاده می شود .
چون متغیر Maindialog در یک لیست پیوندی قرار دارد برای به روز کردن آن در این لیست از تابع زیر استفاده می شود :
كد: |
UpdateDialog(&Root,Maindialog);
|
که Root ریشه این لیست پیوندی است .
برای افزایش قدرت این موتور من 99 درصد کنترلهای ویندوز را شبیه سازی کرده ام . برای استفاده از TreeView کافی است یک کنترل از این جنس در Resource Editor قرار داده و با مشخص کرده نام این کنترل مانند IDC_TREE1 يِک فایل به نام IDC_TREE1.txt ساخته و کد زیر را در آن وارد می کنیم .
این یک زبان اسکریپتی برای ساخت treeview است که خودم آنرا تعریف کرده ام و از هیچ Script engine ای استفاده نکرده ام . برای ساخت منوی بازی هم من از همین زبان اسکریپتی استفاده کرده ام . فعلا قسمت طراحی منوی Resource editor برای منوی بازی غیر فعال است .
كد: |
TreeView(
Root(
Caption(tvchild3)
TreeViewItems(
Captions()
)
Child(
Caption(Shooter)
TreeViewItems(
Captions(1st Person,3rd Person)
)
)
Child(
Caption(Melee)
TreeViewItems(
Captions()
)
Child(
Caption(Bash)
TreeViewItems(
Captions(1HBash,2HBash,2HBashD)
)
)
Child(
Caption(Slash)
TreeViewItems(
Captions(1HSlash,2HSlash,2HSlashD)
)
)
)
)
)End
|
اين هم يك تصوير از Hud_Engine
http://www.sharemation.com/JackGolson/HUD_Test.jpg |
|
|
بازگشت به بالا |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
صفحه 1 از 2 |
تمام ساعات و تاريخها بر حسب 3.5+ ساعت گرينويچ مي باشد برو به صفحه 1, 2 بعدي
|
|
شما نمي توانيد در اين انجمن نامه ارسال كنيد. شما نمي توانيد به موضوعات اين انجمن پاسخ دهيد شما نمي توانيد نامه هاي ارسالي خود را در اين انجمن ويرايش كنيد شما نمي توانيد نامه هاي ارسالي خود را در اين انجمن حذف كنيد شما نمي توانيد در نظر سنجي هاي اين انجمن شركت كنيد
|
|
|