Kód k vylepšení

In [ ]:
import ai
import utils
from random import randrange
def vyhodnot(pole):
    # Funkce vezme hrací pole a vrátí výsledek
    # na základě aktuálního stavu hry
    if "xxx" in pole: #Vyhrál hráč s křížky
        return "x"
    elif "ooo" in pole: #Vyhrál hráč s kolečky.
        return "o"
    elif "-" not in pole: #Nikdo nevyhrál
        return "!"
    else: #Hra ještě neskončila.
        return "-"

def tah_pocitace(pole):
    "Počítač vybere pozici, na kterou hrát, a vrátí herní pole se zaznamenaným tahem počítače"
    delka=len(pole)
    while True:
        pozice=randrange(1,delka-1)
        if "-" in pole[pozice]:
            if "o" in pole[pozice+1] or "o" in pole[pozice-1] or "x" in pole[pozice+1] or "x" in pole[pozice-1]: #počítač hraje strategicky
                return pozice

Vylepšená verze

In [ ]:
from random import randrange


def vyhodnot(pole):
    """
    Funkce vezme hrací pole a vrátí výsledek
    na základě aktuálního stavu hry
    """
    if "xxx" in pole: #Vyhrál hráč s křížky
        return "x"
    elif "ooo" in pole: #Vyhrál hráč s kolečky.
        return "o"
    elif "-" not in pole: #Nikdo nevyhrál
        return "!"
    else: #Hra ještě neskončila.
        return "-"

    
def tah_pocitace(pole):
    """
    Počítač vybere pozici, na kterou hrát,
    a vrátí ideální pozici k tahu
    """
    delka = len(pole)
    while True:
        pozice = randrange(1, delka - 1)
        if "-" in pole[pozice]:
            if "o" in pole[pozice + 1] or "o" in pole[pozice - 1] or \
               "x" in pole[pozice + 1] or "x" in pole[pozice - 1]: #počítač hraje strategicky
                return pozice

Co je tady navíc?

In [ ]:
pozice = int(randrange(len(pole)))

Obecné rady a doporučení

  • Importované moduly je třeba použít nebo jejich import smazat. V kódu je pak větší pořádek.
  • Mezi importy a zbytek kódu je pro přehlednost dobré vložit alespoň jeden prázdný řádek, ale správně by každé definici funkce měly předcházet dva prázdné řádky.
  • Pro dokumentační řetězec se používá """text""" místo #
  • Je nezbytné ošetřovat vstupy od uživatele a naopak zcela zbytečné ošetřovat "vstupy" od počítače