develop #2
27
main.py
27
main.py
@ -7,6 +7,7 @@
|
||||
|
||||
"""
|
||||
import random
|
||||
import sys, getopt
|
||||
|
||||
class TicTacToe:
|
||||
def __init__(self):
|
||||
@ -16,20 +17,20 @@ class TicTacToe:
|
||||
|
||||
|
||||
def run(self):
|
||||
while True:
|
||||
self.board.make_move(self.player1.token, self.player1.choose_random_field(self.board.emptyFields))
|
||||
self.board.make_move(self.player1.token, self.player1.choose_random_field(self.board.empty_fields))
|
||||
self.board.print()
|
||||
if self.board.isWin(self.player1.token, self.player1.name):
|
||||
if self.board.is_win(self.player1.token, self.player1.name):
|
||||
break
|
||||
|
||||
self.board.make_move(self.player2.token, self.player2.choose_random_field(self.board.emptyFields))
|
||||
self.board.make_move(self.player2.token, self.player2.choose_random_field(self.board.empty_fields))
|
||||
self.board.print()
|
||||
if self.board.isWin(self.player2.token, self.player2.name):
|
||||
if self.board.is_win(self.player2.token, self.player2.name):
|
||||
break
|
||||
|
||||
class Board:
|
||||
def __init__(self):
|
||||
self.state = list(" "*9)
|
||||
self.emptyFields = [0, 1, 2, 3, 4, 5, 6, 7, 8]
|
||||
self.empty_fields = [0, 1, 2, 3, 4, 5, 6, 7, 8]
|
||||
swarga
commented
To możemy zastąpić generacją listy. To możemy zastąpić generacją listy.
|
||||
|
||||
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"
|
||||
@ -38,11 +39,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)
|
||||
swarga
commented
Good. Good.
|
||||
else:
|
||||
print("This field's taken.")
|
||||
|
||||
def isWin(self, token, name):
|
||||
def is_win(self, token, name):
|
||||
swarga
commented
Poczytaj o enumie. Poczytaj o enumie.
Plasznę możemy reprezentować jako listę intów: 0, -1 oraz +1.
Pomyśl w jaki sposób może to ułatwić znajdywanie wygranej (modulo is your friend).
|
||||
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
|
||||
@ -66,12 +67,16 @@ class Player:
|
||||
self.token = token
|
||||
self.name = name
|
||||
|
||||
def choose_random_field(self, emptyFields):
|
||||
return random.choice(emptyFields)
|
||||
def choose_random_field(self, empty_fields):
|
||||
return random.choice(empty_fields)
|
||||
|
||||
|
||||
opts, args = getopt.getopt(sys.argv[1:], "n:", ["numberofrounds="])
|
||||
swarga
commented
Jeden tab za dużo? Jeden tab za dużo?
|
||||
number_of_rounds = None
|
||||
for opt, arg in opts:
|
||||
if opt in ("-n", "--numberofrounds"):
|
||||
number_of_rounds = arg
|
||||
|
||||
game = TicTacToe()
|
||||
for x in range(0, int(number_of_rounds)):
|
||||
game.run()
|
||||
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).
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user
Ten cały blok kodu możnaby sprowadzić do: