From 7d5965286398c6bb6f34af815ea9f2fbcafca330 Mon Sep 17 00:00:00 2001 From: pnowak <251002@student.pwr.edu.pl> Date: Wed, 23 Dec 2020 23:44:42 +0100 Subject: [PATCH] =?UTF-8?q?Dzia=C5=82aj=C4=85cy=20PoC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Paulina Nowak Reviewed-on: https://denali.kcir.pwr.edu.pl/git/pnowak/Tic-Tac-Toe/pulls/1 Co-authored-by: pnowak <251002@student.pwr.edu.pl> Co-committed-by: pnowak <251002@student.pwr.edu.pl> --- main.py | 60 ++++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 38 insertions(+), 22 deletions(-) diff --git a/main.py b/main.py index ef6040d..240246d 100644 --- a/main.py +++ b/main.py @@ -6,22 +6,32 @@ | | """ -from random import randint -from random import choice - +import random class TicTacToe: - """ - uruchamia program, gracze wykonuja na zmiane ruchy, - az do osiagniecia wygranej przez jednego z nich - """ + def __init__(self): + self.player1 = Player("X") + self.player2 = Player("O") + self.board = Board() def run(self): + while True: + self.board.make_move(self.player1.token, self.player1.make_random_move(self.board.emptyFields)) + self.board.print() + if self.board.isWin(self.player1.token): + print("Player 1 has won.") + break + + self.board.make_move(self.player2.token, self.player2.make_random_move(self.board.emptyFields)) + self.board.print() + if self.board.isWin(self.player2.token): + print("Player 2 has won.") + break class Board: def __init__(self): self.state = list(" "*9) - + self.emptyFields = [0, 1, 2, 3, 4, 5, 6, 7, 8] def print(self): board = ""+ self.state[0] +"|"+self.state[1] +"|"+self.state[2] +" \n-|-|-\n"+self.state[3] +"|"+self.state[4] +"|"+self.state[5] +"\n-|-|-\n"+self.state[6] +"|"+self.state[7] +"|"+self.state[8] +"\n" @@ -30,9 +40,26 @@ class Board: def make_move(self, token, field): if self.state[field] == " ": self.state[field] = token + self.emptyFields.remove(field) else: print("This field's taken.") + """ + Ta funkcja byłaby dużo bardziej użyteczna, + gdyby informowała nas który z graczy jest zwycięzcą + """ + def isWin(self, token): + if((self.state[0] == token and self.state[1] == token and self.state[2] == token) or + (self.state[0] == token and self.state[4] == token and self.state[8] == token) or + (self.state[0] == token and self.state[3] == token and self.state[6] == token) or + (self.state[1] == token and self.state[4] == token and self.state[7] == token) or + (self.state[2] == token and self.state[5] == token and self.state[8] == token) or + (self.state[2] == token and self.state[4] == token and self.state[6] == token) or + (self.state[3] == token and self.state[4] == token and self.state[5] == token) or + (self.state[6] == token and self.state[7] == token and self.state[8] == token)): + return True + return False + def get_state(): pass @@ -42,24 +69,13 @@ class Board: class Player: def __init__(self, token): self.token = token - - def make_random_move(self, state): - emptyField = True - while emptyField: - field = state[randint(0,8)] - if field == " ": - return + def make_random_move(self, emptyFields): + return random.choice(emptyFields) -player1 = Player("X") -player2 = Player("O") game = TicTacToe() game.run() -for x in range(1,10): - player.make_random_move(game.state) - game.print() - player1.make_random_move(game.state) - game.print() +