def test_tah_hrace_vyjimky(): ''' Test funkce tah_hrace: testuje tah hráče po zadání STR místo INT jako pozice, kam chce umístit svůj symbol nebo pokud hraje mimo herní pole. ''' pole, vysledek = piskvorky.tah_hrace('abc---abc', 'o', 'blbost') assert pole == 'abc---abc' assert vysledek == 'Nezadal jsi číslo, ale text, zkus to znovu.' pole, vysledek = piskvorky.tah_hrace('abc---abc', 'o', 25) assert pole == 'abc---abc' assert vysledek == 'Nezadal jsi číslo od 1 do 9, zkus to znovu.'
def piskvorky1D(): pole = "-" * 20 # kdo ma jaky znak 0:PC-x a hrac-o, 1:PC-o a hrac-x if randrange(0, 2): znakPC = "x" znakHrac = "o" else: znakPC = "o" znakHrac = "x" print("Hrac ma", znakHrac) while True: pole = tah_pocitace(pole, znakPC) print(pole) if "-" != vyhodnot(pole, znakHrac, znakPC): # j*z neni volne pole break pole = tah_hrace(pole, znakHrac) print(pole) if "-" != vyhodnot(pole, znakHrac, znakPC): # j*z neni volne pole break if "o" == vyhodnot(pole, znakHrac, znakPC): print("Vyhral hrac s kolecky") elif "x" == vyhodnot(pole, znakHrac, znakPC): print("Vyhral hrac s krizky") else: print("Remiza")
def test_tah_hrace_na_obsazenou_pozici(): ''' Test funkce tah_hrace: testuje tah hráče na obsazenou pozici - musí vrátit původní pole a řetězec 'Pole {} je obsazené, vyber si jiné' ''' pole, vysledek = piskvorky.tah_hrace('abc---abc', 'o', 1) assert pole == 'abc---abc' assert vysledek == 'Pole 1 je obsazené, vyber si jiné'
def test_tah_hrace_na_volnou_pozici(): ''' Test funkce tah_hrace: testuje tah hráče na volnou pozici - musí vrátit jako výsledek pole a řetězec "ok" ''' pole, vysledek = piskvorky.tah_hrace('abc---abc', 'o', 5) assert pole == 'abc-o-abc' assert len(pole) == 9 assert vysledek == 'ok'
def test_tah_hrace_pre_pokrocilych(): original_input = p.input_pre_tah_hrace # vytvorime iterator z (n-tic) == tuple iterator = iter(("a", -1, 20, 0, 2, 1, # vstup pre 1. volanie p.tah_hrace 0, # vstup pre 2. volanie p.tah_hrace 0)) # vstup pre 3. volanie p.tah_hrace # vytvorime funkciu ktora zavola next vzdy ked volame input # posledna hodnota musi byt validna, aby sme predisli nekonecnemu cyklu!!! def input_iterator_predefinovanych_hodnot(_): return next(iterator) p.input_pre_tah_hrace = input_iterator_predefinovanych_hodnot assert p.tah_hrace("x-xoo") == "xxxoo" # pouzi nevalidne hodnoty ("a", -1, 20, 0, 2) a potom 1 assert p.tah_hrace("--xoo") == "x-xoo" # pouzi 0, ktora nebola validna pre predosly vstup, ale je validna teraz assert p.tah_hrace("-----") == "x----" # pouzi poslednu 0, tiez validny vstup p.input_pre_tah_hrace = original_input
def test_tah_hrace_ruzna_delka_pole(): ''' Test funkce tah_hrace: testuje tah hráče na různě velké hrací pole, tah hráče je generován náhodně ''' for delka_pole in range(1, 10000): pole, vysledek = piskvorky.tah_hrace('-' * delka_pole, 'x', randrange(1, delka_pole + 1)) assert len(pole) == delka_pole assert pole.count('x') == 1 assert pole.count('-') == delka_pole - 1
def test_tah_hrace_dalsi_pripady_vyjimek(): ''' Test funkce tah_hrace: testuje nesmyslně zadané argumenty a vyvolání vyjímek (další, které nebyly zachyceny výše) ''' with pytest.raises(TypeError): piskvorky.tah_hrace(10, 'x', 1) piskvorky.tah_pocitace(10.5, 'x', 1) with pytest.raises(ValueError): piskvorky.tah_hrace('---------', 'X', 1) piskvorky.tah_hrace('---------', '', 1) piskvorky.tah_hrace('---------', 'abc', 1)
def test_tah_hrace(): # nahradime funkciu input, aby sa nic nepytala uzivatela # ignorujeme vstupny parameter funkcie input("...") pomocou _ original_input = p.input_pre_tah_hrace def dummy_input_0(_): return 0 p.input_pre_tah_hrace = dummy_input_0 assert p.tah_hrace("-----") == "x----" assert p.tah_hrace("-ox--") == "xox--" def dummy_input_4(_): return 4 p.input_pre_tah_hrace = dummy_input_4 assert p.tah_hrace("-----") == "----x" assert p.tah_hrace("-ox--") == "-ox-x" # nemozeme vsak pouzit negativny test, pretoze by sme sa dostali to nekonecneho cyklu # def dummy_input_minus1(): # return -1 # vratime vsetko do povodneho stavu, ak treba p.input_pre_tah_hrace = original_input
def test_tah_hrace_na_plne_pole(): ''' Test funkce tah_hrace: po tahu hráče na plné pole (= znamená, že zde není žádné "-") dojde k vyvolání výjimky ''' with pytest.raises(ValueError): piskvorky.tah_hrace('xoxoxoxoxoxoxox', 'x', 1) piskvorky.tah_hrace(' ', 'x', 1) piskvorky.tah_hrace('123456789', 'x', 5)
def test_tah_hrace_obsazeno(podstrc_vstup): """Tah hráče: plné pole není uznáno, zeptá se znova""" from piskvorky import tah_hrace podstrc_vstup('0', '1') assert tah_hrace('x-------------------', 'o') == 'xo------------------'
def test_tah_hrace_ukazka(podstrc_vstup): """Tah hráče: test ukázky zezadání""" from piskvorky import tah_hrace podstrc_vstup('nevím', '0', '-1', '151', '2') assert tah_hrace('o-------------------', 'x') == 'o-x-----------------'
def test_tah_hrace2(): with pytest.raises(Exception): assert tah_hrace('--', 8)
def test_tah_hrace_necislo(podstrc_vstup): """Tah hráče: odpověď 'řeřicha' není uznána, zeptá se znova""" from piskvorky import tah_hrace podstrc_vstup('řeřicha', '2') assert tah_hrace('--------------------', 'o') == '--o-----------------'
def test_tah_hrace_o_19(podstrc_vstup): """Tah hráče: O na pozici 19 na prázdné pole""" from piskvorky import tah_hrace podstrc_vstup('19') assert tah_hrace('--------------------', 'o') == '-------------------o'
def test_tah_hrace_na_pole_delky_O(): ''' Test funkce teh_hrace: testuje tah hráče na pole délky 0 ''' with pytest.raises(ValueError): piskvorky.tah_hrace('', 'x', 1)
from piskvorky import tah_hrace, vyhodnot from ai import tah_pocitace pole = "-" * 20 na_tahu = "x" while True: if na_tahu == "x": cislo_policka = int(input("""Zadej pozici od 0 do 19: """)) pole = tah_hrace(pole) na_tahu = "o" elif na_tahu == "o": pole = tah_pocitace(pole) na_tahu = "x" vysledek = vyhodnot(pole) print(pole) if vysledek != "-": if vysledek == "!": print("Remiza! {}".format(pole)) elif vysledek == "x": print("Vyhravas nad pocitacem! {}".format(pole)) elif vysledek == "o": print("Bohuzel, pocitac vyhral. {}".format(pole)) else: raise ValueError("Nepripustny vysledek hry '{}'".format(vysledek)) break
def test_tah_na_prazdne_pole(): pole = tah_hrace("--------------------", "x") assert len(pole) == 20 assert pole.count("x") == 1 assert pole.count("-") == 19
def test_tah_chyba(): with pytest.raises(ValueError): tah_hrace("xoxoxoxoxoxoxoxoxoxo", "x")
def test_tah_hrace(): assert piskvorky.tah_hrace("----------", "x", 5) == "----x-----"
# Hráči střídavě přidávají kolečka (o) a křížky (x), třeba: # 1. kolo: -------x------------ # 2. kolo: -------x--o--------- # 3. kolo: -------xx-o--------- # 4. kolo: -------xxoo--------- # 5. kolo: ------xxxoo--------- # Hráč, která dá tři své symboly vedle sebe, vyhrál. #Nejdrive se vytvori herni plan, pote se strida tah hrace a pociace, dokud nekdo nevyhraje. herni_pole = "-" * 20 na_tahu = "x" while True: if na_tahu == "x": herni_pole = tah_hrace(herni_pole) na_tahu = "o" elif na_tahu == "o": herni_pole = tah_pocitace(herni_pole) na_tahu = "x" vysledek = vyhodnot(herni_pole) print(herni_pole) if vysledek != "-": if vysledek == "!": print(f"Remiza! {herni_pole}") elif vysledek == "x": print(f"Vyhravas nad pocitacem! {herni_pole}") elif vysledek == "o": print(F"Bohuzel, pocitac vyhral. {herni_pole}")
def test_tah_hrace(): pole = "----------o---------" assert piskvorky.tah_hrace(pole, -4) == (0, False, "Cislo uvedeno spatne, vyber 1 - 20.") assert piskvorky.tah_hrace(pole, 55) == (0, False, "Cislo uvedeno spatne, vyber 1 - 20.") assert piskvorky.tah_hrace( pole, 11) == (0, False, "Hrajes na obsazene pole, zkus to znova.") assert piskvorky.tah_hrace(pole, 7) == (6, True, "") assert piskvorky.tah_hrace(pole, "mlp") == (0, False, "Zadavas blbosti, zadej cislo!") assert piskvorky.tah_hrace(pole, " ") == (0, False, "Zadavas blbosti, zadej cislo!") assert piskvorky.tah_hrace(pole, "d1") == (0, False, "Zadavas blbosti, zadej cislo!") assert piskvorky.tah_hrace(pole, "@#//") == (0, False, "Zadavas blbosti, zadej cislo!") assert piskvorky.tah_hrace(pole, ",") == (0, False, "Zadavas blbosti, zadej cislo!") assert piskvorky.tah_hrace(pole, "a8") == (0, False, "Zadavas blbosti, zadej cislo!") with pytest.raises(ValueError): # neg test piskvorky.tah_hrace(pole, "::")
def test_tah_hrace_x_0(podstrc_vstup): """Tah hráče: X na pozici 0 na prázdné pole""" from piskvorky import tah_hrace podstrc_vstup('0') assert tah_hrace('--------------------', 'x') == 'x-------------------'
def test_tah_hrace(): assert tah_hrace('--', 1) == '-x'