示例#1
0
def test_ruby(capsys):
    balicky = [(13, 'Pi', False)], []
    hromadky = [], [], [], []
    sloupecky = (
        [(13, 'Pi', False)] * 2,
        [(13, 'Pi', False)] * 3,
        [(13, 'Pi', False)] * 4,
        [(13, 'Pi', False)] * 5,
        [(13, 'Pi', False)] * 6,
        [(13, 'Pi', False)] * 7,
        [(13, 'Pi', False)] * 8,
    )
    hra = balicky, hromadky, sloupecky
    klondike.vypis_hru(hra)
    out, err = capsys.readouterr()
    check(out, """
          U     V           W     X     Y     Z
        [???] [   ]       [   ] [   ] [   ] [   ]

          A     B     C     D     E     F     G
        [???] [???] [???] [???] [???] [???] [???]
        [???] [???] [???] [???] [???] [???] [???]
              [???] [???] [???] [???] [???] [???]
                    [???] [???] [???] [???] [???]
                          [???] [???] [???] [???]
                                [???] [???] [???]
                                      [???] [???]
                                            [???]
    """)
示例#2
0
def test_lice(capsys):
    balicky = [(13, 'Pi', False)], [(8, 'Kr', True), (13, 'Pi', True)]
    hromadky = [], [], [], []
    sloupecky = (
        [(13, 'Pi', False)] * 1 + [(8, 'Kr', True)],
        [(13, 'Pi', False)] * 2 + [(9, 'Ka', True)],
        [(13, 'Pi', False)] * 3 + [(10, 'Sr', True)],
        [(13, 'Pi', False)] * 4 + [(1, 'Ka', True)],
        [(13, 'Pi', False)] * 5 + [(4, 'Pi', True)],
        [(13, 'Pi', False)] * 6 + [(9, 'Kr', True)],
        [(13, 'Pi', False)] * 7 + [(12, 'Sr', True)],
    )
    hra = balicky, hromadky, sloupecky
    klondike.vypis_hru(hra)
    out, err = capsys.readouterr()
    check(out, """
          U     V           W     X     Y     Z
        [???] [K♠ ]       [   ] [   ] [   ] [   ]

          A     B     C     D     E     F     G
        [???] [???] [???] [???] [???] [???] [???]
        [8♣ ] [???] [???] [???] [???] [???] [???]
              [9 ♦] [???] [???] [???] [???] [???]
                    [X ♥] [???] [???] [???] [???]
                          [A ♦] [???] [???] [???]
                                [4♠ ] [???] [???]
                                      [9♣ ] [???]
                                            [Q ♥]
    """)
示例#3
0
def test_lice(capsys):
    balicky = [(13, 'Pi', False)], [(8, 'Kr', True), (13, 'Pi', True)]
    hromadky = [], [], [], []
    sloupecky = (
        [(13, 'Pi', False)] * 1 + [(8, 'Kr', True)],
        [(13, 'Pi', False)] * 2 + [(9, 'Ka', True)],
        [(13, 'Pi', False)] * 3 + [(10, 'Sr', True)],
        [(13, 'Pi', False)] * 4 + [(1, 'Ka', True)],
        [(13, 'Pi', False)] * 5 + [(4, 'Pi', True)],
        [(13, 'Pi', False)] * 6 + [(9, 'Kr', True)],
        [(13, 'Pi', False)] * 7 + [(12, 'Sr', True)],
    )
    hra = balicky, hromadky, sloupecky
    klondike.vypis_hru(hra)
    out, err = capsys.readouterr()
    check(
        out, """
          U     V           W     X     Y     Z
        [???] [K♠ ]       [   ] [   ] [   ] [   ]

          A     B     C     D     E     F     G
        [???] [???] [???] [???] [???] [???] [???]
        [8♣ ] [???] [???] [???] [???] [???] [???]
              [9 ♦] [???] [???] [???] [???] [???]
                    [X ♥] [???] [???] [???] [???]
                          [A ♦] [???] [???] [???]
                                [4♠ ] [???] [???]
                                      [9♣ ] [???]
                                            [Q ♥]
    """)
示例#4
0
def test_zacatek_hry(capsys):
    """Kontrola výpisu hry, kde jsou karty i rubem lícem nahoru"""
    from klondike import vypis_hru
    hra = {
        'U': [(13, 'Pi', False)],
        'V': [(8, 'Kr', True), (13, 'Pi', True)],
        'W': [],
        'X': [],
        'Y': [],
        'Z': [],
        'A': [(13, 'Pi', False)] * 0 + [(8, 'Kr', True)],
        'B': [(13, 'Pi', False)] * 1 + [(9, 'Ka', True)],
        'C': [(13, 'Pi', False)] * 2 + [(10, 'Sr', True)],
        'D': [(13, 'Pi', False)] * 3 + [(1, 'Ka', True)],
        'E': [(13, 'Pi', False)] * 4 + [(4, 'Pi', True)],
        'F': [(13, 'Pi', False)] * 5 + [(9, 'Kr', True)],
        'G': [(13, 'Pi', False)] * 6 + [(12, 'Sr', True)],
    }
    vypis_hru(hra)
    out, err = capsys.readouterr()
    check_text(
        out, """
          U     V           W     X     Y     Z
        [???] [K♠ ]       [   ] [   ] [   ] [   ]

          A     B     C     D     E     F     G
        [8♣ ] [???] [???] [???] [???] [???] [???]
              [9 ♦] [???] [???] [???] [???] [???]
                    [X ♥] [???] [???] [???] [???]
                          [A ♦] [???] [???] [???]
                                [4♠ ] [???] [???]
                                      [9♣ ] [???]
                                            [Q ♥]
    """)
示例#5
0
def test_ruby(capsys):
    balicky = [(13, 'Pi', False)], []
    hromadky = [], [], [], []
    sloupecky = (
        [(13, 'Pi', False)] * 2,
        [(13, 'Pi', False)] * 3,
        [(13, 'Pi', False)] * 4,
        [(13, 'Pi', False)] * 5,
        [(13, 'Pi', False)] * 6,
        [(13, 'Pi', False)] * 7,
        [(13, 'Pi', False)] * 8,
    )
    hra = balicky, hromadky, sloupecky
    klondike.vypis_hru(hra)
    out, err = capsys.readouterr()
    check(
        out, """
          U     V           W     X     Y     Z
        [???] [   ]       [   ] [   ] [   ] [   ]

          A     B     C     D     E     F     G
        [???] [???] [???] [???] [???] [???] [???]
        [???] [???] [???] [???] [???] [???] [???]
              [???] [???] [???] [???] [???] [???]
                    [???] [???] [???] [???] [???]
                          [???] [???] [???] [???]
                                [???] [???] [???]
                                      [???] [???]
                                            [???]
    """)
示例#6
0
def test_rozehrana(capsys):
    balicky = [(13, 'Pi', False)], [(8, 'Kr', True), (13, 'Pi', True)]
    hromadky = (
        [(1, 'Pi', True)],
        [(1, 'Kr', True)],
        [(1, 'Sr', True)],
        [(1, 'Ka', True), (2, 'Ka', True)],
    )
    sloupecky = (
        [(13, 'Pi', False)] * 1 + [(8, 'Kr', True)],
        [(13, 'Pi', False)] * 8 + [(9, 'Ka', True)],
        [(13, 'Pi', False)] * 2 + [(10, 'Sr', True), (9, 'Kr', True),
                                   (8, 'Ka', True)],
        [(13, 'Pi', False)] * 6 + [(3, 'Ka', True)],
        [(13, 'Pi', False)] * 1 + [(4, 'Pi', True)],
        [(13, 'Pi', False)] * 9 + [(9, 'Kr', True)],
        [(13, 'Pi', False)] * 5 + [(12, 'Sr', True), (11, 'Pi', True)],
    )
    hra = balicky, hromadky, sloupecky
    klondike.vypis_hru(hra)
    out, err = capsys.readouterr()
    check(
        out, """
          U     V           W     X     Y     Z
        [???] [K♠ ]       [A♠ ] [A♣ ] [A ♥] [2 ♦]

          A     B     C     D     E     F     G
        [???] [???] [???] [???] [???] [???] [???]
        [8♣ ] [???] [???] [???] [4♠ ] [???] [???]
              [???] [X ♥] [???]       [???] [???]
              [???] [9♣ ] [???]       [???] [???]
              [???] [8 ♦] [???]       [???] [???]
              [???]       [???]       [???] [Q ♥]
              [???]       [3 ♦]       [???] [J♠ ]
              [???]                   [???]
              [9 ♦]                   [???]
                                      [9♣ ]
    """)
示例#7
0
def test_rozehrana(capsys):
    from klondike import vypis_hru
    """Kontrola výpisu rozehrané hry"""
    hra = {
        'U': [(13, 'Pi', False)],
        'V': [(8, 'Kr', True), (13, 'Pi', True)],
        'W': [(1, 'Pi', True)],
        'X': [(1, 'Kr', True)],
        'Y': [(1, 'Sr', True)],
        'Z': [(1, 'Ka', True), (2, 'Ka', True)],
        'A': [(13, 'Pi', False)] * 1 + [(8, 'Kr', True)],
        'B': [(13, 'Pi', False)] * 8 + [(9, 'Ka', True)],
        'C': [(13, 'Pi', False)] * 2 + [(10, 'Sr', True), (9, 'Kr', True),
                                        (8, 'Ka', True)],
        'D': [(13, 'Pi', False)] * 6 + [(3, 'Ka', True)],
        'E': [(13, 'Pi', False)] * 1 + [(4, 'Pi', True)],
        'F': [(13, 'Pi', False)] * 9 + [(9, 'Kr', True)],
        'G': [(13, 'Pi', False)] * 5 + [(12, 'Sr', True), (11, 'Pi', True)],
    }
    vypis_hru(hra)
    out, err = capsys.readouterr()
    check_text(
        out, """
          U     V           W     X     Y     Z
        [???] [K♠ ]       [A♠ ] [A♣ ] [A ♥] [2 ♦]

          A     B     C     D     E     F     G
        [???] [???] [???] [???] [???] [???] [???]
        [8♣ ] [???] [???] [???] [4♠ ] [???] [???]
              [???] [X ♥] [???]       [???] [???]
              [???] [9♣ ] [???]       [???] [???]
              [???] [8 ♦] [???]       [???] [???]
              [???]       [???]       [???] [Q ♥]
              [???]       [3 ♦]       [???] [J♠ ]
              [???]                   [???]
              [9 ♦]                   [???]
                                      [9♣ ]
    """)
示例#8
0
def test_rozehrana(capsys):
    balicky = [(13, 'Pi', False)], [(8, 'Kr', True), (13, 'Pi', True)]
    hromadky = (
        [(1, 'Pi', True)],
        [(1, 'Kr', True)],
        [(1, 'Sr', True)],
        [(1, 'Ka', True), (2, 'Ka', True)],
    )
    sloupecky = (
        [(13, 'Pi', False)] * 1 + [(8, 'Kr', True)],
        [(13, 'Pi', False)] * 8 + [(9, 'Ka', True)],
        [(13, 'Pi', False)] * 2 + [(10, 'Sr', True), (9, 'Kr', True), (8, 'Ka', True)],
        [(13, 'Pi', False)] * 6 + [(3, 'Ka', True)],
        [(13, 'Pi', False)] * 1 + [(4, 'Pi', True)],
        [(13, 'Pi', False)] * 9 + [(9, 'Kr', True)],
        [(13, 'Pi', False)] * 5 + [(12, 'Sr', True), (11, 'Pi', True)],
    )
    hra = balicky, hromadky, sloupecky
    klondike.vypis_hru(hra)
    out, err = capsys.readouterr()
    check(out, """
          U     V           W     X     Y     Z
        [???] [K♠ ]       [A♠ ] [A♣ ] [A ♥] [2 ♦]

          A     B     C     D     E     F     G
        [???] [???] [???] [???] [???] [???] [???]
        [8♣ ] [???] [???] [???] [4♠ ] [???] [???]
              [???] [X ♥] [???]       [???] [???]
              [???] [9♣ ] [???]       [???] [???]
              [???] [8 ♦] [???]       [???] [???]
              [???]       [???]       [???] [Q ♥]
              [???]       [3 ♦]       [???] [J♠ ]
              [???]                   [???]
              [9 ♦]                   [???]
                                      [9♣ ]
    """)
示例#9
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
        [???] [???] [???] [???] [???] [???] [???]
        [???] [???] [???] [???] [???] [???] [???]
              [???] [???] [???] [???] [???] [???]
                    [???] [???] [???] [???] [???]
                          [???] [???] [???] [???]
                                [???] [???] [???]
                                      [???] [???]
                                            [???]
    """)
示例#10
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)
示例#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
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)
示例#13
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
示例#14
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