نمایش نتایج 1 تا 18 از 18

نام تاپیک: آموزش نکات مفید ساخت بازی های گوناگون در سی شارپ(مبتدی تا پیشرفته)

  1. #1
    کاربر دائمی آواتار complexcoding
    تاریخ عضویت
    مرداد 1389
    محل زندگی
    قزوین
    سن
    33
    پست
    744

    آموزش نکات مفید ساخت بازی های گوناگون در سی شارپ(مبتدی تا پیشرفته)

    بسم الله ارحمن الرحیم

    اللهم صل علی محمد و آل محمد و عجل فرجهم

    سلام من تورج هستم علاقه مند به ساخت بازی های زیبا با سی شارپ.چند موضوعی بود که زمان زیادی فکر من رو به خودش مشغول کرده بود و باعث شد من این تاپیک رو بزنم(تمامی این عوامل رو برای کوتاهی سخن ذکر می کنم):

    1-همونطور که می دونید ساخت بازی احتیاج به یادگیری کامل زبان مورد نظر که می خوایید باهاش بازی رو بنویسید داره اما افرادی مثل من که بازی ساختن بلد نیستن نمی دونن از کجا باید شروع کنن می رن سراغ چیزهایی که مناسب نیست مثلا برای شروع می رن دنبال بازی های 3 بعدی و از این نوع که واقعا هم نمی شه بهشون کمک کرد و خیلی موارد دیگه...می خواستم چند تا تاپیک برای نمونه معرفی کنم گفتم بر می خوره منصرف شدم.
    ------------------------------------------------------------------------------------------------------------------------
    2-بسیاری از بازی ها نکات ریزی داره و بقیش معمولیه و اون نکات ریز شبیه به بازی و ریاضیه ما نمی خواییم بازی بنویسیم و سورسشو در اختیار دیگران بذاریم ما می خواییم سورس رو آموزش بدیم(نکات مهم و کلیدی)اگر من یه بازی بنویسم همون بازی رو اگر کس دیگه ای بنویسه من از کداش سر در نمی یارم چون اون فرد متغیرها و توابع یا اصلا کدهای به هم ریخته و اضافه کردن شاخ و برگ به کدش باعث می شه آدم سر در گم بشه.
    ------------------------------------------------------------------------------------------------------------------------
    3-بازی های مختلفی در سایت برنامه نویس بصورت تاپیک های نامنظم پخش و این ور اونور هست به نظر من طریقه کار به این صورت باشه بازم نظر دوستان شرطه, بصورت پله پله اول یک بازی معمولی

    • نکات و ریزه کاری ها
    • سوالات و مشکلات
    • نمونه سورس ها

    سپس بازی بعدی که دوباره مراحل تکرار می شه و به غیر از طرح سوال که اجتناب ناپذیره بقیه مراحل از بازی های دیگر نباید داخل بحث جدید بشه تا از سر در گمی تاپیک جلوگیری بشه.
    ------------------------------------------------------------------------------------------------------------------------
    4-این تاپیک تنها به امید کمک دوستان کار بلد درست کردم کارهای جالب(افزودنی) , کلاس , متد و ... دوستان اگر هر چیزه کاربردی برای بازی مذبور داشتن منتظر سوال کردن نباشن خودشون جلوتر بذارن(خواهشی که دارم اگر کمک کنید خیلی چیزه توپی از آب در می یاد)
    ------------------------------------------------------------------------------------------------------------------------
    راه فردا که در پیش داریم راه نرفته ی ماست آن را درست بپیماییم



  2. #2
    کاربر دائمی آواتار complexcoding
    تاریخ عضویت
    مرداد 1389
    محل زندگی
    قزوین
    سن
    33
    پست
    744

    نقل قول: آموزش نکات مفید ساخت بازی های گوناگون در سی شارپ(مبتدی تا پیشرفته)

    خوب برای شروع اولین پست رو خودم می ذارم:تا حالا این بازی رو انجام دادید که 2 تا عکس شبیه هم باشن با هم حذف می شن(puzzel)؟این بازی رو از ابتدا با یه مثال خیلی ساده شروع می کنم.مثلا 4 تا label داریم رو فرم که 4 تا عدد 1 , 1 و 2 , 2 روی label ها نوشتیم حالا می خواییم وقتی پروژه Run کردیم کاربر اعداد رو نبینه و روی هر 2 تا label که تکسشون شبیه هم بود کلیک کرد بره.اول رنگ نوشته رو به رنگ label در می یاریم تا کاربر تکس رو نبینه بعدش با استفاده از رویدادها کاری می کنیم تا زمانی که کاربر کلیک کرد رنگ تکس سیاه بشه و اعداد مشخص بشن.حالا کد مربوطه:
    کد HTML:
    lbl1_mouse up
    if (a == 0)
            {  
                    a = 1;
                    c = lbl1;
               lbl1.forecolor=color=black;  
                    return;
                }
                if ((a == 1) && (!(c == lbl1)))
                {
                    if (lbl1.Text == c.Text)
                  {      
                        lbl1.Visible = false;
                        c.Visible = false;
                        a = 0;
                        c = null;
                  
                    }
                    else
                    {
              a=0;
     lbl1.forecolor=color=White;
    c=null;  
     }
    نکته: a در form_load مساوی صفر قرار گرفته.برای هر چهار label این کار رو انجام می دیم.و c رو در قسمت public تعریف کردیم:
    کد HTML:
    Label c;
    اگر نکته ای سوالی کدی دارید مطرح کنید.
    آخرین ویرایش به وسیله complexcoding : جمعه 10 دی 1389 در 01:33 صبح

  3. #3
    کاربر دائمی آواتار complexcoding
    تاریخ عضویت
    مرداد 1389
    محل زندگی
    قزوین
    سن
    33
    پست
    744

    نقل قول: آموزش نکات مفید ساخت بازی های گوناگون در سی شارپ(مبتدی تا پیشرفته)

    سلام امروز می خوام کدهای قسمت دیگه ای از این بازی رو توضیح بدم این قسمت که از تابع رندوم استفاده می کنه برای تغییر جای label ها ایجاد شده تا کاربر نتونه جای جدید رو تشخیص بده و بازی تکراری نباشه اینم کداش:
    برای اعداد تصادفی غیر تکراری محور x و y :
    کد HTML:
      List<int> numbersx = new List<int>();
    
                numbersx.Add(12);
                numbersx.Add(86);
                numbersx.Add(160);
                numbersx.Add(234);
                //}
    
                List<int> randomsx = new List<int>();
                for (int i = 0; i < 1; i++)
                {
                    try
                    {
                        Random randx = new Random();
                        int randNumx = numbersx[randx.Next(0, numbersx.Count - 1)];
                        randomsx.Add(randNumx);
    در آخر این این مقدار در خاصیت location در label مورد نظر قرار می دیم.

    آخرین ویرایش به وسیله complexcoding : جمعه 10 دی 1389 در 20:57 عصر

  4. #4
    کاربر دائمی آواتار complexcoding
    تاریخ عضویت
    مرداد 1389
    محل زندگی
    قزوین
    سن
    33
    پست
    744

    نقل قول: آموزش نکات مفید ساخت بازی های گوناگون در سی شارپ(مبتدی تا پیشرفته)

    این اولین و تنها بازی بود که من درست کردم.
    دوستان حالا می خواییم درباره بازی های زیر کسی آموزشی داره یا راهنمایی دریغ نکنه:
    1- Puzzel :این بازی یک عکس رو به هم ریخته می کنه بعدش باید کاربر این عکس رو به صورت کشویی به حالت اول در بیاره که یک خانه از عکس خالی می مونه لطفا طرز
    ساختن این بازی رو همونطوری که من یاد دادم(نوع یاد دادن) یاد بدید؟
    2-بازی دوز
    3-بازی MinesWeeper:این بازی در تاپیک های دیگه دیدم ولی هیچکس نخواست آموزش بده فقط سورس گذاشته بود.

  5. #5
    کاربر دائمی آواتار complexcoding
    تاریخ عضویت
    مرداد 1389
    محل زندگی
    قزوین
    سن
    33
    پست
    744

    نقل قول: آموزش نکات مفید ساخت بازی های گوناگون در سی شارپ(مبتدی تا پیشرفته)

    واقعا هیچ یک از دوستان حاضر به کمک نیست ؟؟؟؟

  6. #6

    نقل قول: آموزش نکات مفید ساخت بازی های گوناگون در سی شارپ(مبتدی تا پیشرفته)

    سورس جدید بزار با هم شروع می کنیم به آموزش دادن
    نظرت چیه؟

  7. #7
    کاربر دائمی آواتار L u k e
    تاریخ عضویت
    اسفند 1387
    محل زندگی
    قزوین
    سن
    30
    پست
    559

    نقل قول: آموزش نکات مفید ساخت بازی های گوناگون در سی شارپ(مبتدی تا پیشرفته)

    فکر نمی کنم ساخت بازی با GDI ویندوز زیاد جالب و جذاب باشه واسه بچه ها ...

  8. #8
    کاربر دائمی آواتار ایمان مدائنی
    تاریخ عضویت
    آذر 1386
    محل زندگی
    تهران
    پست
    1,463

    نقل قول: آموزش نکات مفید ساخت بازی های گوناگون در سی شارپ(مبتدی تا پیشرفته)

    ساختن بازي با سي شارپ و پخش آن زياد مفيد نيست
    البته ممنون از زحمات دوست خوبمون براي آموزش
    ولي سي شارپ براي اجرا نياز به دات نت فرمورك داره
    آخرین ویرایش به وسیله ایمان مدائنی : شنبه 11 دی 1389 در 15:07 عصر

  9. #9
    کاربر دائمی آواتار complexcoding
    تاریخ عضویت
    مرداد 1389
    محل زندگی
    قزوین
    سن
    33
    پست
    744

    نقل قول: آموزش نکات مفید ساخت بازی های گوناگون در سی شارپ(مبتدی تا پیشرفته)

    نقل قول نوشته شده توسط hamed_gibago مشاهده تاپیک
    سورس جدید بزار با هم شروع می کنیم به آموزش دادن
    نظرت چیه؟
    خیلی خوبه موافقم
    ابتدا سورس بازیه پازل http://www.jetup.ir/do.php?filename=picture-puzzle.zip
    دوستان درست می گن اما کمی که دستمون راه افتاد با XNA می ریم جلو ...فعلا پله پله.
    این سورس رو از سایت Codeproject گرفتم که یه نفر از کانادا گذاشته بود.

    درباره کدهای این بازی دوستان آموزش بدن:یه جوری که همه متوجه بشن.

  10. #10
    کاربر دائمی آواتار complexcoding
    تاریخ عضویت
    مرداد 1389
    محل زندگی
    قزوین
    سن
    33
    پست
    744

    نقل قول: آموزش نکات مفید ساخت بازی های گوناگون در سی شارپ(مبتدی تا پیشرفته)

    باشه دیگه؟ یعنی هیچکس نمی خواد کمک کنه ؟
    آخرین ویرایش به وسیله complexcoding : دوشنبه 13 دی 1389 در 16:59 عصر

  11. #11

    نقل قول: آموزش نکات مفید ساخت بازی های گوناگون در سی شارپ(مبتدی تا پیشرفته)

    با سلام و تشکر از زحمات دوستان:
    بازی پازل اونطوری که از اسمش بر میاد زیاد سخت و پیچیده نیست و چیزایی که نیاز داره از قبیل زیرن:
    اول از هر چیز آشنایی با کار کردن تایمر در سی شارپ.
    ودوم استفاده از چند پنل یا لیبل برای تقسیم بندی شکل مورد نظر.
    در ضمن می تونیم برای این کار از همون بازی قبلی استفاده کنیم: به این صورت وقتی که پنل های ما حرکت داده شدن و سر جای خودشون قرار گرفتن پیغام برنده شدن داده بشه. (سر جای خودشون) یعنی ما می تونیم به تعداد پنل هایی که برای عکسمون استفاده کردیم پنل های دیگه ای داشته باشیم که شماره ی هر دو پنل یکی باشه و وقتی موقعیت (location) همه ی پنل ها یکی شد پیغام برنده شدن داده شه.
    حالا می مونه حرکت دادن پنل ها یا لیبل ها با استفاده از تایمر.
    من سعی میکنم نه تنها کدای مربوط به این بازی بلکه کدای دیگه ای هم که واسه ساخت بازی در سی شارپ لازمه رو بهتون یاد بدم.
    البته این اولین باریه که میام اینجا و چندان دستم پر نیست. بار بعدی تمام کدای این بازی رو همراه با عکس بهتون نشون می دم.

  12. #12

    نقل قول: آموزش نکات مفید ساخت بازی های گوناگون در سی شارپ(مبتدی تا پیشرفته)

    من تقریباً مبتدی هستم ولی تا حالا چند تا بازی نوشتم و آمادگی خودم رو برای آموزش اعلام می کنم.ولی فعلا سرم شلوغه.سه تا از ساده ترین و اولین بازی هایی که نوشتم در آدرس زیر هستند.پایینی که بازی دوز هست و گرافیک خوبی هم نداره رو 1/5 سال پیش با ++C نوشتم با یه کامپایلر ساده و کم حجم ولی منطقش خوبه.چند تا بازی حرفه ای ترم ساختم که وقت کنم اونا رو هم می ذارم.
    http://bluelife.parsiblog.com
    کدشم اگه خواستین بگین بذارم.
    آخرین ویرایش به وسیله aliblue : شنبه 27 فروردین 1390 در 10:51 صبح

  13. #13

    نقل قول: آموزش نکات مفید ساخت بازی های گوناگون در سی شارپ(مبتدی تا پیشرفته)

    سلام بچه ها . بازی منچ رو کسی میتونه بنویسه؟ یا اینکه رو منچ کار کنید منم ببینم گه چه میکنید.

  14. #14

    پازل ساده 16 خانه ای

    برای ساده تر شدن کار مشخصات هر تکه رو توی یه کلاس نگه میدارم ..
        internal class PazzelImage
    {
    /// <summary>
    /// Mahale asli in Tekke
    /// </summary>
    public int MainLocation { get; private set; }
    /// <summary>
    /// Mahali ke alan in Tekke tu une
    /// </summary>
    public int CurrentLocation { get; set; }
    /// <summary>
    /// Akse marbut be in Tekke
    /// </summary>
    public Image Image { get; set; }

    public PazzelImage(int mainLocation, Image img)
    {
    this.MainLocation = mainLocation;
    this.Image = img;
    this.CurrentLocation = this.MainLocation;
    }


    عکس مربوطه رو لود میکنیم ...
    private Image _pazzelImage;
    public Pazzel()
    {
    InitializeComponent();
    _pazzelImage = Image.FromFile("pazzel.jpg");
    }


    من از یه عکس 400*400 استفاده کرم و اونو به 16 قسمت 100*100 تقسیم کردم ...
            private List<PazzelImage> _imageParts;
    private void InitPazzel()
    {
    int pos = 1;
    Size s = new Size(100, 100);//andazeye har block 100*100
    for (int y = 0; y < 4; y++)
    {
    for (int x = 0; x < 4; x++)
    {
    Point loc = new Point(x * 100, y * 100);
    Rectangle rect = new Rectangle(loc, s);
    PazzelImage img = new PazzelImage(pos, _pazzelImage.cropImage(rect));
    _imageParts.Add(img);
    _drawBounds.Add(pos, rect);
    pos++;
    }
    }
    _imageParts.RemoveAt(15);
    _empty = 16;
    Randomize();
    }

    مستطیل های ساخته شده رو به همراه شماره موقعیتشون ( از 1 تا 16 ) توی یه لیست نگه میدارم ...
            private Dictionary<int, Rectangle> _drawBounds;


    حالا موقعیت قرار گیری این مستطیل ها رو به صورت رندوم به هم میریزیم ...
            private void Randomize()
    {
    List<int> ints = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
    Random rand = new Random();
    foreach (var item in _imageParts)
    {
    int index = rand.Next(0, ints.Count);
    item.CurrentLocation = ints[index];
    ints.RemoveAt(index);
    }
    }


    توی اونت Paint عکس هارو توی یه پنل Draw میکنیم ...
            private void pnlDraw_Paint(object sender, PaintEventArgs e)
    {
    if (_imageParts != null && _imageParts.Count > 0)
    {
    foreach (PazzelImage item in _imageParts)
    {
    e.Graphics.DrawImage(item.Image, _drawBounds[item.CurrentLocation]);
    }
    }
    }


    از اینجا به بعد قسمت اصلیش شروع میشه ... با کلیک روی هر کدوم از این تکه ها ...
    1 - مختصات محل کلیک
                Point mPOs = this.PointToClient(Cursor.Position);

    2 - مختصات مستطیل ها رو که توی _drawBounds ذخیره کرده بودیم چک میکنیم ببینیم محل کلیک توی کدوم یک از این مستطیل هاست ...
            private KeyValuePair<int, Rectangle> GetClickedRectangle(Point pos)
    {
    foreach (var item in _drawBounds)
    {
    if ( (pos.X > item.Value.X && pos.X < item.Value.Right) &&
    (pos.Y > item.Value.Y && pos.Y < item.Value.Bottom))
    {
    return item;
    }
    }
    return new KeyValuePair<int, Rectangle>(16, Rectangle.Empty);
    }


    3 - با توجه به مستطیل انتخاب شده object عکس اون محل رو پیدا مسکنیم ...
                PazzelImage part = _imageParts.First(n => n.CurrentLocation == selectedRectangle.Key);


    4 - محل خونه خالی رو توی یه متغیر نگه میداریم ...
            private int _empty;

    5 - محل مستطیل دریافت شده رو چک میکنیم که خونه خالی نباش ...
                if (selectedRectangle.Key != _empty)

    6 - اگه محل مستطیل دریافت شده خونه خالی نیست چک میکنیم که در همسایگی خونه خالی هست یا نه ...

    private bool IsInContanct(Rectangle rect)
    {
    Rectangle empty = _drawBounds[_empty];
    //az samte balayi ba mahale khali dar tamas ast
    if ((rect.Top - 5 < empty.Bottom) && (rect.Bottom > empty.Bottom) && (rect.X == empty.X))
    return true;

    //az samte payini ba mahale khali dar tamas ast
    if ((rect.Bottom + 5 > empty.Top) && (rect.Top < empty.Top) && (rect.X == empty.X))
    return true;

    //az samte chap ba mahale khali dar tamas ast
    if ((rect.Left - 5 < empty.Right) && (rect.Right > empty.Right) && (rect.Y == empty.Y))
    return true;

    //az samte rast ba mahale khali dar tamas ast
    if ((rect.Right + 5 > empty.Left) && (rect.Left < empty.Left) && (rect.Y == empty.Y))
    return true;

    return false;
    }

    7 - اگر جواب مثبت بود محل این 2 مستطیل رو عوض میکنیم و پنل رو RePaint ...
                    if (IsInContanct(selectedRectangle.Value))
    {
    PazzelImage part = _imageParts.First(n => n.CurrentLocation == selectedRectangle.Key);
    int temp = _empty;
    _empty = part.CurrentLocation;
    part.CurrentLocation = temp;
    pnlDraw.Invalidate();
    }

    8 - و آخر سر چک میکنیم که آیا همه خونه ها سر جای خودشون هستن یا نه ...
            private bool IsFinish()
    {
    foreach (var item in _imageParts)
    {
    if (item.MainLocation != item.CurrentLocation)
    return false;
    }
    return true;
    }


    و اینجوریا ....
    فایل های ضمیمه فایل های ضمیمه

  15. #15

    نقل قول: آموزش نکات مفید ساخت بازی های گوناگون در سی شارپ(مبتدی تا پیشرفته)

    نقل قول نوشته شده توسط RIG000 مشاهده تاپیک
    سلام بچه ها . بازی منچ رو کسی میتونه بنویسه؟ یا اینکه رو منچ کار کنید منم ببینم گه چه میکنید.
    منظورت چهجور منچیه ...آخه منچ که 1 جور نیست ...

  16. #16

    نقل قول: آموزش نکات مفید ساخت بازی های گوناگون در سی شارپ(مبتدی تا پیشرفته)

    منچ همون 4 طرف 6 تا مهره هستش اونو میگم . حالا ساده یا پیشرفته هر چه پیشرفته تر بهتر. بعدش یه تاس میندازی بالا 6 تایی هستش

  17. #17

    نقل قول: آموزش نکات مفید ساخت بازی های گوناگون در سی شارپ(مبتدی تا پیشرفته)

    نقل قول نوشته شده توسط RIG000 مشاهده تاپیک
    منچ همون 4 طرف 6 تا مهره هستش اونو میگم . حالا ساده یا پیشرفته هر چه پیشرفته تر بهتر. بعدش یه تاس میندازی بالا 6 تایی هستش
    منچ ماله بچه هاس ما دیگه الان world of warcraft و Dragon Age 2 بازی میکنیم . من خیلی وقته بازی نکردم اصلا یادم نیست ... یه عکس و نحوه بازی رو بگین ببینم چجوریاس ....

  18. #18

    نقل قول: آموزش نکات مفید ساخت بازی های گوناگون در سی شارپ(مبتدی تا پیشرفته)

    نقل قول نوشته شده توسط exlord مشاهده تاپیک
    منچ ماله بچه هاس ما دیگه الان world of warcraft و Dragon Age 2 بازی میکنیم . من خیلی وقته بازی نکردم اصلا یادم نیست ... یه عکس و نحوه بازی رو بگین ببینم چجوریاس ....
    یعنی اینو متونی بنویسی .من استیتش اصلا" تا حالا برای نوشتن بازی یه اقدامم نکردم اصلا" نمیدونم چ کنم . اما این بازی رو خیلی دوست دارم
    picture
    mensch_h.jpg

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •