صفحه اصلی / دوره‌های آموزشی / آموزش ویندوز فرم سی شارپ، مقدماتی / ساخت بازی دوز

ساخت بازی دوز

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

جلسات دوره


          
22 دقیقه
رایگان
           
مهدی احمدی
مدرس:

مهدی احمدی

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

برای ساخت بازی دوز ابتدا 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) آشنا شویم. لطفاً با ما همراه باشید...

نظرات دانشجویان

کاربر درسمن
Chem_Nobelium

سلام و وقت بخیر دوره ها کامل نیستن!؟ چونکه صحبت استاد تموم مشده دوره تموم میشه !!! برخی پروژه ها مثل ماشین حساب هم دارای باگ های زیادی هست :|

پشتیبانی 1
پشتیبانی 1

سلام وقتتون بخیر، به مدرس اطلاع دادیم تا دروس ناقص را تکمیل کنند در اولین فرصت که ویدئو ها به دست ما برسد، درس های ناقص تکمیل می شوند.

نمایش بیشتر

نظر شما در تصمیم دیگران اثرگذار است.

لطفا برای همراهان درسمن و بهتر شدن دوره نظر خود را بنویسید.

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

53