Гульні - адна з формаў забавы, даступная людзям. Гульні ўсіх відаў даступныя ў Інтэрнэце, на мабільных прыладах, настольных камп'ютарах і г. д. Зараз не час ствараць адну з такіх складаных гульняў.
Выкарыстоўваючы Python, мы створым гульню CLI у крыжыкі-нулікі. Давайце выкарыстаем Python для стварэння простай гульні Tic Tac Toe. Гэта дапаможа вам стварыць логіку гульні і навучыцца арганізоўваць код.
Крыжыкі-нулікі
Перад тым, як мы пачнем кадзіраваць, я думаў, што хутка падвядзем вынікі гульні і абмяркуем свой план па яе распрацоўцы.
Па-першае, мы зробім здагадку, што X заўсёды бяруць на сябе ініцыятыву і рухаюцца першымі, даючы карыстальніку магчымасць дзейнічаць.
З кансолі будзе ўведзены лік ад 1 да 9. У сетцы, дзе кожны лік адпавядае рознаму ліку (уверсе злева - 1, унізе справа - 9).
Кампутар аўтаматычна вызначыць і зробіць свой ход, як толькі карыстальнік рухаецца. Я буду выкарыстоўваць адзін асноўны цыкл гульні, які выклікае шэраг розных працэдур.
Якая функцыя выконваецца, магчыма, паказана ў кожным загалоўку гэтага тэкставага ўрока.
Праектаванне дошкі
Мы будзем адлюстроўваць нашу дошку з дапамогай макета сеткі, як я паказваў раней. Для гэтага мы створым спіс пад назвай board на Python, і ён будзе пачынацца з 10 пустых значэнняў.
Паколькі карыстальнік можа ўводзіць толькі лічбы ад 1 да 9, а не ад 0 да 8, у нас ёсць 10 пустых значэнняў, а не 9. Такім чынам, каб спрасціць рэчы, мы дадзім першаму запісу ў нашым спісе значэнне «пусты тэкст».
Такім чынам, мы можам выкарыстоўваць 1–9 замест 0–8 для індэксавання запісаў у нашым спісе.
уставіцьЛіст()
Letter і Pos будуць двума ўваходамі для гэтай функцыі. Ён толькі паставіць запытаны ліст у запытанае месца.
spaceIsFree(pos)
Прасцей кажучы, гэты метад паведаміць нам, калі ўказаная вобласць вольная. Значыць, ліста там ужо няма. Pos, яго адзіны аргумент, будзе цэлым лікам ад 1 да 9.
printBoard (дошка)
Дошка адпраўляецца ў якасці аргумента для гэтага метаду, які адлюстроўвае яе на кансолі.
isWinner()
Грунтуючыся на цяперашняй дошцы, гэтая функцыя паведаміць нам, калі пастаўленая літара выйграла. Ён мае два параметры: le і board (літара).
Гэта павінен быць «X» або «O». Проста паглядзіце, ці ёсць указаная літара на кожнай патэнцыйнай выйгрышнай лініі на дошцы.
main ()
Калі мы хочам пачаць гульню, мы выклічам гэты метад. Ён будзе выклікаць кожную са шматлікіх функцый нашай праграмы і кіраваць тым, як праграма павінна працаваць.
isBoardFull()
Калі гэты метад дадзены на борце ў якасці ўваходных дадзеных, ён проста верне True, калі дошка поўная, і False у адваротным выпадку.
PlayerMove()
У гэтым метадзе мы будзем запытваць перамяшчэнне ад карыстальніка і правяраць яго. Ліст будзе дададзены на дошку, калі ход будзе законным. Калі няма, мы працягнем запытваць водгукі карыстальнікаў.
CompMove() – AI
Зараз пачнецца штучны інтэлект. Рух кампутараў будзе кантралявацца гэтай функцыяй. Ён ацэніць дошку і абярэ найлепшы ход.
Ніжэй прыведзены спіс алгарытмаў, якія мы будзем выкарыстоўваць для гэтага.
- Калі бягучы крок не можа быць завершаны, перайдзіце да наступнага.
- Зрабіце выйгрышны ход, калі зможаце.
- Перайдзіце ў гэтую пазіцыю ў наступны ход, калі ў гульца ёсць патэнцыйна выйгрышны ход.
- Выберыце кут і павярніце яго. Выбірайце наўздагад, калі ёсць некалькі варыянтаў.
- Размесціце сябе пасярэдзіне.
- Разгледзім адзін з краёў. Выбірайце наўздагад, калі ёсць некалькі варыянтаў.
- Калі рухацца няма магчымасці, гульня заканчваецца ўнічыю.
selectRandom()
Улічваючы спіс патэнцыйных месцаў, гэтая функцыя выпадковым чынам абярэ дзеянне, якое трэба выканаць.
Пачатак гульні
Гульню можна пачынаць, калі мы выканалі ўсе заданні. Усё, што нам трэба зрабіць, гэта выклікаць main, калі мы хочам запусціць гульню адзін раз.
Але ў нашай сітуацыі мы хочам, каб гульня працягвалася, пакуль карыстальнік не вырашыць, што больш не хоча гуляць, таму мы дадамо малюсенькі цыкл while да асноўнага радка.
Поўны код
Вось увесь код для нашай гульні, які цяпер завершаны.
выхад
заключэнне
Ура!
Гульня, якую вы стварылі цалкам з нуля. Гэта не гульня, у якую мы гуляем рэгулярна. Але гэта дапамагае ў напісанні логікі і падтрыманні выразнай структуры ў кодзе.
Шчаслівага кадавання!
Пакінуць каментар