Python'da Tic-Tac-Toe Oyunu Nasıl Oluşturulur?
Yayınlanan: 2021-08-19Python'da basit bir Tic Tac Toe oyunu oluşturalım. Oyun mantığını oluşturmanıza ve kodun nasıl yapılandırılacağını anlamanıza yardımcı olacaktır.
Oyun, insanların sahip olduğu eğlencelerden biridir. Web'de, mobilde, masaüstünde vb. farklı türde oyunlar bulabiliriz. Şimdi o ağır oyunlardan birini yapmak için burada değiliz. Python kullanarak bir CLI tic-tac-toe oyunu oluşturacağız.
Tic Tac Toe'ya aşina değilseniz, anlamak için burada görsel olarak oynayın. Merak etmeyin siz anlamasanız da biz göreceğiz.
Tic Tac Toe
Öğretici üç farklı bölüme ayrılmıştır. İlk bölümde, tic-tac-toe oyununun nasıl oynanacağını öğreneceksiniz. Bundan sonra oyun mantığını bulmamıza yardımcı olacak bir algoritma göreceğiz. Son olarak, yapılandırılmış kodu ve açıklamasını göreceğiz.
Tic Tac Toe oynamayı zaten biliyorsanız, ilk bölümü atlayabilirsiniz.
Neyse lafı fazla uzatmadan ilk bölümümüze geçelim.
Tic Tac Toe oynamak
Bir oyunda iki oyuncu olacak. Her oyuncuyu iki işaret temsil eder. Oyunda kullanılan genel işaretler X ve O'dur . Son olarak 9 kutulu bir tahta olacak.
tic-tac-toe panosunu görsel olarak görün.

Oynanış şu şekilde olacak.
- İlk olarak, bir kullanıcı oturumunu mevcut boş kutulardan birine yerleştirecektir.
- Ardından, ikinci kullanıcı oturumunu mevcut boş kutulardan birine yerleştirecektir.
- Oyuncuların amacı, ilgili işaretlerini tamamen satır veya sütun veya çapraz olarak yerleştirmektir.
- Oyun, bir oyuncu oyunu kazanana veya kazanan bir maç olmadan tüm kutuları doldurarak berabere bitene kadar devam eder.
Bazı oyunları görsel olarak görelim.

X oyuncusu, yukarıdaki oyunda oyunu kazanır. Tüm kutular çapraz olarak X işaretleri ile doldurulur. Böylece ilgili oyuncu oyunu kazanır.
Aynı tabelayı düzenleyip oyunu kazanmanın toplam 8 yolu vardır. Oyunu kazanabilecek 8 düzenlemenin hepsini görelim.

Ve son olarak, herhangi bir kazanan düzenleme olmadan bir beraberlik tahtayı doldurur. Umarım şimdi Tic Tac Toe'nun nasıl yapıldığını anlamışsınızdır.
Şimdi, senin için oyun zamanı. Oynanışı tamamen anlamak için buraya gidebilir ve oynayabilirsiniz. Zaten aldıysanız bırakın.
Şimdi algoritma bölümünü taşıma zamanı.
algoritma
Şimdi kodu yazmak için algoritmayı tartışacağız. Bu algoritma, seçtiğiniz herhangi bir programlama dilinde kod yazmanıza yardımcı olacaktır. Nasıl yapıldığını görelim.
- 2 boyutlu bir dizi kullanarak bir pano oluşturun ve her öğeyi boş olarak başlatın.
- İstediğiniz herhangi bir sembolü kullanarak boş temsil edebilirsiniz. Burada bir tire kullanacağız.
'-'.
- İstediğiniz herhangi bir sembolü kullanarak boş temsil edebilirsiniz. Burada bir tire kullanacağız.
- Tahtanın dolup dolmadığını kontrol etmek için bir fonksiyon yazın.
- Pano üzerinde yineleyin ve pano boş bir işaret içeriyorsa
falsedöndürün veya aksi takdirdetrue.
- Pano üzerinde yineleyin ve pano boş bir işaret içeriyorsa
- Bir oyuncunun kazanıp kazanmadığını kontrol etmek için bir fonksiyon yazın.
- Önceki bölümde tartıştığımız tüm olasılıkları kontrol etmeliyiz.
- Tüm satırları, sütunları ve iki köşegeni kontrol edin.
- Oyun oynarken tahtayı kullanıcılara defalarca göstereceğimiz için tahtayı gösterecek bir fonksiyon yazın.
- Oyunu başlatmak için bir fonksiyon yazın.
- Oyuncunun ilk dönüşünü rastgele seçin.
- Oyun bittiğinde (kazanma veya beraberlik) kesilen sonsuz bir döngü yazın.
- Bir sonraki hamle için noktayı seçmesi için tahtayı kullanıcıya gösterin.
- Kullanıcıdan satır ve sütun numarasını girmesini isteyin.
- İlgili oyuncu işaretiyle yeri güncelleyin.
- Mevcut oyuncunun oyunu kazanıp kazanmadığını kontrol edin.
- Mevcut oyuncu oyunu kazanırsa, kazanan bir mesaj yazdırın ve sonsuz döngüyü kırın.
- Ardından, tahtanın dolu olup olmadığını kontrol edin.
- Tahta doluysa, çizim mesajını yazdırın ve sonsuz döngüyü kırın.
- Son olarak, kullanıcıya panonun son görünümünü gösterin.
Neler olduğunu görselleştirebilirsiniz. Tam olarak anlamamış olsanız bile endişelenmeyin. Kodu gördüğünüzde daha fazla netlik elde edeceksiniz.

O halde kod bölümüne geçelim. Kodu denemek için bilgisayarınızda Python yüklü olduğunu varsayıyorum.
kod
Aşağıdaki kodu gözden geçirin.
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()Kodun örnek çıktısını inceleyin.
$ 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 - - XOKodun yapısını anlamanıza yardımcı olacak bazı önemli noktalar.
- Tüm metotları tek bir yerde toplamak için bir sınıf kullandık. Başka bir kodda da kolayca yeniden kullanılabilir bir paket olabilir.
- Ardından, küçük bir görev de olsa her sorumluluk için farklı işlevler tanımladık. Kodun kolaylıkla korunmasına yardımcı olur.
- Yukarıdaki iki yaklaşım, oyunu güncellemek istiyorsak uygulamayı zahmetsizce güncellememize yardımcı olur.
Yapıyı uyarlamaktan ve projenize göre geliştirmekten çekinmeyin. Kodun yapılandırılması sınırlı değildir.
Son sözler
Yaşasın! Tamamen sıfırdan bir oyun yarattınız. Günlük oynadığımız görsel oyunlardan biri değil. Ancak, mantık yazmanıza ve kodda temiz yapıyı korumanıza yardımcı olur. Bunun gibi bazı ilginç oyunlar oluşturmak için benzer yönergeleri izleyin. Birkaç yıl öncesine, çocukluğunuza giderseniz benzer oyunlar bulabilirsiniz.
Mutlu Kodlama!
Ardından, sayı tahmin oyununun nasıl oluşturulacağını ve Python birim test Modülü ile Birim Testinin nasıl oluşturulacağını keşfedin.
