Facebook
From trener, 1 Year ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 127
  1. import random
  2. def policz_poprawne_gry(lista_podanych_gier, lista_gier_do_zgadniecia):
  3.     #poprawne gry
  4.     liczba_odgadnietych_gier = 0
  5.     #Tworzymy sobie kopie gier które mamy w liście do zgadnięcia żeby nie uszkodzić orginalnej listy
  6.     kopia_listy_gier_do_zgadniecia = lista_gier_do_zgadniecia.copy()
  7.     #wykonujemy operacje dla każdej gry którą podaliśmy
  8.     for gra in lista_podanych_gier:
  9.         #jeżeli gra którą podaliśmy znajduje się w liście to zaliczamy ją do poprawnej
  10.         if gra in kopia_listy_gier_do_zgadniecia:
  11.             #doliczamy ją jako poprawną
  12.             liczba_odgadnietych_gier += 1
  13.             #sprawdzamy na którym miejscu w liście jest
  14.             miejsce_poprawnej_gry = kopia_listy_gier_do_zgadniecia.index(gra)
  15.             #usuwanie wystąpienia z kontrolnej listy tak aby nie zaliczyło nam jednej gry dwa razy, zastępujemy jej miejsce "Skreśleniem"
  16.             kopia_listy_gier_do_zgadniecia[miejsce_poprawnej_gry] = "/"
  17.             pass
  18.         pass
  19.     return liczba_odgadnietych_gier
  20.  
  21.  
  22. #gry to wszystkie nazwy gier z jakich może korzystać program, dzieci mogą podać własne propozycje
  23. gry = ["Pokemon", "Fortnite", "Minecraft", "CS"]
  24. #wylosowane_do_zgadniecia to zmienna do której wstawimy hasło do zgadnięcia
  25. lista_gier_do_zgadniecia = []
  26. #podane_gry to lista gier które poda użytkownik
  27. lista_wprowadzonych_gier = []
  28. ###WSZYSTKO POWYŻEJ TO STARTER
  29.  
  30.  
  31.  
  32. #licznik tur
  33. ile_razy_zgadywano = 0
  34.  
  35.  
  36.  
  37. #losujemy hasła do zgadnięcia
  38. for i in range(4):
  39.     #kwadratowe nawiasy oznaczają tu pozycje w liście, random.randint to losowanie liczby całkowitej od 0 do 3
  40.     wylosowana_gra = gry[random.randint(0, 3)]
  41.     #append oznacza dołączenie do listy
  42.     lista_gier_do_zgadniecia.append(wylosowana_gra)
  43.  
  44. #warto na tym etapie pokazać do celów testowych wygenerowane hasło
  45. print(lista_gier_do_zgadniecia)
  46. #na koniec tą linijkę trzeba zakomentować, żeby gracz nie widział jakie gry zostały wylosowane. To jest potrzebne tylko do testów
  47.  
  48.  
  49. ###STARTER
  50. #wyświetlamy instrukcje
  51. print("Witaj w grze MasterMind")
  52. print("Twoim celem jest jak najszybciej odgadnąć 4 gry, które zostały wylosowane przez komputer.")
  53. print("Podczas zgadywania ważna jest kolejność gier.")
  54. print("Uwaga gry mogą się powtórzyć!!!")
  55. print("Oto zestaw gier z jakich korzysta komputer (zwróć uwagę na wielkość liter)")
  56. print(gry)
  57.  
  58. #właściwa gra która nie zakończy się dopóki nie podamy prawidłowego zestawu gier
  59. while lista_wprowadzonych_gier != lista_gier_do_zgadniecia:
  60.     #za każdym razem jak od nowa podajemy gry musimy wyczyścić listę podanych gier
  61.     lista_wprowadzonych_gier = []
  62.     #zaznaczamy nową próbę
  63.     print("Nowa próba")
  64.  
  65.     # tworzymy pętle która wykona się 4 razy
  66.     for i in range(4):
  67.         #dzięki input podajemy tytuł kolejnej gry
  68.         wpisana_gra = input(f"Podaj grę nr {i+1}: ")
  69.         #append dokleja nam grę na koniec listy
  70.         lista_wprowadzonych_gier.append(wpisana_gra)
  71.         pass
  72.     #tworzymy dwa liczniki żeby sprawdzić ile gier było na idealnej pozycji a ile było poprawnych ale na złej pozycji
  73.     idealne_gry = 0
  74.     poprawne_gry = 0
  75.  
  76.     # sprawdzanie ile trafił idealnie gier
  77.     #wykonujemy sprawdzenie wszystkich 4 elementów które podaliśmy
  78.     for i in range(4):
  79.         #sprawdzamy czy gra którą podaliśmy jest na tej samej pozycji w grach wylosowanych przez komputer
  80.         if lista_wprowadzonych_gier[i] == lista_gier_do_zgadniecia[i]:
  81.             #jeśli jest to doliczamy ją do gier idealnych
  82.             idealne_gry += 1
  83.        
  84.     poprawne_gry = policz_poprawne_gry(lista_wprowadzonych_gier, lista_gier_do_zgadniecia)
  85.    
  86.     #Do gier poprawnych zaliczyło nam także gry idealne więc musimy je odjąć żeby nie wprowadzić gracza w błąd
  87.     poprawne_gry -= idealne_gry
  88.     #Dodajemy jeden do licznika tur
  89.     ile_razy_zgadywano += 1
  90.  
  91.     #wyświetlamy graczowi w jednej lini wszystkie gry jakie podał w tej turze
  92.     print(f"Podałeś następujące gry: {lista_wprowadzonych_gier}")
  93.     #Jeśli nie wszystkie gry są idealnie ustawione to wyświetlamy informacje o ilości poprawnie umiejscowionych gier
  94.     if idealne_gry < 4:
  95.     #Wyświetlamy mu informacje o tym ile gier podał dobrze
  96.         print(f"Niestety, nie zgadłeś. Idealnie trafiłeś {idealne_gry} gier oraz ustawiłeś {poprawne_gry} gier poprawnych, ale w złych miejscach")
  97.  
  98. #gratulujemy zwycięstwa
  99. print(f"Brawo zgadłeś za {ile_razy_zgadywano} razem!!!")