Wróć do informacji o e-podręczniku Wydrukuj Pobierz materiał do PDF Pobierz materiał do EPUB Pobierz materiał do MOBI Zaloguj się, aby dodać do ulubionych Zaloguj się, aby skopiować i edytować materiał Zaloguj się, aby udostępnić materiał Zaloguj się, aby dodać całą stronę do teczki

Gra w wisielca – zasady

Przed przystąpieniem do omawiania algorytmualgorytmalgorytmu, który zrealizuje założenia gry w wisielca, zapoznajmy się z przebiegiem rozgrywki.

  1. Gracz 1. wymyśla słowo, które drugi gracz musi odgadnąć. Gracz 2. zna tylko długość słowa. Ma także określoną z góry liczbę prób odgadnięcia wyrazu.

  2. Gracz 2. podaje literę, która według niego znajduje się w zgadywanym słowie lub podejmuje próbę odgadnięcia całego słowa.

  • Jeżeli gracz 2. zdecydował się podać wybraną literę, gracz 1 sprawdza, czy znajduje się ona w słowie do odgadnięcia. W sytuacji, gdy jest ona w nim obecna, gracz 1. wpisuje odgadniętą literę na wszystkich miejscach, na których występuje ona w słowie. Przykładowo, jeżeli gracz 1. wymyślił słowo „INFORMATYKA”, a podana przez gracza 2. litera to „A”, zgadujący zostanie poinformowany, że wymyślonym słowem jest: „_ _ _ _ _ _ A _ _ _ A”. W przypadku, gdy gracz 2. wybrał literę, która nie znajduje się w wymyślonym słowie, traci jedną szansę odgadnięcia wyrazu („jedno życie”).

  • Jeżeli gracz 2. zgaduje całe słowo, gracz 1 sprawdza, czy podany przez niego wyraz jest taki sam jak słowo wymyślone przez gracza 1. Gdy tak jest, gracz 2. wygrywa. W przeciwnym przypadku gracz 2. traci jedną szansę odgadnięcia wyrazu lub litery.

Czynności opisane w punkcie drugim powtarza się do momentu, w którym gracz 2. poda słowo wymyślone przez gracza 1. lub gdy wyczerpie limit prób odgadnięcia wyrazu.

Pseudokod algorytmu

Spróbujmy napisać algorytm realizujący opisaną partię gry w wisielca za pomocą pseudokodupseudokodpseudokodu.

Ważne!

W tej wersji algorytmu nie ma możliwości odgadywania całego słowa.

Specyfikacja:

Dane:

  • zycia — liczba szans gracza 2. na odgadnięcie litery; liczba naturalna większa od zera

  • slowo — podane przez gracza 1. hasło, które gracz 2. będzie próbował odgadnąć; ciąg znaków

Wynik:

Program na standardowym wyjściu drukuje komunikat o powodzeniu lub niepowodzeniu gracza 2. w próbie odgadnięcia wszystkich liter hasła.

Algorytm wygląda następująco:

Linia 1. zycia ← 10. Linia 2. nadpisane ← cudzysłów cudzysłów. Linia 3. slowo ← wczytaj ciąg znaków. Linia 5. dla i znak równości 1 przecinek 2 przecinek kropka kropka kropka przecinek rozmiar otwórz nawias okrągły slowo zamknij nawias okrągły wykonuj. Linia 6. nadpisane ← nadpisane plus cudzysłów podkreślnik cudzysłów. Linia 8. wyświetl nadpisane. Linia 9. czyZgadniete ← fałsz. Linia 11. dopóki zycia zamknij nawias ostrokątny 0 wykonuj. Linia 12. wyświetl cudzysłów Podaj literę do sprawdzenia cudzysłów. Linia 13. odgadywane ← wczytaj ciąg znaków. Linia 14. czyZawiera ← fałsz. Linia 16. jeżeli rozmiar otwórz nawias okrągły odgadywane zamknij nawias okrągły znak równości 1. Linia 17. dla i znak równości 1 przecinek 2 przecinek kropka kropka kropka przecinek rozmiar otwórz nawias okrągły slowo zamknij nawias okrągły wykonuj. Linia 18. jeżeli slowo otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości odgadywane otwórz nawias kwadratowy 1 zamknij nawias kwadratowy. Linia 19. czyZawiera ← prawda. Linia 20. nadpisane otwórz nawias kwadratowy i zamknij nawias kwadratowy ← odgadywane otwórz nawias kwadratowy 1 zamknij nawias kwadratowy. Linia 22. jeżeli czyZawiera znak równości fałsz. Linia 23. zycia ← zycia minus 1. Linia 24. wyświetl cudzysłów Słowo nie zawiera danej litery cudzysłów. Linia 26. czyZgadniete ← prawda. Linia 28. dla i znak równości 1 przecinek 2 przecinek kropka kropka kropka przecinek rozmiar otwórz nawias okrągły nadpisane zamknij nawias okrągły wykonuj. Linia 29. jeżeli nadpisane otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości apostrof podkreślnik apostrof. Linia 30. czyZgadniete ← fałsz. Linia 31. przerwij pętlę. Linia 33. jeżeli czyZgadniete znak równości prawda. Linia 34. przerwij pętlę. Linia 35. w przeciwnym razie. Linia 36. wyświetl cudzysłów Podana została więcej niż jedną litera cudzysłów. Linia 38. wyświetl nadpisane. Linia 39. wyświetl cudzysłów Pozostałe życia cudzysłów plus zycia. Linia 41. jeżeli czyZgadniete znak równości fałsz. Linia 42. wyświetl cudzysłów Niestety nie udało ci się odgadnąć słowa cudzysłów. Linia 43. w przeciwnym razie. Linia 44. wyświetl cudzysłów Udało ci się odgadnąć słowo wykrzyknik cudzysłów.
Ważne!

W algorytmie wykorzystujemy funkcję rozmiar() zwracającą długość zadanego ciągu znaków.

Pseudokod jest dosyć obszerny. Omówmy go teraz linijka po linijce.

Najpierw deklarowane są dwie zmienne: zycia oraz nadpisane. Pierwsza przyjmuje początkowo wartość 10 i będzie służyć do przechowywania informacji o pozostającej graczowi 2. liczbie prób zgadnięcia litery. Zmienna nadpisane przechowywać będzie słowo z zaznaczonymi literami, które udało się odgadnąć.

Następnie pobieramy od użytkownika słowo, które gracz 2. będzie próbował odgadnąć. Zapisujemy je jako zmienną slowo.

Linia 1. zycia ← 10. Linia 2. nadpisane ← cudzysłów cudzysłów. Linia 3. slowo ← wczytaj ciąg znaków.

Kolejnym etapem jest wypełnienie zmiennej nadpisane znakami podkreślenia (liczba znaków jest równa liczbie liter składających się na wymyślone słowo). Następnie zmienna ta jest wyświetlana na ekranie, dzięki czemu gracz 2. dowie się, jaką długość ma słowo wymyślone przez gracza 1. Inicjowana jest także zmienna czyZgadniete, która określa, czy gracz 2. odgadł słowo czy nie.

Linia 1. dla i znak równości 1 przecinek 2 przecinek kropka kropka kropka przecinek rozmiar otwórz nawias okrągły slowo zamknij nawias okrągły wykonuj. Linia 2. nadpisane ← nadpisane plus cudzysłów podkreślnik cudzysłów. Linia 4. wyświetl nadpisane. Linia 5. czyZgadniete ← fałsz.

Tworzymy pętlę, w której zapiszemy główną część algorytmu. Warunkiem działania pętli jest to, aby gracz 2. miał do dyspozycji większą od zera liczbę prób odgadnięcia wyrazu (zycia > 0). Wewnątrz pętli wyświetlamy komunikat dla gracza 2. oraz pobieramy od użytkownika literę i zapisujemy ją w zmiennej odgadywane.

Linia 1. dopóki zycia zamknij nawias ostrokątny 0 wykonuj. Linia 2. wyświetl cudzysłów Podaj literę do sprawdzenia cudzysłów. Linia 3. odgadywane ← wczytaj ciąg znaków.

Kolejna pętla służy do sprawdzenia, czy litera podana przez użytkownika pojawia się w wymyślonym przez gracza 1. słowie. Wynik (prawda lub fałsz) zapisywany jest w zmiennej czyZawiera.

Należy poza tym sprawdzić, czy użytkownik na pewno podał tylko jedną literę. W przypadku gdy gracz wpisze ciąg znaków, zostanie wyświetlony odpowiedni komunikat.

Linia 1. czyZawiera ← fałsz. Linia 3. jeżeli rozmiar otwórz nawias okrągły odgadywane zamknij nawias okrągły znak równości 1. Linia 4. dla i znak równości 1 przecinek 2 przecinek kropka kropka kropka przecinek rozmiar otwórz nawias okrągły slowo zamknij nawias okrągły wykonuj. Linia 5. jeżeli slowo otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości odgadywane otwórz nawias kwadratowy 1 zamknij nawias kwadratowy. Linia 6. czyZawiera ← prawda. Linia 8. w przeciwnym razie. Linia 9. wyświetl cudzysłów Podana została więcej niż jedną litera cudzysłów.

Jeżeli słowo zawiera podaną przez gracza literę, nadpisywana jest zmienna nadpisane – znaki podkreślenia (_) są w odpowiednich miejscach zastępowane odgadniętą literą.

W przypadku gdy słowo nie zawiera podanej litery, gracz traci jedną próbę odgadnięcia („jedno życie”) i wyświetlany jest odpowiedni komunikat.

Linia 1. jeżeli rozmiar otwórz nawias okrągły odgadywane zamknij nawias okrągły znak równości 1. Linia 2. dla i znak równości 1 przecinek 2 przecinek kropka kropka kropka przecinek rozmiar otwórz nawias okrągły slowo zamknij nawias okrągły wykonuj. Linia 3. jeżeli slowo otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości odgadywane otwórz nawias kwadratowy 1 zamknij nawias kwadratowy. Linia 4. czyZawiera ← prawda. Linia 5. nadpisane otwórz nawias kwadratowy i zamknij nawias kwadratowy ← odgadywane otwórz nawias kwadratowy 1 zamknij nawias kwadratowy. Linia 7. jeżeli czyZawiera znak równości fałsz. Linia 8. zycia ← zycia minus 1. Linia 9. wyświetl cudzysłów Słowo nie zawiera danej litery cudzysłów. Linia 11. w przeciwnym razie. Linia 12. wyświetl cudzysłów Podana została więcej niż jedną litera cudzysłów.

Kolejna pętla pozwala sprawdzić, czy całe słowo zostało odgadnięte czy też zostały jeszcze znaki podkreślenia. Jeśli znajdują się one wciąż w wyrazie, to zmienna logiczna czyZgadniete przyjmuje wartość fałsz, a działanie pętli jest przerywane.

Następnie pojawia się instrukcja warunkowa. Jeżeli zmienna logiczna czyZgadniete ma wartość prawda, czyli gdy wszystkie litery składające się na słowo zostały odgadnięte, następuje przerwanie pętli zewnętrznej.

Linia 1. dopóki zycia zamknij nawias ostrokątny 0 wykonuj. Linia 2. wyświetl cudzysłów Podaj literę do sprawdzenia cudzysłów. Linia 3. odgadywane ← wczytaj ciąg znaków. Linia 4. czyZawiera ← fałsz. Linia 6. jeżeli rozmiar otwórz nawias okrągły odgadywane zamknij nawias okrągły znak równości 1. Linia 7. dla i znak równości 1 przecinek 2 przecinek kropka kropka kropka przecinek rozmiar otwórz nawias okrągły slowo zamknij nawias okrągły wykonuj. Linia 8. jeżeli slowo otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości odgadywane otwórz nawias kwadratowy 1 zamknij nawias kwadratowy. Linia 9. czyZawiera ← prawda. Linia 10. nadpisane otwórz nawias kwadratowy i zamknij nawias kwadratowy ← odgadywane otwórz nawias kwadratowy 1 zamknij nawias kwadratowy. Linia 12. jeżeli czyZawiera znak równości fałsz. Linia 13. zycia ← zycia minus 1. Linia 14. wyświetl cudzysłów Słowo nie zawiera danej litery cudzysłów. Linia 16. czyZgadniete ← prawda. Linia 18. dla i znak równości 1 przecinek 2 przecinek kropka kropka kropka przecinek rozmiar otwórz nawias okrągły nadpisane zamknij nawias okrągły wykonuj. Linia 19. jeżeli nadpisane otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości apostrof podkreślnik apostrof. Linia 20. czyZgadniete ← fałsz. Linia 21. przerwij pętlę. Linia 23. jeżeli czyZgadniete znak równości prawda. Linia 24. przerwij pętlę. Linia 25. w przeciwnym razie. Linia 26. wyświetl cudzysłów Podana została więcej niż jedną litera cudzysłów.

Każde próba zgadnięcia litery powinna zakończyć się wyświetleniem słowa z widocznymi, odgadniętymi literami oraz aktualnej liczby dostępnych szans.

Linia 1. dopóki zycia zamknij nawias ostrokątny 0 wykonuj. Linia 2. wyświetl cudzysłów Podaj literę do sprawdzenia cudzysłów. Linia 3. odgadywane ← wczytaj ciąg znaków. Linia 4. czyZawiera ← fałsz. Linia 6. jeżeli rozmiar otwórz nawias okrągły odgadywane zamknij nawias okrągły znak równości 1. Linia 7. dla i znak równości 1 przecinek 2 przecinek kropka kropka kropka przecinek rozmiar otwórz nawias okrągły slowo zamknij nawias okrągły wykonuj. Linia 8. jeżeli slowo otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości odgadywane otwórz nawias kwadratowy 1 zamknij nawias kwadratowy. Linia 9. czyZawiera ← prawda. Linia 10. nadpisane otwórz nawias kwadratowy i zamknij nawias kwadratowy ← odgadywane otwórz nawias kwadratowy 1 zamknij nawias kwadratowy. Linia 12. jeżeli czyZawiera znak równości fałsz. Linia 13. zycia ← zycia minus 1. Linia 14. wyświetl cudzysłów Słowo nie zawiera danej litery cudzysłów. Linia 16. czyZgadniete ← prawda. Linia 18. dla i znak równości 1 przecinek 2 przecinek kropka kropka kropka przecinek rozmiar otwórz nawias okrągły nadpisane zamknij nawias okrągły wykonuj. Linia 19. jeżeli nadpisane otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości apostrof podkreślnik apostrof. Linia 20. czyZgadniete ← fałsz. Linia 21. przerwij pętlę. Linia 23. jeżeli czyZgadniete znak równości prawda. Linia 24. przerwij pętlę. Linia 25. w przeciwnym razie. Linia 26. wyświetl cudzysłów Podana została więcej niż jedną litera cudzysłów. Linia 28. wyświetl nadpisane. Linia 29. wyświetl cudzysłów Pozostałe życia cudzysłów plus zycia.

Ostatnim etapem jest wyświetlenie komunikatu końcowego:

Linia 1. jeżeli czyZgadniete znak równości fałsz. Linia 2. wyświetl cudzysłów Niestety nie udało ci się odgadnąć słowa cudzysłów. Linia 3. w przeciwnym razie. Linia 4. wyświetl cudzysłów Udało ci się odgadnąć słowo wykrzyknik cudzysłów.

Słownik

algorytm
algorytm

przepis postępowania prowadzący do rozwiązania ustalonego problemu, określający ciąg czynności elementarnych, które należy w tym celu wykonać

pseudokod
pseudokod

sposób zapisu algorytmu; zachowuje strukturę charakterystyczną dla kodu zapisanego w języku programowania (wcięcia, bloki, instrukcje), jednak rezygnuje ze ścisłych reguł składniowych na rzecz prostoty i czytelności