Mavzu: Tic tac toe o’yini reja: I. Kirish II. Asosiy qism


Tic-tac-toe o’yinini yaratish ketma-ketligi


Download 1.26 Mb.
Pdf ko'rish
bet11/12
Sana05.01.2022
Hajmi1.26 Mb.
#211548
1   ...   4   5   6   7   8   9   10   11   12
Bog'liq
Muxarramning kurs ishi -1

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).  



 

1-rasm 


                      

2-rasm  



 

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. 





Download 1.26 Mb.

Do'stlaringiz bilan baham:
1   ...   4   5   6   7   8   9   10   11   12




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling