Facebook
From Chartreuse Terrapin, 4 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 164
  1. import random
  2.  
  3. baza_danych = []
  4.  
  5. def obsluga_plikow():
  6.     """Funkcja sprawdza czy plik z pytaniami istnieje. Jesli nie, to jest on tworzony razem z piecioma pytaniami."""
  7.     try:
  8.         plik = open("pytania.txt", "r")
  9.         print("(Questions database file loaded successfully.)\n")
  10.         plik.close()
  11.         return
  12.     except:
  13.         print("(Questions database file not found. Created new one.)\n")
  14.         plik = open("pytania.txt", "w+")
  15.         examples = [("Polska", "Warszawa"), ("Ukraina", "Kijów"), ("Kanada", "Ottawa"), ("Niemcy", "Berlin"), ("Szwecja", "Stockholm")]
  16.  
  17.         for el in examples:
  18.             plik.write(str(el[0]) + "\n" + str(el[1]) + "\n")
  19.  
  20.         plik.close()
  21.         return
  22.    
  23. def dane():
  24.     """Funkcja ma za zadanie wczytac z pliku txt pytania do pamieci operacyjnej(do zmiennej baza_danych)."""
  25.     baza_danych.clear()
  26.     kraj = ""
  27.     miasto = ""
  28.     i = 0
  29.     flaga = True
  30.     plik = open("pytania.txt", "r")
  31.     plik_list = plik.readlines()
  32.     #print(plik_list)
  33.  
  34.     for el in plik_list:
  35.         if flaga == True:
  36.             kraj = el[0:-1]
  37.             flaga = False
  38.         else:
  39.             miasto = el[0:-1]
  40.             flaga = True
  41.         i += 1
  42.         if i % 2 == 0 and i != 0:
  43.             gotowy = (kraj, miasto)
  44.             baza_danych.append(gotowy)
  45.     plik.close()
  46.     return
  47.  
  48. def koniec_gry(punkty, max_punkty):
  49.     """Funkcja jest wywolywana, gdy przebieg gry sie skonczyl. Jesli tak wola gracza, wywoluje funkcje odp za wprowadzanie nowych pytan do pliku txt.
  50.  
  51.     Przyjmuje z funkcji "przegieg gry()" dwie zmienne stanowiace informacje o punktach(punkty, max_punkty).\n
  52.     Zwraca jej "prawde" lub "falsz" w zal czy gra ma sie skonczyc.
  53.  
  54.     """
  55.     print("\n")
  56.     odpowiedz = ""
  57.  
  58.     if punkty == max_punkty:
  59.         print("You won!!!")
  60.     print("Game over. You score: [",punkty,"/", max_punkty,"]\n")
  61.  
  62.  
  63.     print("New game?[y/n]")
  64.     odpowiedz = input()
  65.     if odpowiedz == "n" or odpowiedz == "N":
  66.         print("Do you want to spend some time to expand our question database[y/n]?")
  67.         odpowiedz = input()
  68.         if odpowiedz == "y" or odpowiedz == "Y":
  69.             dodaj_do_bazy()
  70.             return False
  71.         else:
  72.             return False
  73.     else:
  74.         print("\n\n")
  75.         return True
  76.  
  77. def dodaj_do_bazy():
  78.     """Funckja dodaje do pliku txt nowe pytania."""
  79.     plik = open("pytania.txt", "a")
  80.     while True:
  81.         kraj = ""
  82.         stolica = ""
  83.  
  84.         print("Country:")
  85.         kraj = input()
  86.         print("Capital:")
  87.         stolica = input()
  88.  
  89.         plik.write(kraj + "\n")
  90.         plik.write(stolica + "\n")
  91.  
  92.         print("Thank you. Do you want to add another question?[y/n]:")
  93.         odpowiedz = input()
  94.         if odpowiedz == "y" or odpowiedz == "Y":
  95.             continue
  96.         else:
  97.             plik.close()
  98.             return
  99.  
  100. def przebieg_gry():
  101.     """Funkcja obsluguje przebieg rozgrywki.
  102.  
  103.     Zwraca "prawde" lub "falsz" funkji "gra()" w zal od tego, czy gracz chce grac dalej.
  104.  
  105.     """
  106.     odpowiedz = ""
  107.     punkty = 0
  108.     max_punkty = len(baza_danych)
  109.     while True:
  110.         indeks = random.randint(0, len(baza_danych)-1)
  111.         wariant = baza_danych[indeks]
  112.         del baza_danych[indeks]
  113.         print("Guess the capital of: [",wariant[0],"]: ")
  114.         odpowiedz = input()
  115.  
  116.         if odpowiedz.upper() == wariant[1].upper():
  117.             punkty += 1
  118.             print("Correct Answer! Score: [",punkty,"/", max_punkty,"]")
  119.         else:
  120.             print("Incorrect answer. Score: [",punkty,"/", max_punkty,"]")
  121.  
  122.         if not baza_danych:
  123.             return koniec_gry(punkty, max_punkty)
  124.             return
  125.         print("Next round?[y/n]:")
  126.         odpowiedz = input()
  127.         if odpowiedz == "n" or odpowiedz == "n":
  128.             return koniec_gry(punkty,max_punkty)
  129.             return
  130.         if not baza_danych:
  131.             return koniec_gry(punkty, max_punkty)
  132.             return False
  133.        
  134.  
  135. def gra():
  136.     """Funkcja ta wywoluje podlegajace jej funkcje oblugujace gre. Jesli funkcja: "przebieg_gry()" zwroci falsz to gra sie konczy.
  137.  
  138.     """
  139.     while True:
  140.         print('Welcome in "Guess the Capital"!')
  141.         obsluga_plikow()
  142.         dane()
  143.         if przebieg_gry() == False:
  144.             print("Goodbye!")
  145.             break
  146.         else:
  147.             continue