forked from DevLord9/Newpythonrepo
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: Create tic tac toe game in python
fix: DevLord9#6
- Loading branch information
Showing
1 changed file
with
124 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,124 @@ | ||
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() |