コード例 #1
0
ファイル: test_udelej_hru.py プロジェクト: messa/pyladies
def test_zamichani():
    hra1 = klondike.udelej_hru()
    hra2 = klondike.udelej_hru()

    # Je šance 1 z 80658175170943878571660636856403766975289505440883277824000000000000,
    # že dvě náhodné hry budou stejné.
    # Nejspíš je pravděpodobnější, že v průběhu testu odejde počítač,
    # na kterém test běží, než aby se ty karty zamíchaly stejně.
    assert hra1 != hra2, 'Karty nejsou zamíchané!'
コード例 #2
0
ファイル: test_udelej_hru.py プロジェクト: messa/pyladies
def test_struktury():
    hra = klondike.udelej_hru()
    assert len(hra) == 3, 'Hra musí být trojice (balicky, hromadky, sloupecky)'

    balicky, hromadky, sloupecky = hra
    assert len(balicky) == 2
    assert len(hromadky) == 4
    assert len(sloupecky) == 7

    balicek_u, balicek_v = balicky
    assert len(balicek_u) == 24
    assert len(balicek_v) == 0

    for hodnota, barva, licem_nahoru in balicek_u:
        assert licem_nahoru == False

    for hromadka in hromadky:
        assert len(hromadka) == 0

    for index, sloupecek in enumerate(sloupecky):
        assert len(sloupecek) == index + 1

        for hodnota, barva, licem_nahoru in sloupecek[:-1]:
            assert licem_nahoru == False

        hodnota, barva, licem_nahoru = sloupecek[-1]
        assert licem_nahoru == True
コード例 #3
0
def test_otoceni_karet_sloupecku(pismenko):
    """Karty sloupečků by měly být rubem nahoru, kromě té poslední"""
    from klondike import udelej_hru
    hra = udelej_hru()
    sloupecek = hra[pismenko]

    # Poslední karta
    posledni_karta = sloupecek[-1]
    hodnota, barva, licem_nahoru = posledni_karta
    assert licem_nahoru

    # Ostatní karty
    for hodnota, barva, licem_nahoru in sloupecek[:-1]:
        assert not licem_nahoru
コード例 #4
0
ファイル: test_udelej_hru.py プロジェクト: messa/pyladies
def test_vsech_karet():
    hra = klondike.udelej_hru()
    dvojice = []
    for balicky in hra:
        for balicek in balicky:
            for hodnota, barva, licem_nahoru in balicek:
                dvojice.append((hodnota, barva))
    dvojice.sort()

    dvojice_exp = []
    for hodnota in range(1, 14):
        for barva in 'Ka', 'Kr', 'Pi', 'Sr':
            dvojice_exp.append((hodnota, barva))

    assert dvojice == dvojice_exp
コード例 #5
0
def test_vsech_karet():
    """Hra by měla obsahovat všech 52 karet, bez duplikátů."""
    from klondike import udelej_hru
    hra = udelej_hru()

    # Uděláme seznam dvojic (hodnota, barva), tedy karet s ignorovaným otočením
    dvojice_z_hry = []
    for balicek in hra.values():
        for hodnota, barva, licem_nahoru in balicek:
            dvojice_z_hry.append((hodnota, barva))
    # Seznam seřadíme -- na pořadí nezáleží
    dvojice_z_hry.sort()

    # Uděláme seznam dvojic (hodnota, barva) všech karet, kteŕe ve hře mají být
    pozadovane_dvojice = []
    for hodnota in range(1, 14):
        for barva in 'Ka', 'Kr', 'Pi', 'Sr':
            pozadovane_dvojice.append((hodnota, barva))
    # Tenhle seznam by měl být už seřazený, ale opatrnosti není nikdy dost
    pozadovane_dvojice.sort()

    # Ty dva seznamy (ten ze hry a ten z testu) by měly být stejné
    assert dvojice_z_hry == pozadovane_dvojice
コード例 #6
0
def test_pocty_karet(pismenko):
    """Počty karet v jednotlivých sloupcích jsou dané."""
    from klondike import udelej_hru
    hra = udelej_hru()

    POCTY = {
        'U': 24,
        'V': 0,
        'W': 0,
        'X': 0,
        'Y': 0,
        'Z': 0,
        'A': 1,
        'B': 2,
        'C': 3,
        'D': 4,
        'E': 5,
        'F': 6,
        'G': 7,
    }
    pozadovany_pocet = POCTY[pismenko]

    assert len(hra[pismenko]) == pozadovany_pocet
コード例 #7
0
def test_ruby(capsys):
    """Kontrola výpisu hry, kde jsou všechny karty rubem nahoru"""
    from klondike import udelej_hru, vypis_hru
    hra = udelej_hru()
    hra = {
        'U': [(13, 'Pi', False)],
        'V': [],
        'W': [],
        'X': [],
        'Y': [],
        'Z': [],
        'A': [(13, 'Pi', False)] * 2,
        'B': [(13, 'Pi', False)] * 3,
        'C': [(13, 'Pi', False)] * 4,
        'D': [(13, 'Pi', False)] * 5,
        'E': [(13, 'Pi', False)] * 6,
        'F': [(13, 'Pi', False)] * 7,
        'G': [(13, 'Pi', False)] * 8,
    }
    vypis_hru(hra)
    out, err = capsys.readouterr()
    check_text(
        out, """
          U     V           W     X     Y     Z
        [???] [   ]       [   ] [   ] [   ] [   ]

          A     B     C     D     E     F     G
        [???] [???] [???] [???] [???] [???] [???]
        [???] [???] [???] [???] [???] [???] [???]
              [???] [???] [???] [???] [???] [???]
                    [???] [???] [???] [???] [???]
                          [???] [???] [???] [???]
                                [???] [???] [???]
                                      [???] [???]
                                            [???]
    """)
コード例 #8
0
def test_nevyhral_na_zacatku():
    hra = klondike.udelej_hru()
    assert not klondike.hrac_vyhral(hra)
コード例 #9
0
ファイル: hra.py プロジェクト: messa/pyladies
import klondike

import random
random.seed(0)

hra = klondike.udelej_hru()
klondike.vypis_hru(hra)
while not klondike.hrac_vyhral(hra):
    tah = klondike.nacti_tah()
    try:
        info = klondike.priprav_tah(hra, tah)
    except ValueError as e:
        print(e)
    else:
        klondike.udelej_tah(hra, info)
        klondike.vypis_hru(hra)
コード例 #10
0
ファイル: test_vitezstvi.py プロジェクト: lspdv/test
def test_nevyhral_na_zacatku():
    hra = klondike.udelej_hru()
    assert not klondike.hrac_vyhral(hra)
コード例 #11
0
ファイル: hra.py プロジェクト: encukou/klondike
from klondike import udelej_hru, vypis_hru, udelej_tah


def nacti_tah():
    while True:
        tah = input('Tah? ')
        try:
            jmeno_zdroje, jmeno_cile = tah.upper()
        except ValueError:
            print('Tah zadávej jako dvě písmenka, např. UV')
        else:
            return jmeno_zdroje, jmeno_cile


hra = udelej_hru()

while not hrac_vyhral(hra):
    vypis_hru(hra)
    jmeno_zdroje, jmeno_cile = nacti_tah()
    try:
        udelej_tah(hra, jmeno_zdroje, jmeno_cile)
    except ValueError as e:
        print('Něco je špatně:', e)

vypis_hru(hra)
print('Gratuluji!')
コード例 #12
0
ファイル: ui.py プロジェクト: encukou/klondike
    handle_press_queue()


def handle_press_queue():
    if press_queue == ['U']:
        press_queue.append('V')
    if len(press_queue) >= 2:
        source = press_queue[0]
        destination = press_queue[1]
        press_queue.clear()

        try:
            result = udelej_tah(game, source, destination)
        except ValueError as e:
            # Print *just* the error message
            msg = f'{source}→{destination}: {e}'
            window.set_caption(msg)
            print(msg)
        except Exception:
            # Print the error message, but ignore the error (so the
            # game can continue)
            traceback.print_exc()
        else:
            print(f'{source}→{destination}: {result}')
            window.set_caption(WINDOW_CAPTION)


game = udelej_hru()

pyglet.app.run()
コード例 #13
0
ファイル: hra.py プロジェクト: PyLadiesCZ/pyladies.cz
import klondike

import random; random.seed(0)

hra = klondike.udelej_hru()
klondike.vypis_hru(hra)
while not klondike.hrac_vyhral(hra):
    tah = klondike.nacti_tah()
    try:
        info = klondike.priprav_tah(hra, tah)
    except ValueError as e:
        print(e)
    else:
        klondike.udelej_tah(hra, info)
        klondike.vypis_hru(hra)
コード例 #14
0
def test_otoceni_karet_balicku():
    """Karty balíčku by měly být rubem nahoru"""
    from klondike import udelej_hru
    hra = udelej_hru()
    for hodnota, barva, licem_nahoru in hra['U']:
        assert not licem_nahoru
コード例 #15
0
def test_udelej_hru_klice():
    """Hra by měl být slovník s klíči A až G a U až Z."""
    from klondike import udelej_hru
    hra = udelej_hru()
    assert sorted(hra) == list('ABCDEFGUVWXYZ')