You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

3.2 KiB

katka.py

plocha = [[" ", " ", " "], [" ", " ", " "], [" ", " ", " "]] # globaly - spatnej zvyk
hrac = "X" 

def kontrola(): # kontrola vsech moznosti; celkem v pohode tady ale slo to vyresit chytreji
                # kdybychom najednou zmenili plochu z 3x3 na 4x4 tak uz by to nefungovalo
                # jinak je to celkem hezky
    if plocha[0][0] == plocha[0][1] and plocha[0][1] == plocha[0][2] and plocha[0][2] != " ":
        print("Vyhrál " + hrac) # print ve funkci, ne moc idealni z funkcionalniho hlediska
        # protoze `hrac` je tady globalni promenna; nevadi, to jeste budeme resit; v takhle
        # malym programu to ani tolik nevadi
        return True
    if plocha[1][0] == plocha[1][1] and plocha[1][1] == plocha[1][2] and plocha[1][2] != " ":
        print("Vyhrál " + hrac)
        return True # skvele ze je tady return, diky tomuhle se utece z funkce aniz by se kontroloval zbytek
    if plocha[2][0] == plocha[2][1] and plocha[2][1] == plocha[2][2] and plocha[2][2] != " ":
        #if plocha[2][0] == plocha[2][1] == plocha[2][2] != " ":
        # ^ ekvivalence, asi trochu hezci
        # je to ale specifikum pythonu ze to funguje
        # takze tohle je ve skutecnosti v poradku
        print("Vyhrál " + hrac)
        return True
    if plocha[0][0] == plocha[1][0] and plocha[1][0] == plocha[2][0] and plocha[2][0] != " ":
        print("Vyhrál " + hrac)
        return True
    if plocha[0][1] == plocha[1][1] and plocha[1][1] == plocha[2][1] and plocha[2][1] != " ":
        print("Vyhrál " + hrac)
        return True
    if plocha[0][2] == plocha[1][2] and plocha[1][2] == plocha[2][2] and plocha[2][2] != " ":
        print("Vyhrál " + hrac)
        return True
    if plocha[0][0] == plocha[1][1] and plocha[1][1] == plocha[2][2] and plocha[2][2] != " ":
        print("Vyhrál " + hrac)
        return True
    if plocha[0][2] == plocha[1][1] and plocha[1][1] == plocha[2][0] and plocha[2][0] != " ":
        print("Vyhrál " + hrac)
        return True
    return False

def vytiskni(): # tady vsechno super
    print(plocha[0][0] + "|" + plocha[0][1] + "|" + plocha[0][2])
    print("-+-+-")
    print(plocha[1][0] + "|" + plocha[1][1] + "|" + plocha[1][2])
    print("-+-+-")
    print(plocha[2][0] + "|" + plocha[2][1] + "|" + plocha[2][2])

vytiskni()
while True:
    x = input()
    y = x.split() # asi bych tohle zkratil, ta promenna x tam tak trochu visi bez cile
                  # taky by mozna bylo chytry si rovnou vzit prvni 2 prvky z `x.split()`
    # napsal bych:
    #x = input()
    #x = x.split()
    # nebo:
    #x = input().split()
    # k tomu ze bych rovnou vzal 2 prvky tak bych napsal:
    #x = input().split()
    #y = int(x[0])
    #x = int(x[1])
    if plocha[int(y[0])][int(y[1])] == " ": # tady by bylo: `plocha[y][x] == " "`
        plocha[int(y[0])][int(y[1])] = hrac
        if kontrola(): # tohle se mi libi - hromada lidi by napsala:
                       # `if kontrola() == True:`
            vytiskni()
            break
        if hrac == "X": # lze napsat hezcejc, ale to jeste neumite
            hrac = "O"
        else:
            hrac = "X"
    vytiskni()
# sice to vypada ze to hodne hatim ale libi se mi to
# je to presne jak jsem si to predstavoval
# cili exactly co jsem od vas ocekaval