Contacts
صفحه اصلی پورتال | صفحه اصلی تالار | ثبت نام | اعضاء | گروه ها | جستجو | پرسش و پاسخ | فروشگاه الکترونیکی | خرید پستی بازی های کامپیوتری





صفحه اول انجمنها -> برنامه نویسی با زبان های C++ و Delphi و VB -> سوال و جواب سی شارپ
 

ارسال يك موضوع جديد   پاسخ به يك موضوع ديدن موضوع قبلي :: ديدن موضوع بعدي
برو به صفحه قبلي  1, 2, 3, 4  بعدي

نويسنده
پيغام
MahanGM
پیر بازی سازی
پیر بازی سازی


تاريخ عضويت: 3 شنبه 20 شهريور 1386
تعداد ارسالها: 1846
محل سكونت: USS Terra Nova


5 شنبه 5 مرداد 1391 - 13:17
پاسخ بصورت نقل قول
Parham, من گفتم اگه میخوای که تصاویرت ثابت باشن و پر پر نزنن گفتم که خاصیت Double Buffered برای UserControl رو فعال کن. حالت عادی فرم خودش فعال هست. من کدت رو که دیدم چیزی ازش نفهمیدم آخه ناقصه! اگه میخوای تصویر نمایش بدی روی یه PictureBox یا Form یا UserControl از کد زیر استفاده کن:

كد:
List<Image> ImagesStack = new List<Image>();

public void pictureBox1_Paint(object sender, PaintEventArgs e)
{
  for(int i = 0; i < ImagesStack.Count; i++)
  {
      Image CurrentImage = ImagesStack[i];
      e.Graphics.DrawImage(CurrentImage, new Rectangle(x, y, CurrentImage.Width, CurrentImage.Height));
  }
}


یه لیست تصویر داری که میتونی توش Image بارگذاری کنی. بعدش هم یه For میندازی که همه رو نمایش بده، جایگیریشون هم نقطه x و yه. در ضمن از Clear استفاده نکن چون بشدت برنامه رو کند میکنه. اگه همین حلقه رو توی رویداد Paint بندازی خودش هر دفعه اینها رو ترسیم میکنه و لازم نیست که نگران پاک شدن دفعه قبل باشی.

راستی اگه میخوای با #C انجین بنویسی بهتره اینکار رو نکنی. وقتی که تصاویرت سنگین بشن یا تعدادشون بره بالا بشدت ریپ میزنه. فقط برای ساختن Editor و ابزار خوبه.

_________________
I have a dream that little children will one day live in a nation where they will not be judged by the color of their skin but by the content of their character. I have a dream today
هیچ راه فراری نیست!
http://www.dreamfactory.ir
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي
 

نويسنده
پيغام
Parham
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: 4 شنبه 28 دي 1390
تعداد ارسالها: 408
محل سكونت: somewhere behind a lot of troubles...


5 شنبه 5 مرداد 1391 - 13:33
پاسخ بصورت نقل قول
MahanGM,
از کمکت ممنون...ولی جدیدا چرا نصف و نیمه جواب می دی؟
انجینت رو با چه زبانی ساختی؟
موتور فیزیک داره؟
حالا که 100-150 تا پله از ما بالا تری انتقال تجربه کن دادا!
من تو وجودم یه حول و ولا هست...باید با سی شارپه یه کار داغونم شده درست کنم و خروجی بگیرم...
از سر لجبازی نیست ها...می خوام دردسرش رواز ته وجود حس کنم Rolling Eyes .
و اما این قطعه کدی که گذاشتی...این یک سری تصاویری که قبلا ترسیم شدن رو نمایش نمی ده؟
من می خوام تصویر رو تو به قول معروف یافر رسم کنم و بعد نمایش بدم Shocked
لقمه رو حسابی دور سرم چرخوندم نه؟!

_________________
برای رسیدن به موفقیت آسانسوری وجود ندارد،باید پله پله بالا رفت؛
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
m_basij
پیر بازی سازی
پیر بازی سازی


تاريخ عضويت: 5 شنبه 19 شهريور 1388
تعداد ارسالها: 523
محل سكونت: داخل کد


5 شنبه 5 مرداد 1391 - 13:36
پاسخ بصورت نقل قول
کاملا حرف ماهان رو در مورد c# تایید می کنم.
ببین نیازی نیست بیایی تاخیر خودت ایجاد کنی. اصلا ایجاد کردن تاخیر توسط تو کار اشتباهی هست. ببین یک انجین بزرگی مثل انریل میاد و فریم ریت رو تایین میکنه و از اون بیشتر فریم توی ثانیه ایجاد نمیکنه ولی برای یک انجینی مثل انجین های دو بعدی که انجین شما هم دو بعدیه نیازی نیست که حتما حد اکثر فریم رو تعیین کنیم چرا که هیچ وقت منابع سیستمی تمام نمیشن. فقط باید کاری که بکنی اینه که بیایی و یک میزان سی پیو برای نرم افزار بگذاری کنار یعنی نرم افزار بیشتر از این از منابع سیستمی استفاده نکنه. که سیستم هم هنگ نکنه. البته به صورت عادی هم هنگ نمیکنه ولی این برای احتیاط هست. برای اینکه این کارم بکنی میتونی از کتابخانه boost استفاده کنی. کرای هم از این استفاده کرده. در مورد اینکه اگه بخواهی مثلا حتما 64 فریم تو ثانیه داشته باشی باید زمان اجرای یک بار تمام کدها رو تقریبا بدونی بعد بیایی و بعد تقسیم بر 60 کنی ببینی چند تا فریم بهت اصلا میده اگه بیشتر از 64 بود بیایی و زمان اجرای حلقه رو کم کنی. البته من توصیه به این کار نمی کنم چون بازم مجبوری از تایمر استفاده کنی. بهترین کارش اینه که همین که گفتم یک حلقه بگذاری و کارش رو بکنه اگه دیدی سیستم هنگ میکنه انوقت بیا و میزان منابع سیستمی رو که استفاده میکنه یک جوری تنظیم کن که مشکل براش پیش نیاد. البته توصیه می کنم این رو به صورت داینامیک پیاده سازی کنی البته باید داینامیک پیاده سازیش کنی که روی هر سیستمی جواب بده.

_________________
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل ديدن وب سايت كاربر نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
MahanGM
پیر بازی سازی
پیر بازی سازی


تاريخ عضويت: 3 شنبه 20 شهريور 1386
تعداد ارسالها: 1846
محل سكونت: USS Terra Nova


5 شنبه 5 مرداد 1391 - 14:54
پاسخ بصورت نقل قول
Parham, اگه رفتی بودی تو تاپیک خود انجین کل اطلاعاتش رو میدیدی تا اینکه منتظر باشی من بهت بگم Very Happy . انجین با ++C و DirectX نوشته شده.

من نمی دونم ذهنیت تو در مورد بافر چیه ولی اگه میخوای که کاربر ترسیمات رو نبینه دو تا راه داری. اول اینکه بیا Visible اون کنترل رو False کنی یا اینکه از کد زیر هم میتونی استفاده کنی که من خودم اینو پیشنهاد میکنم:

كد:
Bitmap Surface = new Bitmap(640, 480);
Graphics g = Graphics.FromImage(Surface);

g.DrawImage(YourImage, YourLocation);

_________________
I have a dream that little children will one day live in a nation where they will not be judged by the color of their skin but by the content of their character. I have a dream today
هیچ راه فراری نیست!
http://www.dreamfactory.ir
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي
 

نويسنده
پيغام
Unity3D
مدیر انجمن
مدیر انجمن


تاريخ عضويت: 2 شنبه 23 آذر 1388
تعداد ارسالها: 1034


5 شنبه 5 مرداد 1391 - 17:50
پاسخ بصورت نقل قول
سلام

Parham,

حالا چرا GDI+ !!!
اگه میخوای بازی یا موتور بنویسی خب راه درست ( یا حداقل درست ترش ) رو برو ...
خدا رو شکر این همه کتابخونه گرافیکی یا Wrapper برا C# هست
OpenTK , SlimDX , SharpDX , XNA , ...
فک کنم فبلا اینها رو معرفی کرده بودم بهت ، GDI+ از شتابدهنده گرافیکی استفاده نمیکنه برعکش این کتابخونه ها ...

در مورد C++ و C# هم نظر من یکم با دوستان فرق داره ، اگه قصد ساخت بازی کوچیک و یا حتی Middle Class رو داری همین C# هم خوبه هرچند هر راحتی بی بها نیست اما اگه بازی AAA نمخوای بسازی و C# رو دوست داری ایراد نداره ...

اگه بی تعارف بگم من فکر میکنم هنوز یکم ضعف داری تو همون بخش برنامه نویسی و مخصوصا مباحث OOP ... قبل از همه چیز اول این قسمت رو حل کن و بعد یه کتابی هست به نام C# Game Programming For serious Game Creation اینو بخون و بعد حله ... Very Happy
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل
 

نويسنده
پيغام
Parham
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: 4 شنبه 28 دي 1390
تعداد ارسالها: 408
محل سكونت: somewhere behind a lot of troubles...


5 شنبه 5 مرداد 1391 - 23:04
پاسخ بصورت نقل قول
Unity3D, سلام.
اینو خودم دارم می گم ها...ضعف من تو برنامه نویسی از اون حدی هم که در این زمینه فکر کنی بیشتره...
برای اولین گام:oop چیه؟ Question

دنبال این کتاب هم همین حالا می چرخم.
---
علت این که اومدم دنبال GDI اینه که تنها APIی هست که ازش جواب گرفتم. Wink
همین و بس...وگر نه از خدامه با SlimDX کار کنم.

_________________
برای رسیدن به موفقیت آسانسوری وجود ندارد،باید پله پله بالا رفت؛
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
king_of_persia
بازی ساز
بازی ساز


تاريخ عضويت: شنبه 2 مهر 1390
تعداد ارسالها: 161


جمعه 6 مرداد 1391 - 18:14
پاسخ بصورت نقل قول
سلام.
oop مخفف object oriented programming هست.
به نظر من خیلی خوبه که میخوای با C# کار خوبی انجام بده اما چرا از اول با یک چیز بهتر کار نکنی؟!
به نظرم اول کتاب دایتل که آموزش C++ هست رو بخون که فوق العادست اسم دقیقش :
C++ how to program
بعدشم کتاب C++ for Game Programmers . دید خیلی خوبی نسبت به inheritance و دیگر نکات مهم در برنامه نویسی بازیها بهت می ده.
بعدشم که باید بری سراغ یک API گرافیکی که من فکر می کنم OpenGL راحت تره. یک کتاب خیلی خوبی هم داره به نام OpenGL SuperBible .
اینها رو سعی نکن سریع بخونی ، سعی کن بفهمی و مباحثی که داره رو تمرین کن تا بتونی مسلط بشی و خودت راه خودتو پیدا کنی.
موفق باشی

_________________
امید خودتو هیچوقت از دست نده . وگرنه بدان هیچوقت موفق نخواهی شد...
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي
 

نويسنده
پيغام
Parham
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: 4 شنبه 28 دي 1390
تعداد ارسالها: 408
محل سكونت: somewhere behind a lot of troubles...


جمعه 20 مرداد 1391 - 19:30
پاسخ بصورت نقل قول
سلام.
آقا من چطور باید با radio button ها کار کنم؟
یعنی وقتی یکی تو حالت انتخابه اون یکی نباشه و بر عکس؟ Shocked Question

_________________
برای رسیدن به موفقیت آسانسوری وجود ندارد،باید پله پله بالا رفت؛
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
Unity3D
مدیر انجمن
مدیر انجمن


تاريخ عضويت: 2 شنبه 23 آذر 1388
تعداد ارسالها: 1034


جمعه 20 مرداد 1391 - 20:12
پاسخ بصورت نقل قول
Parham,

یه GroupBox بذار ، بعد هم Radio Button هاتو توش بچین ...
خداییش این پرسیدن داشت ؟ Shocked
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل
 

نويسنده
پيغام
Parham
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: 4 شنبه 28 دي 1390
تعداد ارسالها: 408
محل سكونت: somewhere behind a lot of troubles...


جمعه 20 مرداد 1391 - 21:21
پاسخ بصورت نقل قول
استاد...آی کیو...د اگه اینو ندونم که باس برم بمیرم! Sad Shocked
منظورم اینه که وقتی یکیشون رو انتخاب می کنی اون یکی دی سلکت بشه:
كد:

radiob1.checked=true;
radiob2.checked=false;


من این کد رو توی private void radiob1_ChangeChecked می نویسم اما عمل نمی کنه...همواره یکشون انتخاب شدس و اون یکی نه...

_________________
برای رسیدن به موفقیت آسانسوری وجود ندارد،باید پله پله بالا رفت؛
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل نام كاربري در پيغامگير Yahoo
 

نمايش نامه هاي ارسال شده قبلي:   
ارسال يك موضوع جديد   پاسخ به يك موضوع    صفحه 3 از 4 تمام ساعات و تاريخها بر حسب 3.5+ ساعت گرينويچ مي باشد
برو به صفحه قبلي  1, 2, 3, 4  بعدي


 
پرش به:  


شما نمي توانيد در اين انجمن نامه ارسال كنيد.
شما نمي توانيد به موضوعات اين انجمن پاسخ دهيد
شما نمي توانيد نامه هاي ارسالي خود را در اين انجمن ويرايش كنيد
شما نمي توانيد نامه هاي ارسالي خود را در اين انجمن حذف كنيد
شما نمي توانيد در نظر سنجي هاي اين انجمن شركت كنيد


unity3d

بازگردانی به فارسی : علی کسایی @ توسعه مجازی کادوس 2004-2011
Powered by phpBB © 2001, 2011 phpBB Group
| Home | عضويت | ليست اعضا | گروه هاي كاربران | جستجو | راهنماي اين انجمن | Log In |