- import random
- baza_danych = []
- def obsluga_plikow():
- """Funkcja sprawdza czy plik z pytaniami istnieje. Jesli nie, to jest on tworzony razem z piecioma pytaniami."""
- try:
- plik = open("pytania.txt", "r")
- print("(Questions database file loaded successfully.)\n")
- plik.close()
- return
- except:
- print("(Questions database file not found. Created new one.)\n")
- plik = open("pytania.txt", "w+")
- examples = [("Polska", "Warszawa"), ("Ukraina", "Kijów"), ("Kanada", "Ottawa"), ("Niemcy", "Berlin"), ("Szwecja", "Stockholm")]
- for el in examples:
- plik.write(str(el[0]) + "\n" + str(el[1]) + "\n")
- plik.close()
- return
- def dane():
- """Funkcja ma za zadanie wczytac z pliku txt pytania do pamieci operacyjnej(do zmiennej baza_danych)."""
- baza_danych.clear()
- kraj = ""
- miasto = ""
- i = 0
- flaga = True
- plik = open("pytania.txt", "r")
- plik_list = plik.readlines()
- #print(plik_list)
- for el in plik_list:
- if flaga == True:
- kraj = el[0:-1]
- flaga = False
- else:
- miasto = el[0:-1]
- flaga = True
- i += 1
- if i % 2 == 0 and i != 0:
- gotowy = (kraj, miasto)
- baza_danych.append(gotowy)
- plik.close()
- return
- def koniec_gry(punkty, max_punkty):
- """Funkcja jest wywolywana, gdy przebieg gry sie skonczyl. Jesli tak wola gracza, wywoluje funkcje odp za wprowadzanie nowych pytan do pliku txt.
- Przyjmuje z funkcji "przegieg gry()" dwie zmienne stanowiace informacje o punktach(punkty, max_punkty).\n
- Zwraca jej "prawde" lub "falsz" w zal czy gra ma sie skonczyc.
- """
- print("\n")
- odpowiedz = ""
- if punkty == max_punkty:
- print("You won!!!")
- print("Game over. You score: [",punkty,"/", max_punkty,"]\n")
- print("New game?[y/n]")
- odpowiedz = input()
- if odpowiedz == "n" or odpowiedz == "N":
- print("Do you want to spend some time to expand our question database[y/n]?")
- odpowiedz = input()
- if odpowiedz == "y" or odpowiedz == "Y":
- dodaj_do_bazy()
- return False
- else:
- return False
- else:
- print("\n\n")
- return True
- def dodaj_do_bazy():
- """Funckja dodaje do pliku txt nowe pytania."""
- plik = open("pytania.txt", "a")
- while True:
- kraj = ""
- stolica = ""
- print("Country:")
- kraj = input()
- print("Capital:")
- stolica = input()
- plik.write(kraj + "\n")
- plik.write(stolica + "\n")
- print("Thank you. Do you want to add another question?[y/n]:")
- odpowiedz = input()
- if odpowiedz == "y" or odpowiedz == "Y":
- continue
- else:
- plik.close()
- return
- def przebieg_gry():
- """Funkcja obsluguje przebieg rozgrywki.
- Zwraca "prawde" lub "falsz" funkji "gra()" w zal od tego, czy gracz chce grac dalej.
- """
- odpowiedz = ""
- punkty = 0
- max_punkty = len(baza_danych)
- while True:
- indeks = random.randint(0, len(baza_danych)-1)
- wariant = baza_danych[indeks]
- del baza_danych[indeks]
- print("Guess the capital of: [",wariant[0],"]: ")
- odpowiedz = input()
- if odpowiedz.upper() == wariant[1].upper():
- punkty += 1
- print("Correct Answer! Score: [",punkty,"/", max_punkty,"]")
- else:
- print("Incorrect answer. Score: [",punkty,"/", max_punkty,"]")
- if not baza_danych:
- return koniec_gry(punkty, max_punkty)
- return
- print("Next round?[y/n]:")
- odpowiedz = input()
- if odpowiedz == "n" or odpowiedz == "n":
- return koniec_gry(punkty,max_punkty)
- return
- if not baza_danych:
- return koniec_gry(punkty, max_punkty)
- return False
- def gra():
- """Funkcja ta wywoluje podlegajace jej funkcje oblugujace gre. Jesli funkcja: "przebieg_gry()" zwroci falsz to gra sie konczy.
- """
- while True:
- print('Welcome in "Guess the Capital"!')
- obsluga_plikow()
- dane()
- if przebieg_gry() == False:
- print("Goodbye!")
- break
- else:
- continue