# Huszár mozgás követés
# YT: https://www.youtube.com/watch?v=kU1urF7_Pqs
import random # csak, ha véletlenszerűen szeretnénk elhelyezni a bábut a táblán
# Táblázat oszlopainak és sorainak definiálása
oszlopok = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
sorok = [1, 2, 3, 4, 5, 6, 7, 8]
# Huszár lépési lehetőségei relatív koordináták alapján
huszar_lepesek = [
(2, 1), (2, -1), (-2, 1), (-2, -1),
(1, 2), (1, -2), (-1, 2), (-1, -2)
] # A huszár lépéseinek lehetőségét mutatják be. L alakban közlekedhet, azaz pl. (2,1) -> két sorral feljebb egy oszloppal jobbra
# Huszár kezdőpozíciója
#jelenlegi_oszlop = 'A'
#jelenlegi_sor = 1
jelenlegi_oszlop = random.choice(oszlopok)
jelenlegi_sor = random.choice(sorok)
# A huszár megtett útjának követése
utvonal = [f"{jelenlegi_oszlop}{jelenlegi_sor}"] # Ez a lista tárolja a huszár útját a táblán. Jelenleg a kezdő pozíciót tároljuk benne.
print(f"A huszár kezdő pozíciója: {jelenlegi_oszlop}{jelenlegi_sor}") # kiírjuk a huszár kezdő pozícióját.
# A játék futtatása, amíg a felhasználó be nem írja a 0-t
while True: # Ez egy végtelen ciklus, ami addig tart, amig egy belső feltétel mentén ki nem lépünk belőle (break)
# A huszár jelenlegi pozíciójának indexei - ez ahhoz szükséges, hogy ki tudjuk számolni az új lépési lehetőségeket
jelenlegi_oszlop_index = oszlopok.index(jelenlegi_oszlop)
#jelenlegi_sor_index = sorok.index(jelenlegi_sor)
# Lehetséges lépések kiszámítása
lehetseges_lepesek = [] # ide tároljuk a lehetséges lépéseket
for lepes in huszar_lepesek: # végig megyünk a lehetséges mozgásokon és mindegyik lehetőség alapján kiszámoljuk az új lehetséges lépéseket
uj_sor = jelenlegi_sor + lepes[0] # kicseréjük a koordinátákat az új koordinátákra -> azért lepes[0], mert a lepes egy két elemű tuple
uj_oszlop_index = jelenlegi_oszlop_index + lepes[1] # kicseréjük a koordinátákat az új koordinátákra -> azért lepes[1], mert a lepes egy két elemű tuple
# Ellenőrizzük, hogy a lépés a táblán belül van-e
if 0 <= uj_oszlop_index < len(oszlopok) and 1 <= uj_sor <= 8:
lehetseges_lepesek.append(f"{oszlopok[uj_oszlop_index]}{uj_sor}") # ha igen, hozzá adjuk a listához
# Lehetséges lépések kiírása
print("Lehetséges lépések:", ', '.join(lehetseges_lepesek)) # Kiírjuk a lehetséges lépseket vesszővel elválasztva
# Tipp bekérése a felhasználótól
valasztas = input("Válassz egy lépést vagy írj be 0-t a kilépéshez: ").upper() # bekérjük a felhasználó választását
# Kilépés ellenőrzése
if valasztas == '0':
break
# Ellenőrizzük, hogy érvényes lépést választott-e
if valasztas in lehetseges_lepesek:
jelenlegi_oszlop = valasztas[0] # azért választas[0], mert a string egy listaként is kezelhető, pl. D4 esetén valasztas[0] = D, valasztas[1] = 4
jelenlegi_sor = int(valasztas[1]) # azért választas[0], mert a string egy listaként is kezelhető, pl. D4 esetén valasztas[0] = D, valasztas[1] = 4
utvonal.append(valasztas)
print(f"A huszár új pozíciója: {jelenlegi_oszlop}{jelenlegi_sor}")
else:
print("Érvénytelen lépés, próbáld újra.")
# A megtett út kiírása a program végén
print("A huszár megtett útja:", ' -> '.join(utvonal))