Tic-tak-toe o’yinini Microsoft Visual studio 2012 C# dasturi yordamida ham
yaratamiz.
Tic-tac-toe o’yinini yaratish ketma-ketligi
Ushbu o’yinni Microsoft Visual studio 2012 C# dasturida yaratilgan. Loyihani
yaratish uchun birinchi bo`lib yangi proyekt ochib olamiz. Buning uchun avval
Пуск
→
Все программы
→
Microsoft Visual Studio 2012
→
Microsoft Visual
Studio ni tanlab sichqonchani o’ng tomonini bir marta chertamiz, so’ngra u yerdan
Visual Studio 2012 ni tanlab sichqonchani o’ng tomonini ikki marta chertamiz.
Visual Studio ning menyular satrida joylashgan File menyusidan New
→
Projekt
→
Visual C#, Windows Forms Application ni tanlab, “OK” tugmasinini chertamiz
(1, 2, 3-rasmlarga qarang).
Form oynasidagi “Form1” nomini “Tic tac toe” ga o’zgartirib olamiz .
File va Help menyularini hosil qilish uchun ochilgan form oynamizga
toolbox dan “ToolStrip” tashlaymiz.
O’yin tugmachalari uchun toolbox dan 9 ta button tashlaymiz, ularning
o’lchamini kerakli holatga keltirib olamiz. Birinchi satrda joylashgan tugmalarni
A1, A2, A3 deb nomlab olamiz. Ikkinchi satrda joylashgan tugmalarni B1, B2, B3
deb nomlab olamiz. Uchinchi satrda joylashgan tugmalarni C1, C2, C3 deb nomlab
olamiz.
Help menyusidagi “About” bo’limini o’yin haqida qisqacha malumot berish
uchun hosil qilamiz.
File menyusidagi “New game” o’yinni yangidan boshlash vazifasini,
“Exit” o’yindan chiqish vazifasini bajarishi uchun hosil qilib olamiz va kerkli
dastur kodini kiritib olamiz.
O’yin ko’rimli bo’lishi uchun dizayniga biroz ishlov beramiz. Buning uchun
Properties BackgroundImage ni tanlaganizda rasmdagi muloqot oynasi
ochiladi.
“Import” tugmasini chertamiz va 13-rasmdagi muloqot oynasidan kerakli
rasmni topganimizdan so’ng “Открыт” tugmasini chertamiz.
Quyidagi dastur kodlarini bexato yozganimizdan song o’yinimiz tayyor
bo’ladi:
namespace Amaliy_ishim
{
public partial class Form1 : Form
{
bool turn = true; // false = X turn; true = O turn;
int turn_count = 0;
public Form1()
{
InitializeComponent();
}
private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
{
MessageBox.Show(" Jo’raboyev tomonidan ishlab chiqildi.","Tic tac toe haqida");
}
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void button_Click(object sender, EventArgs e)
{
if ((p1.Text == "Player1") || (p2.Text == "Player2"))
{
MessageBox.Show("O'yinni boshlash uchun o'yinchilar ismlari kiritilishi shart!");
}
else
{
Button b = (Button)sender;
if (turn)
b.Text = "X";
else
b.Text = "O";
turn = !turn;
b.Enabled = false;
turn_count++;
label2.Focus();
checkForWinner();
}
}
private void checkForWinner()
{
bool there_is_a_winner=false;
//gorizontaliga tekshirishlar:
if((A1.Text==A2.Text)&&(A3.Text==A2.Text)&&(!A1.Enabled))
there_is_a_winner=true;
else if ((B1.Text == B2.Text) && (B3.Text == B2.Text) && (!B1.Enabled))
there_is_a_winner=true;
else if ((C1.Text == C2.Text) && (C3.Text == C2.Text) && (!C1.Enabled))
there_is_a_winner=true;
//vertikaliga tekshirishlar:
if ((A1.Text == B1.Text) && (B1.Text == C1.Text) && (!A1.Enabled))
there_is_a_winner = true;
else if ((A2.Text == B2.Text) && (B2.Text == C2.Text) && (!A2.Enabled))
there_is_a_winner = true;
else if ((A3.Text == B3.Text) && (B3.Text == C3.Text) && (!A3.Enabled))
there_is_a_winner = true;
//Gorizontaliga tekshirishlar:
if ((A1.Text == B2.Text) && (B2.Text == C3.Text) && (!A1.Enabled))
there_is_a_winner = true;
else if ((A3.Text == B2.Text) && (B2.Text == C1.Text) && (!A3.Enabled))
there_is_a_winner = true;
if (there_is_a_winner)
{
disableButtons();
String winner = "";
if (turn)
{
winner = p2.Text;
o_win_count.Text = (Int32.Parse(o_win_count.Text) + 1).ToString();
}
else
{
winner = p1.Text;
x_win_count.Text = (Int32.Parse(x_win_count.Text) + 1).ToString();
}
MessageBox.Show(winner + " G'olib!");
}//if ning tamomlanishi.
else
{
if (turn_count == 9)
{
draw_count.Text = (Int32.Parse(draw_count.Text) + 1).ToString();
MessageBox.Show("Durrang!", "Bummer");
}
}
}//checkForWinner ning tamomlanishi.
private void disableButtons()
{
try
{
foreach (Control c in Controls)
{
Button b = (Button)c;
b.Enabled = false;
}//foreach ning tamomlanishi.
}//try ning tamomlanishi.
catch{ }
}
private void newGameToolStripMenuItem_Click(object sender, EventArgs e)
{
turn = true;
turn_count = 0;
foreach (Control c in Controls)
{
try
{
Button b = (Button)c;
b.Enabled = true;
b.Text = "";
}//try ning tamomlanishi.
catch { }
}//foreach ning tamomlanishi.
}
private void button_enter(object sender, EventArgs e)
{
Button b = (Button)sender;
if (b.Enabled)
{
if (turn)b.Text = "X";
else b.Text = "O";
}
}
private void button_leave(object sender, EventArgs e)
{
Button b = (Button)sender;
if (b.Enabled) { b.Text = ""; }
}
private void resetWinCountToolStripMenuItem_Click(object sender, EventArgs e)
{
x_win_count.Text = "0";
o_win_count.Text = "0";
draw_count.Text = "0";
}
}
}
Kompilyator programma matnini leksik va sintaktik tahlil qiladi. Probel
ajratuvchisi - probel belgisi ('─'), '\t' - tabulyatsiya belgisi, '\n'- keyingi qatorga
o’tish belgisi hisoblnadi.
Programma matni tushunarli bo’lishi uchun izohlar ishlatiladi. Izohlar
kompilyator tomonidan «o’tkazib» yuboriladi va ular programma amal qilishiga
hech qanday ta’sir qilmaydi.
C# tilida izohlar ikki ko’rinishda yozilishi mumkin.
Birinchisida "/*" dan boshlanib, "*/" belgalari bilan tugagan barcha belgilar
ketma-ketligi izoh hisoblanadi, ikkinchisi «satriy izoh» deb nomlanadi va u "//"
belgilardan boshlangan va satr oxirigacha yozilgan belgilar ketma-ketligi bo’ladi.
Izohlardan keyin C# operatorlari davom etishi mumkin.
XULOSA
Ushbu o’yin dasturini tayyorlash jarayonida men Google Chrome va Yandex
dasturlaridan samarali foydalanishni o’rgandim. Constructor 2 pragrammasida
ishlashni o’rgandim.Microsoft Visual Studio dasturi yordamida Adobe Photoshop,
AdobeIllustrator va boshqa kompyuter grafikasi dasturlarida tayyorlash ancha
murakkab bo’lgan animatsiyali va grafik mahsulotlarni nihoyatda ko’rimli va
osongina tayyorlash mumkinligini bilib oldim.Microsoft Visual Studio da
tayyorlangan mahsulotimizni dizayniga ishlov berishni o’rgandim. Buning
natijasida, tayyorlangan o’yin dasturimiz tashqi ko’rinishi bilan o’ynovchilarni
o’ziga jalb qiladi. O’ynovchilarning o’yinga bo’lgan qiziqishini orttiradi. Dasturda
yuz berishi mumkin bo’lgan xatoliklarni oldi olingan, dasturning yashash sikli
hisobga olingan bo’lishi lozim ekan. Shundagina yaratilgan dastur foydalanuvchiga
uzoq muddat, samarali hizmat qilishi mumkin. Men ushbu kurs ishini tayyorlash
davomidagi vaqt oralig`ida juda ko`p bilim, ko`nikma va malakalarga ega bo`ldim.
Ushbu kurs ishim yordamida C# tili, uning tarixi, asoschilari, uning asosi, til
grammatikasi va qoidalari va operatorlar haqida juda ko`p bilimga ega bo`ldim.
Bundan tashqari chizmalar chizish shu ishlar orqali o`yinlar yaratish o`yin
yaratilayotgan vaqt mobaynida o`yin kodlarini yozish haqida ham ko`p ma`lumotlar
oldim. C# visual studio dasturida o`yinlarni yaratish tahlil qilish uchun yana
ko`pgina grafik chiziqlar chizish, funksiyalardan foydalanish usullarini o`rgandim.
Qisqa qilib aytganda ushbu kurs ishim meni bilim olishimga, izlanishimga orgatdi.
Microsoft Visual Studio dasturi , dasturlashasoslari yordamida hosil qilinadigan -
fraktal grafika ga bo’lgan qiziqishlarimni yanada orttirdi. Fraktal grafikaga juda ham
qiziqaman. Kelgusida fractal grafika yo’nalishida kata ishlar qilishni o’z oldimga
maqsad qilib oldim. Ushbu kurs ishini tayyorlash jaryonida ko’pgina kitoblarni o’qib
chiqishga muvaffaq bo’lsdim. Buning natijasida men anchdan buyon
o’ylantirayotgan ko’pgina savollarimga javoblar oldim va ko’pdan – ko’p yangi
bilimlarni o’zlashtirib oldim.
|