Profilo di Wiz

Nome Wiz
Indirizzo email False
AvatarAvatar utenti
Messaggi1
  • Tris
    Forum >> Programmazione Python >> Videogames
    Non riesco ad avviare il programma, riporta un errore e non capisco perchè, inoltre ho provato anche si Geany su os Linux e riporta il solito errore..

    grazie




    errore:


    Gioca a Tris!

    Traceback (most recent call last):

    File "/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py", line 31, in <module>

    start(fakepyfile,mainpyfile)

    File "/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py", line 30, in start

    exec(open(mainpyfile).read(), __main__.__dict__)

    File "<string>", line 132, in <module>

    NameError: name 'letteraGiocatore' is not defined

    [Program finished]





    di seguito il codice:

    import random
    
    
    def disegna_tabella(tabella):
    
        print ("    |    |")
        print (" "+ tabella7+ "    |    "+ tabella8+ "    |    "+ tabella9)
        print ("    |    |")
        print("----‐-------------")
        print ("    |    |")
        print (" "+ tabella4+ "    |    "+ tabella5+ "    |    "+ tabella6)
        print ("    |    |")
        print("----‐-------------")
        print ("    |    |")
        print (" "+ tabella1+ "    |    "+ tabella2+ "    |    "+ tabella3)
        print ("    |    |")
        disegna_tabella([" "] * 10)
        
       
        def letteraGiocatore():
            lettera=""
            while not(lettera=="x" or lettera=="o"):
                print("vuoi la x o la o?")
                lettera=input().upper()
            if lettera=="x":
                return  ("x","o")
            else:
                return ("o","x")
                
    
        def chi_inizia():
            if random.randint(0,1)== 0:
                return "computer"
            else:
                 return "giocatore"
                 
    
        def gioca_ancora():
            print("Vuoi giocare ancora? (s=Si, n=No)")
            return input().lower().startswith("s")
            
            
        def fai_la_mossa(tabella, lettera, mossa):
            tabellamossa=lettera
            
            
        def il_vincitore(ta, le):
            return (
            (ta7== le and ta8 ==le and ta9==le) or 
            (ta4== le and ta5 ==le and ta6==le) or
            (ta1== le and ta2 ==le and ta3==le) or
            (ta7== le and ta4 ==le and ta1==le) or
            (ta8== le and ta5 ==le and ta2==le) or
            (ta9== le and ta6 ==le and ta3==le) or
            (ta7== le and ta5 ==le and ta3==le) or
            (ta9== le and ta5 ==le and ta1==le))
        
    
        def spazio_libero(tabella, mossa):
            return tabellamossa== " "
            
            
        def crea_copia_tabella(tabella):
            copiaTab=[]
            for i in tabella:
                copiaTab.append(i)
            return copiaTab
            
            
        def mossa_giocatore(tabella):
         mossa=" "
         while mossa not in "1 2 3 4 5 6 7 8 9".split() or not spazio_libero(tabella,int(mossa)):
             print("Quale sarà la tua prossima mossa? (1-9)")
             mossa=input()
         return int(mossa)
         
         
        def fai_mossa_casuale_da_lista(tabella, lista_mosse):
            possibili_mosse=[]
            for i in lista_mosse:
                if spazio_libero(tabella,i):
                    possibili_mosse.append(i)
            if len(possibili_mosse)!=0:
                return random.choice(possibili_mosse)
            else:
                return None
                
    
        def mossa_computer(tabella, lettera_computer):
            if lettera_computer=="X":
                lettera_giocatore="O"
            else:
                lettera_giocatore="X"
            for i in range(1, 10):
                copia=crea_copia_tabella(tabella)
                if spazio_libero(copia, i):
                    fai_la_mossa(copia, lettera_computer, i)
                    if il_vincitore(copia, lettera_computer):
                        return i                   
            for i in range(1,10):
                copia=crea_copia_tabella(tabella)
                if spazio_libero(copia, i):
                    fai_la_mossa(copia, lettera_giocatore, i)
                    if il_vincitore(copia, lettera_giocatore):
                        return i
                        mossa=fai_mossa_casuale_da_lista(tabella[1,3,7,9])
            if mossa !=None:
                return mossa            
            if spazio_libero(tabella, 5):
                return 5            
            return fai_mossa_casuale_da_lista(tabella, [2,4, 6, 8])
            
            
        def tabella_completa(tabella):
            for i in range(1, 10):
                if spazio_libero(tabella, i):
                    return False
                else:
                    return True
                    
                    
            
            
            
            
    
    print('Gioca a Tris!')
    
    while True:
        la_tabella=[" "]*10
        lettera_giocatore, lettera_computer = letteraGiocatore()
        turno=chi_inizia()
        print("il "+turno+ " parte per primo.")
        partita_corso=True
        
        
        while partita_in_corso:
            if turno == 'giocatore':
                # Tocca al giocatore.
                disegna_tabella(la_tabella)
                mossa = mossa_giocatore(la_tabella)
                fai_la_mossa(la_tabella, lettera_giocatore, mossa)
                
                if il_vincitore(la_tabella,lettera_giocatore):
                    disegna_tabella(la_tabella)
                    print ("evviva, hai vinto!")
                    partita_corso=False
                else:
                    if tabella_completa(la_tabella):
                        disegna_tabella(la_tabella)
                        print ("la partita è finita in pareggio.")
                        break
                    else:   
    
                         turno="computer"
            else:
                    mossa=mossa_computer(la_tabella, lettera_computer)
                    fai_la_mossa(la_tabella, lettera_computer, mossa)
                    
                    if il_vincitore(la_tabella, lettera_computer):
                        disegna_tabella(la_tabella)
                        print ("il computer ti ha sconfitto. Hai perso!")
                        partita_corso=False
                    else:
                        if tabella_completa(la_tabella):
                            disegna_tabella(la_tabella)
                            print ("La partitita è finita in parità.")
                            break
                        else:
                            turno="giocatore"
                            
                            if not gioca_ancora():break