ساخت بازی دوز


ساخت بازی دوز
برای خرید این درس نیاز است وارد سایت شوید. در صورت نداشتن حساب کاربری عضو شوید.

برای ساخت بازی دوز ابتدا 9 لیبل به صورت 3 در 3 روی صفحه می‌سازیم. برای نام‌گزاری آنها از کلمه lbl و دو عدد استفاده می‌کنیم. اولین لیبل از سمت بالا-چپ به نام lbl00 و دومین لیبل بالا-وسط به نام lbl01 است و با همین الگو پیش می‌رویم.

ساخت بازی دوز در ویندوز فرم

حال باید یک آرایه دوبعدی 3 در 3 تعریف کنیم تا نام لیبل کلیک شده را درون آن بریزیم.

int[,] XO = new int[3, 3];

در این بازی کلیک راست ماوس بازیکن شماره 2 و کلیک چپ بازیکن شماره 1است. چون همه لیبل‌ها در هنگام کلیک یک کار را انجام می‌دهند، برای آنها یک رویداد مشترک تعریف می‌کنیم. درون این رویداد ابتدا باید متن لیبل کلیک شونده را با شماره بازیکن کلیک کننده پر کنیم و دو عدد آخر نام لیبل را درون آرایه بریزیم و برسی کنیم که آیا این بازیکن برنده است یا خیر.

ابتدا باید شرطی بنویسیم که مشخص کند کلیک چپ زره شده یا راست. همان طور که در جلاسات پیشین گفته شد، مشخصات شیء کلیک کننده درون متغیر e ذخیره می‌شود.


if (e.Button == MouseButtons.Left) //شد چپ کلیک اگر
{ 
}

حال باید دو عدد آخر نام لیبل را جدا کرده و درون آرایه بریزیم.

private void lblClick(object sender, MouseEventArgs e)
{
    int i, j;
    i = int.Parse(((Label)sender).Name[3].ToString()); //کارکتر سومین
    j = int.Parse(((Label)sender).Name[4].ToString()); //کارکتر چهارمین
    if (e.Button == MouseButtons.Left) //شد چپ کلیک اگر
    { 
        
    }
}

حال درون شرط متن لیبل را با شماره بازیکن پر کرده و مقارید را درون آرایه میریزیم.

private void lblClick(object sender, MouseEventArgs e)
{
    int i, j;
    i = int.Parse(((Label)sender).Name[3].ToString()); //کارکتر سومین
    j = int.Parse(((Label)sender).Name[4].ToString()); //کارکتر چهارمین
    if (e.Button == MouseButtons.Left) //شد چپ کلیک اگر
    {
        ((Label)sender).Text = "1"; //لیبل متن پرکردن
        XO[i, j] = 1; //آرایه در متن ریختن
    }
}

حال باید برای بازیکن شماره 2 نیز این عمل را تکرار کنیم.

private void lblClick(object sender, MouseEventArgs e)
{
    int i, j;
    i = int.Parse(((Label)sender).Name[3].ToString()); //کارکتر سومین
    j = int.Parse(((Label)sender).Name[4].ToString()); //کارکتر چهارمین
    if (e.Button == MouseButtons.Left) //شد چپ کلیک اگر
    {
        ((Label)sender).Text = "1"; //لیبل متن پرکردن
        XO[i, j] = 1; //آرایه در متن ریختن
    }
    else
    {
        ((Label)sender).Text = "2"; //لیبل متن پرکردن
        XO[i, j] = 2; //آرایه در متن ریختن
    }
}

تا اینجا همه کارها به درستی انجام شده است و اکنون باید تابعی بنویسیم تا برسی کن که آیا بازیکن برنده شده است یا نه. این تابع سه ورودی دارد که شامل شماره بازیکن کلیک کننده، مقدار i و j است، نام این تابع را check قرار می‎دهیم.

درون تابع check باید چهار تابع دیگر را فراخانی کنیم که هرکدام یکی از جهات (عمودی، افقی، قطراصلی و قطر فرعی) را برای بازیکن برسی می‌کنند.

public void check(int i, int j, int person) //check تابع
{
    rowcheck(i, j, person); //افقی ردیف برسی تابع
    colcheck(i, j, person); //عمودی ردیف برسی تابع
    ghotraslicheck(person); //اصلی قطر برسی تابع
    ghotrfareicheck(person); //فرعی قطر برسی تابع
}

اکنون باید هریک از این چهار تابع را به صورت جداگانه تعریف کنیم.

public void rowcheck(int i, int j, int person) //rowcheck تابع
{
    if (XO[i, 0] == person && XO[i, 1] == person && XO[i, 2] == person)
    {
        MessageBox.Show("بازیکن شماره " + person.ToString()+ " برنده شد");
    }
}
public void colcheck(int i, int j, int person) //colcheck تابع
{
    if (XO[0,j] == person && XO[1,j] == person && XO[2,j] == person)
    {
        MessageBox.Show("بازیکن شماره " + person.ToString() + " برنده شد");
    }
}
public void ghotraslicheck(int person) //ghotraslicheck تابع
{
    if (XO[0, 0] == person && XO[1, 1] == person && XO[2, 2] == person)
    {
        MessageBox.Show("بازیکن شماره " + person.ToString() + " برنده شد");
    }
}
public void ghotrfareicheck(int person) //ghotrfareicheck تابع
{
    if (XO[2, 0] == person && XO[1, 1] == person && XO[0, 2] == person)
    {
        MessageBox.Show("بازیکن شماره " + person.ToString() + " برنده شد");
    }
}

حال باید تابع check را درون شرط بنویسیم.

private void lblClick(object sender, MouseEventArgs e)
{
    int i, j;
    i = int.Parse(((Label)sender).Name[3].ToString()); //کارکتر سومین
    j = int.Parse(((Label)sender).Name[4].ToString()); //کارکتر چهارمین
    if (e.Button == MouseButtons.Left) //شد چپ کلیک اگر
    {
        ((Label)sender).Text = "1"; //لیبل متن پرکردن
        XO[i, j] = 1; //آرایه در متن ریختن
        check(i, j, 1); //check تابع
    }
    else
    {
        ((Label)sender).Text = "2"; //لیبل متن پرکردن
        XO[i, j] = 2; //آرایه در متن ریختن
        check(i, j, 2); //check تابع
    }
}

امید واریم که این آموزش برای شما مفید واقع شده باشد. در قسمت بعد قصد داریم که در کنار شما عزیزان با کنترل دکمه(Button) آشنا شویم. لطفاً با ما همراه باشید...


نظر بدهید

نشانی ایمیل شما منتشر نخواهد شد .
برای ارسال نظر نیاز است وارد سایت شوید. در صورت نداشتن حساب کاربری عضو شوید.

مشخصات دوره


مدرس دوره : مهدی احمدی
تعداد جلسات 26 جلسه
مدت زمان 538 دقیقه
حجم دوره 1/24 گیگابایت
سطح مهارت مقدماتی
وضعیت دوره درحال برگزاری
تعداد دانشجویان 224
: میانگین امتیاز

رایگان
برای دسترسی به این دوره وارد یا عضو شوید.
مهدی احمدی
مهدی احمدی

درباره مدرس :

از سال 1380 برنامه نویسی را شروع کرده و از سال 90 در این زمینه تدریس میکنم .با زبانهای سی پلاس پلاس ، سی ،پاسکال ،VB ، سی شارپ ،اسمبلی، جاوا و .... کار کرده و آنها را تدریس کرده ام.هم اکنون نیز مشغول تدریس ... تدریس در دانشگاه هستم و مدتی است با سایت درسمن همکاری میکنمبیشتر بدانید