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).
3-rasm
Form oynasidagi “Form1” nomini “Tic tac toe” ga o’zgartirib olamiz (4-rasmga
qarang).
4-rasm
File va Help menyularini hosil qilish uchun ochilgan form oynamizga
toolbox dan “ToolStrip” tashlaymiz (5-rasmga qarang).
5-rasm
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. (6-rasmga qarang).
6-rasm
Help menyusidagi “About” bo’limini o’yin haqida qisqacha malumot berish
uchun hosil qilamiz (7, 8-rasmlarga qarang).
7-rasm
8-rasm
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 (9, 10-rasmlarga qarang).
9-rasm
10-rasm
O’yin ishtirokchilarni ismlarini yozish uchun 2 ta “Texbox” va 4 ta “Label”
tashlab olamiz (11-rasmga qarang).
11-rasm
O’yin ko’rimli bo’lishi uchun dizayniga biroz ishlov beramiz. Buning uchun
Properties
BackgroundImage ni tanlaganizda 12-rasmdagi muloqot oynasi
ochiladi.
12-rasm
“Import” tugmasini chertamiz va 13-rasmdagi muloqot oynasidan kerakli
rasmni topganimizdan so’ng “Открыт” tugmasini chertamiz (13-rasmga qarang).
13-rasm
14-rasm
Quyidagi dastur kodlarini bexato yozganimizdan song o’yinimiz tayyor
bo’ladi:
namespace
Kurs_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(
" Muxarram 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. 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.
Do'stlaringiz bilan baham: |