Implementacja algorytmu w języku Java – podsumowanie

Ważne!

W tej sekcji zapoznasz się z alternatywną (do zaprezentowanej w poprzedniej sekcji) implementacją gry w wisielca.

Pierwszym krokiem jest zadeklarowanie dwóch zmiennych:

Linia 1. int pozostaleProby znak równości 8 średnik. Linia 2. String wymyslone znak równości cudzysłów cudzysłów średnik.

Pierwsza z nich o nazwie pozostaleProby to zmienna całkowita integer, która określa, ile prób pozostało graczowi na odgadnięcie słowa wymyślonego przez innego gracza (łańcuch znakówłańcuch znakówłańcuch znaków String wymyslone).

Kolejnym krokiem jest pobranie od użytkownika (w tym przypadku gracza) słowa, które drugi gracz będzie miał za zadanie odgadnąć. Ciąg znaków, który uzyskujemy za pomocą klasy Scanner oraz funkcji wbudowanej nextLine(), zapisujemy do zmiennej wymyslone.

Linia 1. Scanner scanner znak równości new Scanner otwórz nawias okrągły System kropka in zamknij nawias okrągły średnik. Linia 2. wymyslone znak równości scanner kropka nextLine otwórz nawias okrągły zamknij nawias okrągły średnik.
Ważne!

Ponieważ użyta została zewnętrza klasa Scanner, należy pamiętać o dodaniu:

Linia 1. import java kropka util kropka Scanner średnik.

Deklarujemy tablicę znaków char[] o nazwie odgadywane, która będzie przechowywać ciąg znaków zawierający litery (w przypadku gdy gracz odgadł daną literę) oraz znaki podkreślenia (jeżeli dana litera nie została jeszcze odgadnięta).

Na samym początku gry nie są jeszcze odgadnięte żadne litery, więc wypełniamy zmienną odgadywane znakami podkreślenia.

Zmienna następnie jest wypisywana na ekran, aby drugi gracz znał długość słowa.

Linia 1. char otwórz nawias kwadratowy zamknij nawias kwadratowy odgadywane znak równości new char otwórz nawias kwadratowy wymyslone kropka length otwórz nawias okrągły zamknij nawias okrągły zamknij nawias kwadratowy średnik. Linia 3. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny wymyslone kropka length otwórz nawias okrągły zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 4. odgadywane otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości apostrof podkreślnik apostrof średnik. Linia 5. zamknij nawias klamrowy.

Następnie deklarujemy kolejne dwie zmienne:

  • boolean czyOdgadniete = false; - zmienna logiczna, określająca, czy gracz odgadł już pełne słowo (przyjmie wartość true), czy nie (przyjmie wartość false),

  • String proba; - łańcuch znaków, do którego zapisywać będziemy to, co wprowadzi drugi gracz - literę lub całe słowo, które będzie chciał sprawdzić.

Linia 1. boolean czyOdgadniete znak równości false średnik. Linia 2. String proba średnik.

Deklarujemy pętlę while, w której będziemy pobierać od użytkownika kolejne litery (bądź całe słowa) i sprawdzać czy występują w wymyślonym przez pierwszego gracza wyrazie.

Linia 1. while otwórz nawias okrągły pozostaleProby zamknij nawias ostrokątny 0 zamknij nawias okrągły otwórz nawias klamrowy. Linia 2. System kropka out kropka println otwórz nawias okrągły cudzysłów Podaj literę lub całe słowo do sprawdzenia cudzysłów zamknij nawias okrągły średnik. Linia 3. proba znak równości scanner kropka nextLine otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 4. boolean czyZawiera znak równości false średnik.

Tworzymy blok instrukcji warunkowejinstrukcja warunkowainstrukcji warunkowej, która sprawdza, czy użytkownik wprowadził pojedynczy znak (długość równa 1), czy ciąg znaków (długość większa od 1).

W przypadku, gdy został wprowadzony pojedynczy znak, w pętli zostaje sprawdzone, czy wymyślone słowo zawiera podany znak – jeżeli tak, w kolejnej instrukcji warunkowej w tablicy znaków odgadywane zamieniane są znaki podkreślenia (w odpowiednich miejscach) na rzeczywiste litery. W przeciwnym przypadku (gdy użytkownik podał literę, która nie znajduje się wymyślonym przez pierwszego gracza wyrazie) wartość zmiennej pozostaleProby zostaje zmniejszona o 1.

Linia 1. while otwórz nawias okrągły pozostaleProby zamknij nawias ostrokątny 0 zamknij nawias okrągły otwórz nawias klamrowy. Linia 2. System kropka out kropka println otwórz nawias okrągły cudzysłów Podaj literę lub całe słowo do sprawdzenia cudzysłów zamknij nawias okrągły średnik. Linia 3. proba znak równości scanner kropka nextLine otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 4. boolean czyZawiera znak równości false średnik. Linia 6. if otwórz nawias okrągły proba kropka length otwórz nawias okrągły zamknij nawias okrągły znak równości znak równości 1 zamknij nawias okrągły otwórz nawias klamrowy. Linia 8. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny wymyslone kropka length otwórz nawias okrągły zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 9. if otwórz nawias okrągły wymyslone kropka charAt otwórz nawias okrągły i zamknij nawias okrągły znak równości znak równości proba kropka charAt otwórz nawias okrągły 0 zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy. Linia 10. czyZawiera znak równości true średnik. Linia 11. break średnik. Linia 12. zamknij nawias klamrowy. Linia 13. zamknij nawias klamrowy. Linia 15. if otwórz nawias okrągły czyZawiera zamknij nawias okrągły otwórz nawias klamrowy. Linia 16. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny wymyslone kropka length otwórz nawias okrągły zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 17. if otwórz nawias okrągły wymyslone kropka charAt otwórz nawias okrągły i zamknij nawias okrągły znak równości znak równości proba kropka charAt otwórz nawias okrągły 0 zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy. Linia 18. odgadywane otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości proba kropka charAt otwórz nawias okrągły 0 zamknij nawias okrągły średnik. Linia 19. zamknij nawias klamrowy. Linia 21. zamknij nawias klamrowy. Linia 22. zamknij nawias klamrowy else otwórz nawias klamrowy. Linia 23. pozostaleProby minus minus średnik. Linia 24. System kropka out kropka println otwórz nawias okrągły cudzysłów Słowo nie zawiera litery cudzysłów plus proba zamknij nawias okrągły średnik. Linia 25. zamknij nawias klamrowy. Linia 26. zamknij nawias klamrowy.

Następnie należy sprawdzić, czy słowo już zostało odgadnięte w całości. Jeżeli nie zawiera ono znaków podkreślenia, wszystkie litery są już znane i można zakończyć proces odgadywania kolejnych liter.

Linia 1. while otwórz nawias okrągły pozostaleProby zamknij nawias ostrokątny 0 zamknij nawias okrągły otwórz nawias klamrowy. Linia 2. System kropka out kropka println otwórz nawias okrągły cudzysłów Podaj literę lub całe słowo do sprawdzenia cudzysłów zamknij nawias okrągły średnik. Linia 3. proba znak równości scanner kropka nextLine otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 4. boolean czyZawiera znak równości false średnik. Linia 6. if otwórz nawias okrągły proba kropka length otwórz nawias okrągły zamknij nawias okrągły znak równości znak równości 1 zamknij nawias okrągły otwórz nawias klamrowy. Linia 8. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny wymyslone kropka length otwórz nawias okrągły zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 9. if otwórz nawias okrągły wymyslone kropka charAt otwórz nawias okrągły i zamknij nawias okrągły znak równości znak równości proba kropka charAt otwórz nawias okrągły 0 zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy. Linia 10. czyZawiera znak równości true średnik. Linia 11. break średnik. Linia 12. zamknij nawias klamrowy. Linia 13. zamknij nawias klamrowy. Linia 15. if otwórz nawias okrągły czyZawiera zamknij nawias okrągły otwórz nawias klamrowy. Linia 16. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny wymyslone kropka length otwórz nawias okrągły zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 17. if otwórz nawias okrągły wymyslone kropka charAt otwórz nawias okrągły i zamknij nawias okrągły znak równości znak równości proba kropka charAt otwórz nawias okrągły 0 zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy. Linia 18. odgadywane otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości proba kropka charAt otwórz nawias okrągły 0 zamknij nawias okrągły średnik. Linia 19. zamknij nawias klamrowy. Linia 21. zamknij nawias klamrowy. Linia 22. zamknij nawias klamrowy else otwórz nawias klamrowy. Linia 23. pozostaleProby minus minus średnik. Linia 24. System kropka out kropka println otwórz nawias okrągły cudzysłów Słowo nie zawiera litery cudzysłów plus proba zamknij nawias okrągły średnik. Linia 25. zamknij nawias klamrowy. Linia 27. czyOdgadniete znak równości true średnik. Linia 29. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny odgadywane kropka length średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 30. if otwórz nawias okrągły odgadywane otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości znak równości apostrof podkreślnik apostrof zamknij nawias okrągły otwórz nawias klamrowy. Linia 31. czyOdgadniete znak równości false średnik. Linia 32. break średnik. Linia 33. zamknij nawias klamrowy. Linia 34. zamknij nawias klamrowy. Linia 36. if otwórz nawias okrągły czyOdgadniete znak równości znak równości true zamknij nawias okrągły otwórz nawias klamrowy. Linia 37. break średnik. Linia 38. zamknij nawias klamrowy. Linia 39. zamknij nawias klamrowy else if otwórz nawias okrągły proba kropka length otwórz nawias okrągły zamknij nawias okrągły zamknij nawias ostrokątny 1 zamknij nawias okrągły otwórz nawias klamrowy. Linia 41. zamknij nawias klamrowy. Linia 42. zamknij nawias klamrowy.

Zdefiniujmy teraz operacje, które mają zostać wykonane w przypadku, gdy nie została wprowadzona pojedyncza litera, tylko ciąg znaków.

Linia 1. while otwórz nawias okrągły pozostaleProby zamknij nawias ostrokątny 0 zamknij nawias okrągły otwórz nawias klamrowy. Linia 2. System kropka out kropka println otwórz nawias okrągły cudzysłów Podaj literę lub całe słowo do sprawdzenia cudzysłów zamknij nawias okrągły średnik. Linia 3. proba znak równości scanner kropka nextLine otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 4. boolean czyZawiera znak równości false średnik. Linia 6. if otwórz nawias okrągły proba kropka length otwórz nawias okrągły zamknij nawias okrągły znak równości znak równości 1 zamknij nawias okrągły otwórz nawias klamrowy. Linia 8. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny wymyslone kropka length otwórz nawias okrągły zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 9. if otwórz nawias okrągły wymyslone kropka charAt otwórz nawias okrągły i zamknij nawias okrągły znak równości znak równości proba kropka charAt otwórz nawias okrągły 0 zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy. Linia 10. czyZawiera znak równości true średnik. Linia 11. break średnik. Linia 12. zamknij nawias klamrowy. Linia 13. zamknij nawias klamrowy. Linia 15. if otwórz nawias okrągły czyZawiera zamknij nawias okrągły otwórz nawias klamrowy. Linia 16. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny wymyslone kropka length otwórz nawias okrągły zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 17. if otwórz nawias okrągły wymyslone kropka charAt otwórz nawias okrągły i zamknij nawias okrągły znak równości znak równości proba kropka charAt otwórz nawias okrągły 0 zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy. Linia 18. odgadywane otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości proba kropka charAt otwórz nawias okrągły 0 zamknij nawias okrągły średnik. Linia 19. zamknij nawias klamrowy. Linia 21. zamknij nawias klamrowy. Linia 22. zamknij nawias klamrowy else otwórz nawias klamrowy. Linia 23. pozostaleProby minus minus średnik. Linia 24. System kropka out kropka println otwórz nawias okrągły cudzysłów Słowo nie zawiera litery cudzysłów plus proba zamknij nawias okrągły średnik. Linia 25. zamknij nawias klamrowy. Linia 27. czyOdgadniete znak równości true średnik. Linia 29. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny odgadywane kropka length średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 30. if otwórz nawias okrągły odgadywane otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości znak równości apostrof podkreślnik apostrof zamknij nawias okrągły otwórz nawias klamrowy. Linia 31. czyOdgadniete znak równości false średnik. Linia 32. break średnik. Linia 33. zamknij nawias klamrowy. Linia 34. zamknij nawias klamrowy. Linia 36. if otwórz nawias okrągły czyOdgadniete znak równości znak równości true zamknij nawias okrągły otwórz nawias klamrowy. Linia 37. break średnik. Linia 38. zamknij nawias klamrowy. Linia 39. zamknij nawias klamrowy else if otwórz nawias okrągły proba kropka length otwórz nawias okrągły zamknij nawias okrągły zamknij nawias ostrokątny 1 zamknij nawias okrągły otwórz nawias klamrowy. Linia 40. if otwórz nawias okrągły proba kropka equals otwórz nawias okrągły wymyslone zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy. Linia 41. czyOdgadniete znak równości true średnik. Linia 42. break średnik. Linia 43. zamknij nawias klamrowy else otwórz nawias klamrowy. Linia 44. pozostaleProby minus minus średnik. Linia 45. System kropka out kropka println otwórz nawias okrągły cudzysłów Pozostałe życia dwukropek cudzysłów plus pozostaleProby zamknij nawias okrągły średnik. Linia 46. zamknij nawias klamrowy. Linia 47. zamknij nawias klamrowy. Linia 48. zamknij nawias klamrowy.

Sprawdzane jest, czy ciąg znaków, który podał gracz, zgadza się z wymyślonym słowem. Jeżeli tak, algorytm kończy działanie. W przeciwnym przypadku zmniejsza się liczba pozostałych prób.

Po wyjściu z pętli while wyświetlany jest końcowy komunikat o wynikach rozgrywki:

Linia 1. if otwórz nawias okrągły wykrzyknik czyOdgadniete zamknij nawias okrągły otwórz nawias klamrowy. Linia 2. System kropka out kropka println otwórz nawias okrągły cudzysłów Niestety nie udało ci się odgadnąć słowa cudzysłów zamknij nawias okrągły średnik. Linia 3. zamknij nawias klamrowy else otwórz nawias klamrowy. Linia 4. System kropka out kropka println otwórz nawias okrągły cudzysłów Udało ci się odgadnąć słowo wykrzyknik cudzysłów zamknij nawias okrągły średnik. Linia 5. zamknij nawias klamrowy.

Oto kod całego programu:

Linia 1. import java kropka util kropka Scanner średnik. Linia 3. public class GraWisielec otwórz nawias klamrowy. Linia 5. public static void main otwórz nawias okrągły String otwórz nawias kwadratowy zamknij nawias kwadratowy args zamknij nawias okrągły otwórz nawias klamrowy. Linia 7. int pozostaleProby znak równości 8 średnik. Linia 8. String wymyslone znak równości cudzysłów cudzysłów średnik. Linia 10. Scanner scanner znak równości new Scanner otwórz nawias okrągły System kropka in zamknij nawias okrągły średnik. Linia 11. wymyslone znak równości scanner kropka nextLine otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 13. char otwórz nawias kwadratowy zamknij nawias kwadratowy odgadywane znak równości new char otwórz nawias kwadratowy wymyslone kropka length otwórz nawias okrągły zamknij nawias okrągły zamknij nawias kwadratowy średnik. Linia 15. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny wymyslone kropka length otwórz nawias okrągły zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 16. odgadywane otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości apostrof podkreślnik apostrof średnik. Linia 17. zamknij nawias klamrowy. Linia 19. System kropka out kropka println otwórz nawias okrągły odgadywane zamknij nawias okrągły średnik. Linia 20. boolean czyOdgadniete znak równości false średnik. Linia 21. String proba średnik. Linia 23. while otwórz nawias okrągły pozostaleProby zamknij nawias ostrokątny 0 zamknij nawias okrągły otwórz nawias klamrowy. Linia 24. System kropka out kropka println otwórz nawias okrągły cudzysłów Podaj literę lub całe słowo do sprawdzenia cudzysłów zamknij nawias okrągły średnik. Linia 25. proba znak równości scanner kropka nextLine otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 26. boolean czyZawiera znak równości false średnik. Linia 28. if otwórz nawias okrągły proba kropka length otwórz nawias okrągły zamknij nawias okrągły znak równości znak równości 1 zamknij nawias okrągły otwórz nawias klamrowy. Linia 30. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny wymyslone kropka length otwórz nawias okrągły zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 31. if otwórz nawias okrągły wymyslone kropka charAt otwórz nawias okrągły i zamknij nawias okrągły znak równości znak równości proba kropka charAt otwórz nawias okrągły 0 zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy. Linia 32. czyZawiera znak równości true średnik. Linia 33. break średnik. Linia 34. zamknij nawias klamrowy. Linia 35. zamknij nawias klamrowy. Linia 37. if otwórz nawias okrągły czyZawiera zamknij nawias okrągły otwórz nawias klamrowy. Linia 38. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny wymyslone kropka length otwórz nawias okrągły zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 39. if otwórz nawias okrągły wymyslone kropka charAt otwórz nawias okrągły i zamknij nawias okrągły znak równości znak równości proba kropka charAt otwórz nawias okrągły 0 zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy. Linia 40. odgadywane otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości proba kropka charAt otwórz nawias okrągły 0 zamknij nawias okrągły średnik. Linia 41. zamknij nawias klamrowy. Linia 43. zamknij nawias klamrowy. Linia 44. zamknij nawias klamrowy else otwórz nawias klamrowy. Linia 45. pozostaleProby minus minus średnik. Linia 46. System kropka out kropka println otwórz nawias okrągły cudzysłów Słowo nie zawiera litery cudzysłów plus proba zamknij nawias okrągły średnik. Linia 47. zamknij nawias klamrowy. Linia 49. czyOdgadniete znak równości true średnik. Linia 51. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny odgadywane kropka length średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 52. if otwórz nawias okrągły odgadywane otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości znak równości apostrof podkreślnik apostrof zamknij nawias okrągły otwórz nawias klamrowy. Linia 53. czyOdgadniete znak równości false średnik. Linia 54. break średnik. Linia 55. zamknij nawias klamrowy. Linia 56. zamknij nawias klamrowy. Linia 58. if otwórz nawias okrągły czyOdgadniete znak równości znak równości true zamknij nawias okrągły otwórz nawias klamrowy. Linia 59. break średnik. Linia 60. zamknij nawias klamrowy. Linia 61. zamknij nawias klamrowy else if otwórz nawias okrągły proba kropka length otwórz nawias okrągły zamknij nawias okrągły zamknij nawias ostrokątny 1 zamknij nawias okrągły otwórz nawias klamrowy. Linia 62. if otwórz nawias okrągły proba kropka equals otwórz nawias okrągły wymyslone zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy. Linia 63. czyOdgadniete znak równości true średnik. Linia 64. break średnik. Linia 65. zamknij nawias klamrowy else otwórz nawias klamrowy. Linia 66. pozostaleProby minus minus średnik. Linia 67. System kropka out kropka println otwórz nawias okrągły cudzysłów Pozostałe życia dwukropek cudzysłów plus pozostaleProby zamknij nawias okrągły średnik. Linia 68. zamknij nawias klamrowy. Linia 69. zamknij nawias klamrowy. Linia 71. System kropka out kropka println otwórz nawias okrągły odgadywane zamknij nawias okrągły średnik. Linia 72. System kropka out kropka println otwórz nawias okrągły cudzysłów Pozostałe życia dwukropek cudzysłów plus pozostaleProby zamknij nawias okrągły średnik. Linia 73. zamknij nawias klamrowy. Linia 75. if otwórz nawias okrągły wykrzyknik czyOdgadniete zamknij nawias okrągły otwórz nawias klamrowy. Linia 76. System kropka out kropka println otwórz nawias okrągły cudzysłów Niestety nie udało ci się odgadnąć słowa cudzysłów zamknij nawias okrągły średnik. Linia 77. zamknij nawias klamrowy else otwórz nawias klamrowy. Linia 78. System kropka out kropka println otwórz nawias okrągły cudzysłów Udało ci się odgadnąć słowo wykrzyknik cudzysłów zamknij nawias okrągły średnik. Linia 79. zamknij nawias klamrowy. Linia 80. zamknij nawias klamrowy. Linia 81. zamknij nawias klamrowy.

Słownik

instrukcja warunkowa
instrukcja warunkowa

element algorytmu pozwalający na sprawdzenie jednego lub kilku warunków, a następnie zdefiniowanie, jakie czynności mają być wykonane, jeśli dane warunki są spełnione lub niespełnione (służy do sterowania programem)

łańcuch znaków
łańcuch znaków

ciąg znaków o ustalonej wcześniej lub dowolnej długości, gdzie znaki to kolejno zapisane bajty w pamięci