develop #2
64
main.py
64
main.py
@ -7,31 +7,38 @@
|
||||
|
||||
"""
|
||||
import random
|
||||
import sys, getopt
|
||||
|
||||
class TicTacToe:
|
||||
def __init__(self):
|
||||
self.player1 = Player("X")
|
||||
self.player2 = Player("O")
|
||||
self.board = Board()
|
||||
self.player1 = Player("X", "Player 1")
|
||||
self.player2 = Player("O", "Player 2")
|
||||
|
||||
def run(self):
|
||||
|
||||
self.board = Board()
|
||||
while True:
|
||||
self.board.make_move(self.player1.token, self.player1.make_random_move(self.board.emptyFields))
|
||||
self.board.make_move(self.player1.token, self.player1.choose_random_field(self.board.empty_fields))
|
||||
if self.board.is_win(self.player1.token):
|
||||
self.board.print()
|
||||
if self.board.isWin(self.player1.token):
|
||||
print("Player 1 has won.")
|
||||
if len(self.board.empty_fields) == 0:
|
||||
print("It's a draw.\n")
|
||||
else:
|
||||
print(self.player1.name + " has won.\n")
|
||||
break
|
||||
|
||||
self.board.make_move(self.player2.token, self.player2.make_random_move(self.board.emptyFields))
|
||||
self.board.make_move(self.player2.token, self.player2.choose_random_field(self.board.empty_fields))
|
||||
if self.board.is_win(self.player2.token):
|
||||
self.board.print()
|
||||
if self.board.isWin(self.player2.token):
|
||||
print("Player 2 has won.")
|
||||
if len(self.board.empty_fields) == 0:
|
||||
print("It's a draw.\n")
|
||||
swarga
commented
To możemy zastąpić generacją listy. To możemy zastąpić generacją listy.
|
||||
else:
|
||||
print(self.player2.name + " has won.\n")
|
||||
break
|
||||
|
||||
class Board:
|
||||
def __init__(self):
|
||||
self.state = list(" "*9)
|
||||
self.emptyFields = [0, 1, 2, 3, 4, 5, 6, 7, 8]
|
||||
self.empty_fields = [x for x in range(9)]
|
||||
|
||||
swarga
commented
Good. Good.
|
||||
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"
|
||||
@ -40,15 +47,11 @@ class Board:
|
||||
def make_move(self, token, field):
|
||||
if self.state[field] == " ":
|
||||
self.state[field] = token
|
||||
self.emptyFields.remove(field)
|
||||
self.empty_fields.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):
|
||||
def is_win(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
|
||||
@ -56,7 +59,8 @@ class Board:
|
||||
(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)):
|
||||
(self.state[6] == token and self.state[7] == token and self.state[8] == token) or
|
||||
swarga
commented
No napisz to! No napisz to!
|
||||
len(self.empty_fields) == 0):
|
||||
return True
|
||||
return False
|
||||
|
||||
@ -67,15 +71,29 @@ class Board:
|
||||
pass
|
||||
|
||||
class Player:
|
||||
def __init__(self, token):
|
||||
def __init__(self, token, name):
|
||||
swarga
commented
Jeden tab za dużo? Jeden tab za dużo?
|
||||
self.token = token
|
||||
self.name = name
|
||||
|
||||
def make_random_move(self, emptyFields):
|
||||
return random.choice(emptyFields)
|
||||
def choose_random_field(self, empty_fields):
|
||||
return random.choice(empty_fields)
|
||||
|
||||
|
||||
number_of_rounds = None
|
||||
swarga
commented
Jeśli nie podam żadnego argumentu, to powinien mi się wyświetlić help (lub gra powinna ruszyć raz). Jeśli nie podam żadnego argumentu, to powinien mi się wyświetlić help (lub gra powinna ruszyć raz).
|
||||
try:
|
||||
opts, args = getopt.getopt(sys.argv[1:], "n:", ["numberofrounds="])
|
||||
except getopt.GetoptError:
|
||||
print("main.py -n <numberofrounds>")
|
||||
sys.exit(2)
|
||||
|
||||
if(len(sys.argv) != 1):
|
||||
for opt, arg in opts:
|
||||
if opt in ("-n", "--numberofrounds"):
|
||||
number_of_rounds = arg
|
||||
else:
|
||||
print("main.py -n <numberofrounds>")
|
||||
sys.exit()
|
||||
|
||||
game = TicTacToe()
|
||||
game.run()
|
||||
|
||||
|
||||
for x in range(0, int(number_of_rounds)):
|
||||
game.run()
|
Loading…
Reference in New Issue
Block a user
Ten cały blok kodu możnaby sprowadzić do: