import random def policz_poprawne_gry(lista_podanych_gier, lista_gier_do_zgadniecia): #poprawne gry liczba_odgadnietych_gier = 0 #Tworzymy sobie kopie gier które mamy w liście do zgadnięcia żeby nie uszkodzić orginalnej listy kopia_listy_gier_do_zgadniecia = lista_gier_do_zgadniecia.copy() #wykonujemy operacje dla każdej gry którą podaliśmy for gra in lista_podanych_gier: #jeżeli gra którą podaliśmy znajduje się w liście to zaliczamy ją do poprawnej if gra in kopia_listy_gier_do_zgadniecia: #doliczamy ją jako poprawną liczba_odgadnietych_gier += 1 #sprawdzamy na którym miejscu w liście jest miejsce_poprawnej_gry = kopia_listy_gier_do_zgadniecia.index(gra) #usuwanie wystąpienia z kontrolnej listy tak aby nie zaliczyło nam jednej gry dwa razy, zastępujemy jej miejsce "Skreśleniem" kopia_listy_gier_do_zgadniecia[miejsce_poprawnej_gry] = "/" pass pass return liczba_odgadnietych_gier #gry to wszystkie nazwy gier z jakich może korzystać program, dzieci mogą podać własne propozycje gry = ["Pokemon", "Fortnite", "Minecraft", "CS"] #wylosowane_do_zgadniecia to zmienna do której wstawimy hasło do zgadnięcia lista_gier_do_zgadniecia = [] #podane_gry to lista gier które poda użytkownik lista_wprowadzonych_gier = [] ###WSZYSTKO POWYŻEJ TO STARTER #licznik tur ile_razy_zgadywano = 0 #losujemy hasła do zgadnięcia for i in range(4): #kwadratowe nawiasy oznaczają tu pozycje w liście, random.randint to losowanie liczby całkowitej od 0 do 3 wylosowana_gra = gry[random.randint(0, 3)] #append oznacza dołączenie do listy lista_gier_do_zgadniecia.append(wylosowana_gra) #warto na tym etapie pokazać do celów testowych wygenerowane hasło print(lista_gier_do_zgadniecia) #na koniec tą linijkę trzeba zakomentować, żeby gracz nie widział jakie gry zostały wylosowane. To jest potrzebne tylko do testów ###STARTER #wyświetlamy instrukcje print("Witaj w grze MasterMind") print("Twoim celem jest jak najszybciej odgadnąć 4 gry, które zostały wylosowane przez komputer.") print("Podczas zgadywania ważna jest kolejność gier.") print("Uwaga gry mogą się powtórzyć!!!") print("Oto zestaw gier z jakich korzysta komputer (zwróć uwagę na wielkość liter)") print(gry) #właściwa gra która nie zakończy się dopóki nie podamy prawidłowego zestawu gier while lista_wprowadzonych_gier != lista_gier_do_zgadniecia: #za każdym razem jak od nowa podajemy gry musimy wyczyścić listę podanych gier lista_wprowadzonych_gier = [] #zaznaczamy nową próbę print("Nowa próba") # tworzymy pętle która wykona się 4 razy for i in range(4): #dzięki input podajemy tytuł kolejnej gry wpisana_gra = input(f"Podaj grę nr {i+1}: ") #append dokleja nam grę na koniec listy lista_wprowadzonych_gier.append(wpisana_gra) pass #tworzymy dwa liczniki żeby sprawdzić ile gier było na idealnej pozycji a ile było poprawnych ale na złej pozycji idealne_gry = 0 poprawne_gry = 0 # sprawdzanie ile trafił idealnie gier #wykonujemy sprawdzenie wszystkich 4 elementów które podaliśmy for i in range(4): #sprawdzamy czy gra którą podaliśmy jest na tej samej pozycji w grach wylosowanych przez komputer if lista_wprowadzonych_gier[i] == lista_gier_do_zgadniecia[i]: #jeśli jest to doliczamy ją do gier idealnych idealne_gry += 1 poprawne_gry = policz_poprawne_gry(lista_wprowadzonych_gier, lista_gier_do_zgadniecia) #Do gier poprawnych zaliczyło nam także gry idealne więc musimy je odjąć żeby nie wprowadzić gracza w błąd poprawne_gry -= idealne_gry #Dodajemy jeden do licznika tur ile_razy_zgadywano += 1 #wyświetlamy graczowi w jednej lini wszystkie gry jakie podał w tej turze print(f"Podałeś następujące gry: {lista_wprowadzonych_gier}") #Jeśli nie wszystkie gry są idealnie ustawione to wyświetlamy informacje o ilości poprawnie umiejscowionych gier if idealne_gry < 4: #Wyświetlamy mu informacje o tym ile gier podał dobrze print(f"Niestety, nie zgadłeś. Idealnie trafiłeś {idealne_gry} gier oraz ustawiłeś {poprawne_gry} gier poprawnych, ale w złych miejscach") #gratulujemy zwycięstwa print(f"Brawo zgadłeś za {ile_razy_zgadywano} razem!!!")