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)
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)
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!')
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)
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
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