Wykonuje się inna funkcja niż jest zadeklarowana

0

Witam. Ostatnio napotkałem problem z funkcją. A mianowicie wykonuje się funkcja 'setup()' a nie funkcja 'odbierz()'. Github tego projektu: https://github.com/bgnacinski/City-Simulator . W funkcji 'glowna()' jest wszystko dobrze z tego co widzę:

Funkcja 'setup()'

def setup(self,login):

        try:
            f = open(login + "/imie.cfg","r")
            CS.glowna(login)

        except FileNotFoundError:
            clear()

            print("\nJak nazwiesz burmistrza?")
            imie = input("--> ")
            print("\nJak nazwiesz swoje miasto?")
            miasto = input("--> ")

            f = open(login + "/imie.cfg","w+")
            f.write(imie)
            f.close()

            f = open(login + "/miasto.cfg","w+")
            f.write(miasto)
            f.close()

            f = open(login + "/people.cfg","w+")
            f.write("0")
            f.close()

            f = open(login + "/money.cfg","w+")
            f.write("1000")
            f.close()
            
            f = open(login + "/praca.cfg","w+")
            f.write("0")
            f.close()

            f = open(login + "/surowce.cfg","w+")
            f.write("1000")
            f.close()

            f = open(login + "/produkcja.cfg","w+")
            f.write("False")
            f.close()

            f = open(login + "/huty.cfg","w+")
            f.write("0")
            f.close()

            f = open(login + "/kopalnie.cfg","w+")
            f.write("0")
            f.close()

            f = open(login + "/tartaki.cfg","w+")
            f.write("0")
            f.close()

            f = open(login + "/wyplata.cfg","w+")
            f.write("")
            f.close()

            CS.glowna(login)

Funkcja 'odbierz()'

def odbierz(self,login):
        now = datetime.datetime.now()
        teraz = now.strftime("%D")

        f = open(login + "/wyplata.cfg","r")
        ostatniaWyplata = f.readline()
        f.close()

        if teraz == ostatniaWyplata:
            clear()
            print("Już odebrałeś wypłatę :(")
            CS.glowna(login)

        else:
            now = datetime.datetime.now()

            #Miejsca pracy
            f = open(login + "/praca.cfg","r")
            praca = f.readline()
            f.close()

            f = open(login + "/kopalnie.cfg","r")
            kopalnie = f.readline()
            kopalnie = int(kopalnie)
            f.close()

            f = open(login + "/huty.cfg","r")
            huty = f.readline()
            huty = int(huty)
            f.close()

            f = open(login + "/tartaki.cfg","r")
            tartaki = f.readline()
            tartaki = int(tartaki)
            f.close()

            f = open(login + "wyplata.cfg","w+")
            f.write(now.strftime("%D"))
            f.close()

            #Otwieranie money i surowcow

            f = open(login + "/money.cfg","r")
            money = f.readline()
            money = int(money)
            f.close()

            f = open(login + "/surowce.cfg","r")
            surowce = f.readline()
            surowce = int(surowce)
            f.close()

            #Liczenie_Wyplaty

            #Tartaki
            while tartaki > 0:
                money += 150
                surowce += 200
                tartaki -= 1
            
            #Huty
            while huty > 0:
                money += 200
                surowce += 250
                huty -= 1

            #Kopalnie
            while kopalnie > 0:
                money += 300
                surowce += 500
                kopalnie -= 1

        CS.glowna(login)

CS = CitySimulator()

Funkcja 'glowna()'

def glowna(self,login):
        clear()

        f = open(login + "/imie.cfg","r")
        imie = f.readline()
        f.close()

        f = open(login + "/miasto.cfg","r")
        miasto = f.readline()
        f.close()

        f = open(login + "/money.cfg","r")
        hajs = f.readline()
        f.close()

        f = open(login + "/people.cfg","r")
        mieszkancy = f.readline()
        f.close()

        f = open(login + "/praca.cfg","r")
        praca = f.readline()
        f.close()

        f = open(login + "/surowce.cfg","r")
        surowce = f.readline()
        f.close()

        f = open(login + "/produkcja.cfg","r")
        produkcja = f.readline()
        f.close()

        f = open(login + "/kopalnie.cfg","r")
        kopalnie = f.readline()
        f.close()

        f = open(login + "/huty.cfg","r")
        huty = f.readline()
        f.close()

        f = open(login + "/tartaki.cfg","r")
        tartaki = f.readline()
        f.close()


        print("\n------------------------------------------------------------------------------------------")
        print("| Miasto: " + miasto + " | Burmistrz: " + imie + " | Budżet " + hajs + "$ |")
        print("| Mieszkańcy: " + mieszkancy + " | Pracownicy: " + praca + " | Surowce: " + surowce + " |")
        print("------------------------------------------------------------------------------------------")
        print("\n\n Wpisz 'odbierz' aby odebrać surowce i pieniądze \n\n")
        print("------------------------------------------------------------------------------------------")
        print("Wpisz 'dom' aby kupić dom za 200$")
        print("Wpisz 'praca' aby kupić miejsce pracy za 300$")
        print("Wpisz 'surowce' aby kupić surowce za 500$")
        print("------------------------------------------------------------------------------------------")

        if produkcja == "False":
            print("Wpisz 'produkcja' aby zacząć produkować swoje materiały")
            print("------------------------------------------------------------------------------------------")

        if produkcja == "True":
            print("")
            print("")
            print("------------------------------------------------------------------------------------------")
            print("Wpisz 'huta' aby kupić hutę za 5000$ (Przychody: Pieniądze - 300$ i Surowce - 500)")
            print("Wpisz 'kopalnia' aby kupić kopalnie za 3000$ (Przychody: Pieniądze - 200$ i Surowce - 250)")
            print("Wpisz 'tartak' aby kupić tartak za 2000$ (Przychody: Pieniądze - 150$ i Surowce - 200)")
            print("--------------------------------------------------------------")
            print("Twoje kopalnie: " + kopalnie)
            print("Twoje huty: " + huty)
            print("Twoje tartaki: " + tartaki)
            print("------------------------------------------------------------------------------------------")

        wybor = input("--> ")

        #--------------------------------------------------#

        if wybor == "dom":

            CS.dom(login)

        elif wybor == "praca":

            CS.praca(login)

        elif wybor == "surowce":

            CS.surowce(login)

        elif wybor == "produkcja":

            CS.setProdukcja(login,mieszkancy,surowce,hajs)

        #--------------------------------------------------#

        elif wybor == "kopalnia":
            PD.kopalnia(login)

        elif wybor == "huta":
            PD.huta(login)

        elif wybor == "tartak":
            PD.tartak(login)

        #--------------------- Komendy --------------------#
        elif wybor == "money":
            f = open(login + "/money.cfg","r")
            money = f.readline()
            f.close()

            money = int(money) + 10000

            f = open(login + "/money.cfg","w+")
            f.write(str(money))
            f.close()

            CS.glowna(login)

        elif wybor == "source":
            f = open(login + "/surowce.cfg","r")
            source = f.readline()
            f.close()

            source = int(source) + 10000

            f = open(login + "/surowce.cfg","w+")
            f.write(str(source))
            f.close()

            CS.glowna(login)

        elif wybor == "people":
            f = open(login + "/people.cfg","r")
            people = f.readline()
            f.close()

            people = int(people) + 10000

            f = open(login + "/people.cfg","w+")
            f.write(str(people))
            f.close()

            CS.glowna(login)

        #----------------------------------------------#

        elif wybor == "odbierz":
            CS.odbierz(login)

        else:
            clear()
            print("Nie ma takiej opcji :(")
            time.sleep(1)
            CS.glowna(login)
0

"A mianowicie wykonuje się funkcja 'setup()' a nie funkcja 'odbierz()'". Jedyne co mi przychodzi do głowy odnośnie tego cytatu, to to, że Wołasz funkcję odbierz, a wykonuje się funkcja setup lub jest inny niż się Spodziewasz warunek logiczny (wykonuje się branch z wołaniem setup, a nie odbierz); ale nigdzie takiej sytuacji, w kodzie, który Wkleiłeś nie widzę. Prosimy więcej informacji, jaki jest błąd, stacktrace, jakie próby rozwiązania Podjąłeś, etc...

0

Nie wyskakuje żaden błąd, jedyne co się wykonuje to funkcja setup. To mnie kompletnie zamurowało. Nic nie próbowałem ale sprawdzałem czy nic nie przekręciłem.

0

Gdzie jest program, który woła te funkcję?

0

No dobra a teraz zamiast zgadywać i plakac na forum, to weź jak normalny czlowiek jakieś ludzkie środowisko do programowania, jak pycharm. Postaw łaskawie breakpointa na początku tej funkcji glowna, odpal to w debug-mode i idź przez kod krok po kroku. Zaręczam ci że w ciągu 5 minutu dojdziesz do tego co się tam dzieje.

1 użytkowników online, w tym zalogowanych: 0, gości: 1