Bagaimana Cara Membuat Game Tic-Tac-Toe dengan Python?

Diterbitkan: 2021-08-19

Mari kita membuat game Tic Tac Toe sederhana dengan Python. Ini akan membantu Anda membangun logika permainan dan memahami cara menyusun kode.

Gaming merupakan salah satu hiburan yang dimiliki manusia. Kami dapat menemukan berbagai jenis game di web, seluler, desktop, dll. Kami di sini bukan untuk membuat salah satu game berat itu sekarang. Kita akan membuat game CLI tic-tac-toe menggunakan Python.

Jika Anda tidak terbiasa dengan Tic Tac Toe, mainkan secara visual di sini untuk memahami. Jangan khawatir, bahkan jika Anda tidak memahaminya, kami akan melihatnya.

Tic Tac Toe

Tutorial ini dibagi menjadi tiga bagian yang berbeda. Di bagian pertama, Anda akan mengetahui cara memainkan permainan tic-tac-toe. Setelah itu, kita akan melihat algoritme yang membantu kita menghasilkan logika permainan. Terakhir, kita akan melihat kode terstruktur dan penjelasannya.

Anda dapat melewati bagian pertama jika Anda sudah tahu cara bermain Tic Tac Toe.

Jadi, tanpa basa-basi lagi, mari selami bagian pertama kita.

Bermain Tic Tac Toe

Akan ada dua pemain dalam satu permainan. Dua tanda mewakili setiap pemain. Tanda-tanda umum yang digunakan dalam permainan adalah X dan O. Akhirnya, akan ada papan dengan 9 kotak.

Lihat papan tic-tac-toe secara visual.

Papan Tic Tac Toe
Papan Tic Tac Toe

Gameplaynya akan seperti berikut.

  • Pertama, satu pengguna akan menempatkan tanda mereka di salah satu kotak kosong yang tersedia.
  • Selanjutnya, pengguna kedua akan menempatkan tanda mereka di salah satu kotak kosong yang tersedia.
  • Tujuan para pemain adalah untuk menempatkan tanda masing-masing sepenuhnya berdasarkan baris atau kolom, atau secara diagonal.
  • Permainan berlanjut sampai seorang pemain memenangkan permainan atau berakhir seri dengan mengisi semua kotak tanpa pertandingan yang menang.

Mari kita lihat beberapa gameplays secara visual.

Gameplay Menang Tic Tac Toe
Gameplay Menang Tic Tac Toe

Pemain X memenangkan permainan dalam gameplay di atas. Semua kotak diisi secara diagonal dengan tanda X. Jadi, masing-masing pemain memenangkan permainan.

Ada total 8 cara untuk mengatur tanda yang sama dan memenangkan permainan. Mari kita lihat semua 8 pengaturan yang dapat memenangkan permainan.

Pengaturan Kemenangan Tic Tac Toe
Pengaturan Kemenangan Tic Tac Toe

Dan akhirnya, hasil imbang memenuhi papan tanpa pengaturan kemenangan. Saya harap Anda mengerti bagaimana Tic Tac Toe sekarang.

Sekarang, saatnya bermain untuk Anda. Anda dapat pergi ke sini dan memainkannya untuk memahami gameplay sepenuhnya. Tinggalkan jika Anda sudah mendapatkannya.

Sekarang, saatnya untuk memindahkan bagian algoritma.

algoritma

Sekarang kita akan membahas algoritma untuk menulis kode. Algoritme ini akan membantu Anda menulis kode dalam bahasa pemrograman apa pun pilihan Anda. Mari kita lihat bagaimana hal itu dilakukan.

  • Buat papan menggunakan larik 2 dimensi dan inisialisasi setiap elemen sebagai kosong.
    • Anda dapat mewakili kosong menggunakan simbol apa pun yang Anda suka. Di sini, kita akan menggunakan tanda hubung. '-' .
  • Tulislah sebuah fungsi untuk memeriksa apakah papan tersebut terisi atau tidak.
    • Ulangi papan dan kembalikan false jika papan berisi tanda kosong atau kembalikan true .
  • Tulis sebuah fungsi untuk memeriksa apakah seorang pemain telah menang atau tidak.
    • Kita harus memeriksa semua kemungkinan yang telah kita bahas di bagian sebelumnya.
    • Periksa semua baris, kolom, dan dua diagonal.
  • Tulis fungsi untuk menunjukkan papan karena kami akan menunjukkan papan beberapa kali kepada pengguna saat mereka bermain.
  • Tulis fungsi untuk memulai permainan.
    • Pilih giliran pertama pemain secara acak.
    • Tulis loop tak terbatas yang pecah saat permainan selesai (baik menang atau seri).
      • Tunjukkan papan kepada pengguna untuk memilih tempat untuk langkah selanjutnya.
      • Minta pengguna untuk memasukkan nomor baris dan kolom.
      • Perbarui tempat dengan tanda pemain masing-masing.
      • Periksa apakah pemain saat ini memenangkan permainan atau tidak.
      • Jika pemain saat ini memenangkan permainan, maka cetak pesan kemenangan dan putuskan loop tak terbatas.
      • Selanjutnya, periksa apakah papan sudah terisi atau belum.
      • Jika papan terisi, cetak pesan undian dan putuskan loop tak terbatas.
    • Terakhir, tunjukkan kepada pengguna tampilan akhir papan.

Anda mungkin dapat memvisualisasikan apa yang terjadi. Jangan khawatir, bahkan jika Anda tidak memahaminya sepenuhnya. Anda akan mendapatkan lebih banyak kejelasan setelah Anda melihat kodenya.

Jadi, mari kita masuk ke bagian kode. Saya berasumsi Anda telah menginstal Python di PC Anda untuk mencoba kodenya.

Kode

Pergi melalui kode di bawah ini.

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

Lihat contoh keluaran kode.

 $ 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 XX - O - - - - - Enter row and column numbers to fix spot: 1 3 Player X turn XXO O - - - - - Enter row and column numbers to fix spot: 2 2 Player O turn XXO OX - - - - Enter row and column numbers to fix spot: 3 3 Player X turn XXOOX - - - O Enter row and column numbers to fix spot: 3 2 Player X wins the game! XXO OX - - XO

Beberapa poin utama yang membantu Anda memahami struktur kode.

  • Kami telah menggunakan kelas untuk memiliki semua metode di satu tempat. Ini dapat dengan mudah menjadi bundel yang dapat digunakan kembali dalam beberapa kode lain juga.
  • Selanjutnya, kami telah mendefinisikan fungsi yang berbeda untuk setiap tanggung jawab, bahkan jika itu adalah tugas kecil. Ini membantu untuk mempertahankan kode dengan mudah.
  • Dua pendekatan di atas membantu kami memperbarui aplikasi dengan mudah jika kami ingin memperbarui game.

Jangan ragu untuk menyesuaikan struktur dan memperbaikinya berdasarkan proyek Anda. Penataan kode tidak terbatas.

Kata-kata Terakhir

Hore! Anda telah membuat game sepenuhnya dari awal. Ini bukan salah satu permainan visual yang kami mainkan setiap hari. Tetapi ini membantu Anda untuk menulis logika dan memelihara struktur yang bersih dalam kode. Ikuti panduan serupa untuk membuat beberapa game menarik seperti ini. Anda dapat menemukan permainan serupa jika Anda kembali beberapa tahun ke masa kecil Anda.

Selamat Mengkode!

Selanjutnya, jelajahi cara membuat game tebak angka dan Unit Testing dengan Modul unittest Python.