O'yin - bu odamlar uchun mavjud bo'lgan ko'ngilochar turlaridan biri. Barcha turdagi o'yinlar onlayn, mobil qurilmalarda, ish stoli kompyuterlarida va hokazolarda mavjud. Hozir o'sha qiyin o'yinlardan birini yaratish vaqti emas.
Python-dan foydalanib, biz CLI tic-tac-toe o'yinini yaratamiz. Keling, oddiy Tic Tac Toe o'yinini yaratish uchun Python-dan foydalanaylik. Bu sizga o'yin mantig'ini yaratishda va kodni qanday tashkil qilishni o'rganishda yordam beradi.
Tic-Tac-Toe
Kodlashni boshlashdan oldin, men tezda o'yinni umumlashtirib, uni ishlab chiqish rejamni muhokama qilaman deb o'yladim.
Birinchidan, biz Xs har doim tashabbusni o'z qo'liga oladi va birinchi bo'lib harakat qiladi, degan taxminni o'rnatamiz, bu esa foydalanuvchiga harakat qilish imkoniyatini beradi.
Konsoldan 1 dan 9 gacha bo'lgan raqam kiritiladi. Har bir raqam boshqa raqamga to'g'ri keladigan to'rda (yuqori chap - 1, pastki o'ng - 9).
Foydalanuvchi harakat qilgandan so'ng kompyuter avtomatik ravishda o'z harakatini aniqlaydi va amalga oshiradi. Men turli xil tartiblarni chaqiradigan bitta asosiy o'yin tsiklidan foydalanaman.
Qaysi funksiya tugallanayotgani matnga asoslangan darsning har bir sarlavhasida ko'rsatilgan bo'lishi mumkin.
Kengashni loyihalash
Yuqorida aytib o'tganimdek, biz o'z taxtamizni panjara sxemasidan foydalangan holda tasvirlaymiz. Buni amalga oshirish uchun biz Pythonda board nomli roʻyxat tuzamiz va u 10 ta boʻsh qiymatdan boshlanadi.
Foydalanuvchi 1 dan 9 gacha emas, faqat 0 dan 8 gacha raqamlarni kiritishi mumkinligi sababli bizda 10 emas, 9 ta bo‘sh qiymat bor. Shunday qilib, narsalarni soddalashtirish uchun ro‘yxatimizning birinchi yozuviga “bo‘sh matn” qiymatini beramiz.
Shu tarzda, ro'yxatimizdagi yozuvlarni indekslash uchun 1-9 o'rniga 0-8 dan foydalanishimiz mumkin.
insertLetter()
Letter va Pos bu funksiya uchun ikkita kirish bo'ladi. U faqat so'ralgan xatni so'ralgan joyga qo'yadi.
spaceIsFree(pos)
Oddiy qilib aytganda, ushbu usul ko'rsatilgan maydon bo'sh bo'lsa, bizga xabar beradi. Demak, u yerda allaqachon xat yo'q. Pos, uning yagona argumenti 1 dan 9 gacha bo'lgan butun son bo'ladi.
bosma taxtasi (taxta)
Kengash ushbu usulga argument sifatida yuboriladi, uni konsolda ko'rsatadi.
isWinner()
Mavjud kengashga asoslanib, bu funksiya bizga taqdim etilgan xatning g'alaba qozonganligini bildiradi. U ikkita parametrga ega: le va taxta (harf).
Bu "X" yoki "O" bo'lishi kerak. Doskadagi har bir potentsial g'alaba chizig'ida ko'rsatilgan harf mavjudligini bilish uchun oddiygina qarang.
asosiy ()
O'yinni boshlamoqchi bo'lganimizda, biz ushbu usulni chaqiramiz. U bizning dasturimizning ko'p funksiyalarining har birini chaqiradi va dastur qanday ishlashini yo'naltiradi.
isBoardFull()
Bortga kirish sifatida berilgan bo'lsa, bu usul taxta to'la bo'lsa "True", aks holda "False" qiymatini qaytaradi.
playerMove()
Ushbu usulda biz foydalanuvchidan ko'chirishni so'raymiz va uni tasdiqlaymiz. Agar harakat qonuniy bo'lsa, xat kengashga qo'shiladi. Aks holda, biz foydalanuvchining fikr-mulohazalarini so'rashda davom etamiz.
CompMove() - AI
AI endi boshlanadi. Kompyuterlarning harakati shu funksiya tomonidan boshqariladi. U kengashni baholaydi va eng yaxshi harakatni tanlaydi.
Quyida biz buni amalga oshirish uchun foydalanadigan algoritmlar ro'yxati keltirilgan.
- Agar joriy qadamni tugatib bo'lmasa, keyingi bosqichga o'ting.
- Iloji bo'lsa, g'alaba qozongan harakatni qiling.
- Agar o'yinchi g'alaba qozonishi mumkin bo'lgan harakatga ega bo'lsa, keyingi burilishda o'sha pozitsiyaga o'ting.
- Bir burchakni tanlang va uni aylantiring. Bir nechta variant mavjud bo'lsa, tasodifiy tanlang.
- O'zingizni o'rtaga qo'ying.
- Kenarlardan birini ko'rib chiqing. Bir nechta variant mavjud bo'lsa, tasodifiy tanlang.
- Agar harakatlanish imkoni bo'lmasa, o'yin durang bilan tugaydi.
tanlashRandom()
Potentsial joylar ro'yxatini hisobga olgan holda, bu funksiya tasodifiy bajariladigan harakatni tanlaydi.
O'yin boshlanishi
Biz barcha vazifalarimizni bajarganimizdan so'ng, endi o'yinni boshlash mumkin. Agar biz o'yinni bir marta o'tkazmoqchi bo'lsak, asosiy qo'ng'iroq qilishimiz kerak bo'ladi.
Ammo bizning vaziyatimizda biz foydalanuvchi o‘ynashni istamasligiga qaror qilmaguncha o‘yin davom etishini istaymiz, shuning uchun biz asosiy chiziqqa kichik while tsiklini qo‘shamiz.
Toʻliq kod
Mana bizning o'yinimiz uchun to'liq kod, endi u tugallandi.
chiqish
Xulosa
Hurray!
Siz butunlay noldan yaratgan o'yin. Bu biz muntazam ravishda o'ynaydigan o'yin emas. Ammo bu mantiqni yozishda va kodda aniq tuzilmani saqlashda yordam beradi.
Baxtli kodlash!
Leave a Reply