Oyun insanların istifadə edə biləcəyi əyləncə formalarından biridir. Bütün növ oyunlar onlayn, mobil cihazlarda, stolüstü kompüterlərdə və s. mövcuddur. İndi o çətin oyunlardan birini yaratmağın vaxtı deyil.
Python istifadə edərək, biz CLI tic-tac-toe oyunu edəcəyik. Gəlin sadə Tic Tac Toe oyunu qurmaq üçün Python-dan istifadə edək. O, sizə oyun məntiqini yaratmağa və kodu necə təşkil etməyi öyrənməyə kömək edəcək.
X O oyunu
Kodlaşdırmaya başlamazdan əvvəl mən oyunu tez bir zamanda ümumiləşdirməyi və onu inkişaf etdirmək planımı müzakirə edəcəyimi düşündüm.
Birincisi, X-lərin həmişə təşəbbüsü ələ alması və birinci hərəkət etməsi, istifadəçiyə hərəkət etmək imkanı verdiyi fərziyyəsini formalaşdıracağıq.
Konsoldan 1 ilə 9 arasında bir rəqəm daxil ediləcək. Hər bir nömrənin fərqli bir rəqəmə uyğun olduğu şəbəkədə (yuxarı sol 1, sağ alt 9).
İstifadəçi hərəkət etdikdən sonra kompüter avtomatik olaraq öz hərəkətini təyin edəcək və edəcək. Bir sıra müxtəlif rutinləri çağıran bir əsas oyun dövrəsi mənim tərəfimdən istifadə olunacaq.
Hansı funksiyanın tamamlandığı yəqin ki, bu mətn əsaslı dərsin hər başlığında göstərilir.
Lövhənin dizaynı
Əvvəldə qeyd etdiyim kimi, lövhəmizi bir şəbəkə tərtibindən istifadə edərək təsvir edəcəyik. Bunu etmək üçün Python-da board adlı siyahı yaradacağıq və o, 10 boş dəyərlə başlayacaq.
İstifadəçi 1-dan 9-ə deyil, yalnız 0-dən 8-a qədər rəqəmləri daxil edə bildiyi üçün bizdə 10 deyil, 9 boş dəyər var. Beləliklə, işləri sadələşdirmək üçün siyahımızın ilk girişinə “boş mətn” dəyərini verəcəyik.
Bu şəkildə, siyahımızda olan qeydləri indeksləşdirmək üçün 1-9 əvəzinə 0-8-dan istifadə edə bilərik.
insertLetter()
Letter və Pos bu funksiya üçün iki giriş olacaq. O, yalnız tələb olunan məktubu tələb olunan yerə qoyacaq.
spaceIsFree(pos)
Sadəcə olaraq, bu üsul göstərilən ərazinin boş olub olmadığını bizə məlumat verəcəkdir. Deməli, onsuz da orada məktub yoxdur. Pos, onun yeganə arqumenti 1 ilə 9 arasında tam ədəd olacaq.
çap lövhəsi (board)
Lövhə bu metoda arqument olaraq göndərilir və onu konsolda göstərir.
isWinner()
Mövcud lövhəyə əsasən, bu funksiya bizə təqdim olunan məktubun qalib olub olmadığını bildirəcək. Onun iki parametri var: le və lövhə (məktub).
Bu, "X" və ya "O" olmalıdır. Sadəcə olaraq, qeyd olunan hərfin lövhədəki hər bir potensial uduş xəttində olub-olmadığını yoxlayın.
əsas ()
Oyuna başlamaq istədikdə bu metodu çağıracağıq. O, proqramımızın bir çox funksiyalarının hər birini çağıracaq və proqramın necə işləməsi lazım olduğunu istiqamətləndirəcək.
isBoardFull()
Daxiletmə kimi verildikdə, lövhə doludursa, bu üsul sadəcə olaraq True, əks halda isə False qaytaracaq.
playerMove()
Bu üsulda biz istifadəçidən köçürmə tələb edəcəyik və onu təsdiq edəcəyik. Hərəkət qanuni olarsa, məktub şuraya əlavə olunacaq. Əks halda, biz istifadəçinin rəyini tələb etməyə davam edəcəyik.
CompMove() – AI
AI indi başlayacaq. Kompüterlərin hərəkəti bu funksiya ilə idarə olunacaq. O, şuranı qiymətləndirəcək və etmək üçün ən yaxşı hərəkəti seçəcək.
Aşağıda bunu etmək üçün istifadə edəcəyimiz alqoritmin siyahısı verilmişdir.
- Cari addımı tamamlamaq mümkün deyilsə, aşağıdakı birinə keçin.
- Mümkünsə, qazanan hərəkəti edin.
- Əgər oyunçunun potensial qazanan hərəkəti varsa, növbəti növbədə həmin mövqeyə keçin.
- Bir künc seçin və onu çevirin. Bir neçə seçim varsa təsadüfi seçin.
- Özünüzü ortalığa qoyun.
- Kenarlardan birini nəzərdən keçirin. Bir neçə seçim varsa təsadüfi seçin.
- Hərəkət etmək üçün heç bir yol yoxdursa, oyun bərabərliklə başa çatır.
seçinRandom()
Potensial yerlərin siyahısını nəzərə alaraq, bu funksiya təsadüfi olaraq görüləcək tədbiri seçəcək.
Oyunun Başlanması
Bütün tapşırıqlarımızı yerinə yetirdiyimiz üçün oyun indi başlaya bilər. Əgər oyunu bir dəfə idarə etmək istəsək, etməmiz lazım olan tək şey main çağırmaqdır.
Amma bizim vəziyyətimizdə, istifadəçi artıq oynamaq istəmədiyinə qərar verənə qədər oyunun davam etməsini istəyirik, ona görə də əsas xəttə kiçik bir müddət əlavə edəcəyik.
Kodu tamamlayın
Budur oyunumuzun bütün kodu, artıq tamamlandı.
Buraxılış
Nəticə
Hurray!
Tamamilə sıfırdan hazırladığınız bir oyun. Bu, müntəzəm olaraq oynadığımız oyun deyil. Lakin o, məntiqin yazılmasına və kodda aydın strukturun saxlanmasına kömək edir.
Xoşbəxt kodlaşdırma!
Cavab yaz