develop #2

Merged
swarga merged 10 commits from develop into master 2020-12-25 04:59:51 +01:00
Showing only changes of commit a3ad4bf7ac - Show all commits

29
main.py
View File

@ -7,6 +7,7 @@
"""
import random
import sys, getopt
class TicTacToe:
def __init__(self):
@ -16,20 +17,20 @@ class TicTacToe:
Review

Ten cały blok kodu możnaby sprowadzić do:

  1. Gracz wykonuje ruch.
  2. Sprawdzamy, czy mamy wygranego (remis).
  3. Zmieniamy gracza.
  4. Wracamy do 1.
Ten cały blok kodu możnaby sprowadzić do: 1. Gracz wykonuje ruch. 2. Sprawdzamy, czy mamy wygranego (remis). 3. Zmieniamy gracza. 4. Wracamy do 1.
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]

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)

Good.

Good.
else:
print("This field's taken.")
def isWin(self, token, name):
def is_win(self, token, name):

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).

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="])

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()
game.run()
for x in range(0, int(number_of_rounds)):
game.run()

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).