Како направити игру Тиц-Тац-Тое у Питхону?

Хајде да направимо једноставну Тиц Тац Тое игру у Питхон-у. То ће вам помоћи да изградите логику игре и разумете како да структурирате код.

Играње је једна од забаве коју људи имају. Можемо пронаћи различите типове игара на вебу, мобилним уређајима, десктоп рачунарима итд. Нисмо овде да бисмо сада направили једну од тих тешких игара. Креираћемо ЦЛИ тиц-тац-тое игру користећи Питхон.

Ако нисте упознати са Тиц Тац Тое, играјте га визуелно овде разумети. Не брините, чак и ако то не разумете, ми ћемо то видети.

Тиц Тац Тое

Водич је подељен у три различита одељка. У првом одељку ћете сазнати како да играте игру тиц-тац-тое. Након тога, видећемо алгоритам који нам помаже да смислимо логику игре. Коначно, видећемо структурирани код и његово објашњење.

Можете прескочити први део ако већ знате како да играте Тиц Тац Тое.

Дакле, без даљег одлагања, заронимо у наш први одељак.

Играње Тиц Тац Тое

У игри ће бити два играча. Два знака представљају сваког играча. Општи знаци који се користе у игри су Кс и О. Коначно, биће табла са 9 кутија.

Погледајте тик-так-тое даску визуелно.

Тиц Тац Тое табла

Игра ће бити следећа.

  • Прво, један корисник ће ставити свој знак у једну од доступних празних кутија.
  • Затим ће други корисник ставити свој знак у једну од доступних празних кутија.
  • Циљ играча је да своје знаке поставе потпуно у редовима или колонама, или дијагонално.
  • Игра се наставља све док играч не победи у игри или док не заврши нерешено попуњавањем свих кутија без победничког меча.

Да видимо неке игре визуелно.

Тиц Тац Тое Вин игра

Играч Кс побеђује у игри у горњој игри. Све кутије дијагонално испуњене Кс знаковима. Дакле, одговарајући играч побеђује у игри.

  9 најбољих АПИ-ја за обогаћивање компаније доступних у 2022

Постоји укупно 8 начина да уредите исти знак и победите у игри. Хајде да видимо свих 8 аранжмана који могу да победе у игри.

Тиц Тац Тое победнички аранжмани

И коначно, жреб испуњава таблу без икаквог победничког аранжмана. Надам се да сада разумете како се Тиц Тац Тое.

Сада је време за игру. Можеш да идеш овде и играјте је да бисте у потпуности разумели игру. Оставите ако сте га већ добили.

Сада је време да померите одељак алгоритма.

Алгоритам

Сада ћемо разговарати о алгоритму за писање кода. Овај алгоритам ће вам помоћи да напишете код на било ком програмском језику по вашем избору. Да видимо како се то ради.

  • Креирајте плочу користећи 2-димензионални низ и иницијализирајте сваки елемент као празан.
    • Можете представљати празно користећи било који симбол који желите. Овде ћемо користити цртицу. ‘-‘.
  • Напишите функцију за проверу да ли је табла попуњена или не.
    • Итерирајте по табли и вратите фалсе ако табла садржи празан знак или вратите труе.
  • Напишите функцију за проверу да ли је играч победио или не.
    • Морамо да проверимо све могућности о којима смо говорили у претходном одељку.
    • Проверите све редове, колоне и две дијагонале.
  • Напишите функцију која ће приказати таблу јер ћемо је приказати више пута корисницима док се играју.
  • Напишите функцију за почетак игре.
    • Изаберите први круг играча насумично.
    • Напишите бесконачну петљу која се прекида када се игра заврши (или победа или реми).
      • Покажите таблу кориснику да одабере место за следећи потез.
      • Замолите корисника да унесе број реда и колоне.
      • Ажурирајте место одговарајућим знаком играча.
      • Проверите да ли је тренутни играч победио у игри или не.
      • Ако је тренутни играч победио у игри, онда одштампајте победничку поруку и прекините бесконачну петљу.
      • Затим проверите да ли је табла попуњена или не.
      • Ако је табла попуњена, одштампајте поруку о извлачењу и разбијте бесконачну петљу.
    • На крају, покажите кориснику коначни приказ плоче.
  Е-Инк таблет за продуктивност

Можда ћете моћи да замислите шта се дешава. Не брините, чак и ако нисте потпуно разумели. Добићете више јасноће када видите код.

Дакле, скочимо у одељак кода. Претпостављам да имате инсталиран Питхон на рачунару да бисте испробали код.

Код

Прођите кроз код испод.

import random


class TicTacToe:

    def __init__(self):
        self.board = []

    def create_board(self):
        for i in range(3):
            row = []
            for j in range(3):
                row.append('-')
            self.board.append(row)

    def get_random_first_player(self):
        return random.randint(0, 1)

    def fix_spot(self, row, col, player):
        self.board[row][col] = player

    def is_player_win(self, player):
        win = None

        n = len(self.board)

        # checking rows
        for i in range(n):
            win = True
            for j in range(n):
                if self.board[i][j] != player:
                    win = False
                    break
            if win:
                return win

        # checking columns
        for i in range(n):
            win = True
            for j in range(n):
                if self.board[j][i] != player:
                    win = False
                    break
            if win:
                return win

        # checking diagonals
        win = True
        for i in range(n):
            if self.board[i][i] != player:
                win = False
                break
        if win:
            return win

        win = True
        for i in range(n):
            if self.board[i][n - 1 - i] != player:
                win = False
                break
        if win:
            return win
        return False

        for row in self.board:
            for item in row:
                if item == '-':
                    return False
        return True

    def is_board_filled(self):
        for row in self.board:
            for item in row:
                if item == '-':
                    return False
        return True

    def swap_player_turn(self, player):
        return 'X' if player == 'O' else 'O'

    def show_board(self):
        for row in self.board:
            for item in row:
                print(item, end=" ")
            print()

    def start(self):
        self.create_board()

        player="X" if self.get_random_first_player() == 1 else 'O'
        while True:
            print(f"Player {player} turn")

            self.show_board()

            # taking user input
            row, col = list(
                map(int, input("Enter row and column numbers to fix spot: ").split()))
            print()

            # fixing the spot
            self.fix_spot(row - 1, col - 1, player)

            # checking whether current player is won or not
            if self.is_player_win(player):
                print(f"Player {player} wins the game!")
                break

            # checking whether the game is draw or not
            if self.is_board_filled():
                print("Match Draw!")
                break

            # swapping the turn
            player = self.swap_player_turn(player)

        # showing the final view of board
        print()
        self.show_board()


# starting the game
tic_tac_toe = TicTacToe()
tic_tac_toe.start()

Погледајте пример излазног кода.

$ python tic_tac_toe.py 
Player X turn
- - -
- - -
- - -
Enter row and column numbers to fix spot: 1 1

Player O turn
X - -
- - -
- - -
Enter row and column numbers to fix spot: 2 1

Player X turn
X - -
O - -
- - -
Enter row and column numbers to fix spot: 1 2

Player O turn
X X -
O - -
- - -
Enter row and column numbers to fix spot: 1 3

Player X turn
X X O
O - -
- - -
Enter row and column numbers to fix spot: 2 2

Player O turn
X X O
O X -
- - -
Enter row and column numbers to fix spot: 3 3

Player X turn
X X O        
O X -        
- - O
Enter row and column numbers to fix spot: 3 2

Player X wins the game!

X X O
O X -
- X O

Неке главне тачке које вам помажу да разумете структуру кода.

  • Користили смо класу да бисмо све методе имали на једном месту. Лако може бити и вишекратни пакет у неком другом коду.
  • Затим смо дефинисали различите функције за сваку одговорност, чак и ако је то мали задатак. Помаже у одржавању кода са лакоћом.
  • Горња два приступа нам помажу да ажурирамо апликацију без напора ако желимо да ажурирамо игру.
  СХИНЕ Фор Реддит је кожа која се фокусира искључиво на садржај [Chrome]

Слободно прилагодите структуру и побољшајте је на основу вашег пројекта. Структурирање кода није ограничено.

Завршне речи

Ура! 😎 Направили сте игру потпуно од нуле. То није једна од визуелних игара које играмо свакодневно. Али помаже вам да пишете логику и одржавате чисту структуру у коду. Пратите сличне смернице да бисте креирали неке занимљиве игре попут ове. Сличне игрице можете пронаћи ако се вратите неколико година уназад у детињство.

Срећно кодирање! 👩‍💻

Затим истражите како да креирате игру погађања бројева и тестирање јединица са Питхон модулом униттест.

Да ли сте уживали у читању чланка? Шта кажете на дељење са светом?