コード例 #1
0
ファイル: ui.py プロジェクト: encukou/klondike
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)
コード例 #2
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)
コード例 #3
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!')
コード例 #4
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)
コード例 #5
0
def test_tahy():
    """Simuluje hru, jednak pomocí udelej_tah a jednak manipulací seznamů,
    a zkouší jestli všechno sedí."""
    hra_h = udelej_vzorovou_hru()
    hra_v = udelej_vzorovou_hru()
    balicky_h, hromadky_h, sloupecky_h = hra_h
    balicky_v, hromadky_v, sloupecky_v = hra_v
    klondike.vypis_hru(hra_h)

    # 7 na 8
    klondike.udelej_tah(hra_h, (sloupecky_h[0], 1, sloupecky_h[3]))
    sloupecky_v[0].pop()
    sloupecky_v[3].append((7, 'Pi', True))
    klondike.vypis_hru(hra_h)
    assert hra_h == hra_v

    # (7, 8) na 9
    klondike.udelej_tah(hra_h, (sloupecky_h[3], 2, sloupecky_h[2]))
    sloupecky_v[3][-3:] = [(5, 'Kr', True)]
    sloupecky_v[2].extend([(8, 'Ka', True), (7, 'Pi', True)])
    klondike.vypis_hru(hra_h)
    assert hra_h == hra_v

    # Otočení karty z balíčku
    klondike.udelej_tah(hra_h, 'U')
    balicky_v[0].pop()
    balicky_v[1].append((5, 'Sr', True))
    klondike.vypis_hru(hra_h)
    assert hra_h == hra_v

    # Otočení karty z balíčku (7×)
    for i in range(7):
        klondike.udelej_tah(hra_h, 'U')
    del balicky_v[0][-7:]
    balicky_v[1].extend([
        (11, 'Ka', True),
        (3, 'Kr', True),
        (10, 'Kr', True),
        (12, 'Pi', True),
        (9, 'Ka', True),
        (8, 'Sr', True),
        (13, 'Kr', True),
    ])
    klondike.vypis_hru(hra_h)
    assert hra_h == hra_v

    # Král na volné místo
    klondike.udelej_tah(hra_h, (balicky_h[1], 1, sloupecky_h[0]))
    balicky_v[1].pop()
    sloupecky_v[0].append((13, 'Kr', True))
    klondike.vypis_hru(hra_h)
    assert hra_h == hra_v

    # Otočení karty z balíčku (5×)
    for i in range(5):
        klondike.udelej_tah(hra_h, 'U')
    del balicky_v[0][-5:]
    balicky_v[1].extend([
        (4, 'Ka', True),
        (6, 'Pi', True),
        (9, 'Kr', True),
        (2, 'Pi', True),
        (1, 'Pi', True),
    ])
    klondike.vypis_hru(hra_h)
    assert hra_h == hra_v

    # Eso na cíl
    klondike.udelej_tah(hra_h, (balicky_h[1], 1, hromadky_h[2]))
    balicky_v[1].pop()
    hromadky_v[2].append((1, 'Pi', True))
    klondike.vypis_hru(hra_h)
    assert hra_h == hra_v

    # Dvojka na cíl
    klondike.udelej_tah(hra_h, (balicky_h[1], 1, hromadky_h[2]))
    balicky_v[1].pop()
    hromadky_v[2].append((2, 'Pi', True))
    klondike.vypis_hru(hra_h)
    assert hra_h == hra_v

    # Otočení karty z balíčku (10×) + otočení balíčku
    for i in range(12):
        klondike.udelej_tah(hra_h, 'U')
    balicky_v[1].clear()
    balicky_v[0][:] = udelej_vzorovou_hru()[0][0]
    del balicky_v[0][16]  # král
    del balicky_v[0][11]  # eso
    del balicky_v[0][11]  # dvojka
    klondike.vypis_hru(hra_h)
    assert hra_h == hra_v
コード例 #6
0
def test_tahy():
    """Simuluje hru, jednak pomocí udelej_tah a jednak manipulací seznamů,
    a zkouší jestli všechno sedí."""
    hra_h = udelej_vzorovou_hru()
    hra_v = udelej_vzorovou_hru()
    balicky_h, hromadky_h, sloupecky_h = hra_h
    balicky_v, hromadky_v, sloupecky_v = hra_v
    klondike.vypis_hru(hra_h)

    # 7 na 8
    klondike.udelej_tah(hra_h, (sloupecky_h[0], 1, sloupecky_h[3]))
    sloupecky_v[0].pop()
    sloupecky_v[3].append((7, "Pi", True))
    klondike.vypis_hru(hra_h)
    assert hra_h == hra_v

    # (7, 8) na 9
    klondike.udelej_tah(hra_h, (sloupecky_h[3], 2, sloupecky_h[2]))
    sloupecky_v[3][-3:] = [(5, "Kr", True)]
    sloupecky_v[2].extend([(8, "Ka", True), (7, "Pi", True)])
    klondike.vypis_hru(hra_h)
    assert hra_h == hra_v

    # Otočení karty z balíčku
    klondike.udelej_tah(hra_h, "U")
    balicky_v[0].pop()
    balicky_v[1].append((5, "Sr", True))
    klondike.vypis_hru(hra_h)
    assert hra_h == hra_v

    # Otočení karty z balíčku (7×)
    for i in range(7):
        klondike.udelej_tah(hra_h, "U")
    del balicky_v[0][-7:]
    balicky_v[1].extend(
        [
            (11, "Ka", True),
            (3, "Kr", True),
            (10, "Kr", True),
            (12, "Pi", True),
            (9, "Ka", True),
            (8, "Sr", True),
            (13, "Kr", True),
        ]
    )
    klondike.vypis_hru(hra_h)
    assert hra_h == hra_v

    # Král na volné místo
    klondike.udelej_tah(hra_h, (balicky_h[1], 1, sloupecky_h[0]))
    balicky_v[1].pop()
    sloupecky_v[0].append((13, "Kr", True))
    klondike.vypis_hru(hra_h)
    assert hra_h == hra_v

    # Otočení karty z balíčku (5×)
    for i in range(5):
        klondike.udelej_tah(hra_h, "U")
    del balicky_v[0][-5:]
    balicky_v[1].extend([(4, "Ka", True), (6, "Pi", True), (9, "Kr", True), (2, "Pi", True), (1, "Pi", True)])
    klondike.vypis_hru(hra_h)
    assert hra_h == hra_v

    # Eso na cíl
    klondike.udelej_tah(hra_h, (balicky_h[1], 1, hromadky_h[2]))
    balicky_v[1].pop()
    hromadky_v[2].append((1, "Pi", True))
    klondike.vypis_hru(hra_h)
    assert hra_h == hra_v

    # Dvojka na cíl
    klondike.udelej_tah(hra_h, (balicky_h[1], 1, hromadky_h[2]))
    balicky_v[1].pop()
    hromadky_v[2].append((2, "Pi", True))
    klondike.vypis_hru(hra_h)
    assert hra_h == hra_v

    # Otočení karty z balíčku (10×) + otočení balíčku
    for i in range(12):
        klondike.udelej_tah(hra_h, "U")
    balicky_v[1].clear()
    balicky_v[0][:] = udelej_vzorovou_hru()[0][0]
    del balicky_v[0][16]  # král
    del balicky_v[0][11]  # eso
    del balicky_v[0][11]  # dvojka
    klondike.vypis_hru(hra_h)
    assert hra_h == hra_v