Back to Top
 
 

Napisz swoją pierwszą grę!

Gra "Papier-kamień-nożyce"

Spróbujemy napisać prostą grę, w której użytkownik rywalizuje z komputerem. Użytkownik wybiera, a komputer losuje jedną z trzech wartości, po czym są one porównywane, a wynik jest wypisywany na konsoli i zapisywany do tabeli.

Twoim zadaniem będzie uzupełnić kod, który będzie odpowiadał za logikę gry.

Niektóre fragmenty kodu zostały już napisane – są one niezbędne, aby kod dobrze działał, jednakże nie wszystkie poznaliśmy do tej pory – są to tematy bardziej zaawansowane. Na razie poznasz ogólną zasadę ich działania, aby wiedzieć co się dzieje w kodzie.

Uwaga: kod w obecnej postaci się nie kompiluje.

Wszystkie zadania wykonujemy tutaj:

Przejdziemy po kolei przez kod:

  • Na początku widzisz dwie instrukcje importu – jedną z nich pamiętasz zapewne z poprzedniej lekcji, gdy była mowa o pobieraniu danych od użytkownika. Druga udostępni nam funkcjonalności potrzebne do losowania wartości przez komputer.
  • Pod deklaracją metody main widzisz deklarację obiektu klasy Scanner i na tej samej zasadzie – obiektu klasy Random.
 

Możesz zacząć pisać grę!

 

Zadanie

1. Zadeklaruj tablicę, która będzie przechowywać wynik z trzech rund. Zakładamy, że tablica będzie miała elementy typu String (w zależności od wyniku zapisze: wygrana, przegrana lub remis).

2. Następny element to pętla for – użyjemy jej, aby pytanie o wybór pojawiło się trzykrotnie. W wyznaczonym miejscu uzupełnij pętlę for, aby zadziałała w ten sposób.

3. Teraz w pętli przy pomocy konstrukcji System.out.println() wypisz komunikat dla użytkownika informujący, że ma wybrać jakąś wartość. Przykładowa treść.: "Wpisz 1 (papier), 2 (kamień) lub 3 (nożyce)."

Uwaga: Sprawdzenie poprawności wprowadzonych danych jest w naszej grze łatwiejsze, gdy są to liczby, a nie tekst. Dlatego zakładamy, że papier to cyfra 1, kamień jest pod cyfrą 2, a nożyce to cyfra 3.

4. Zadeklaruj zmienną typu String – w niej będziemy przechowywać wartość wpisaną z klawiatury przez użytkownika.

5. Do zadeklarowanej przed chwilą zmiennej przypisz wartość, którą pobierzesz z klawiatury. Kolejne dwie linie kodu mogą wydać się Tobie niezrozumiałe – nie było tych zagadnień w naszych lekcjach, ponieważ obejmują już trochę bardziej zaawansowane kwestie. Ale wyjaśnimy sobie jak działają.

int liczba = Integer.parseInt(wybor);

Powyższy kod służy temu, by odczytaną wartość tekstową zamienić na liczbę. Jak wiemy z poprzedniej lekcji – wiadomość odczytywana z konsoli jest zawsze typu String, dlatego musimy ją zmienić na liczbę, aby później móc w łatwy sposób porównywać. Jak widzisz, zmienną, która była typu String, po odpowiednim przekształceniu, możemy przypisać do zmiennej typu int.

Następna, duża część kodu to będą instrukcje warunkowe. Pierwszy, duży warunek będzie sprawdzał czy wartości wprowadzone przez użytkownika są w odpowiednim zakresie. Jeśli tak – napiszemy kolejne warunki, a jeśli nie – wypiszemy informację, że podana wartość jest spoza zakresu i zakończymy program (w przyszłości – zamiast kończyć program - można dodać funkcjonalność, która sprawi, że będziemy odpytywać użytkownika np. do momentu, aż poda prawidłową wartość).

Główny warunek został już napisany, zajmiemy się jego uzupełnieniem.

6. Na początek napisz instrukcję warunkową, która sprawdzi co wpisał użytkownik i w zależności od wybranej wartości wypisze odpowiedni komunikat na ekran (np. “Wybrałeś kamień”). Pamiętaj, że wartości są u nas ukryte pod cyframi 1, 2 i 3, zatem musisz sprawdzać zmienne liczbowe, a nie tekstowe.

Ważne: indeksy w tablicy zaczynają się od 0

Teraz rozpiszemy następne warunki tak, aby rozstrzygnąć kto wygrał starcie. Można sobie rozpisać schematycznie jakie są opcje w programie:

Komputer wylosował: Użytkownik wybrał: Kto wygrał:
papier papier remis
papier kamień komputer
papier nożyce użytkownik
kamień papier użytkownik
kamień kamień remis
kamień nożyce komputer
nożyce papier komputer
nożyce kamień użytkownik
nożyce nożyce remis

Teraz musimy to zaprogramować. Punktem wyjściowym będzie wybór dokonany przez użytkownika – do niego będziemy porównywać wartość wylosowaną przez komputer.

7. Napisz warunek taki jak w zadaniu 6, ale dla losowań komputera.

8. Następnie, w każdym z tych warunków z zadania 7, zapisz jaki jest wynik w zestawieniu z poszczególnymi wartościami, które może wybrać użytkownik. Wewnątrz warunków umieść instrukcję wyświetlenia komunikatu użytkownikowi – o wygranej, przegranej lub remisie. Nie zapomnij przypisać poszczególnych wartości do zmiennej typu String, przechowującej wynik, którą później zapiszesz do naszej tablicy wyników.

9. Zapisz zmienną z wynikiem do tablicy na miejsce pod odpowiednim indeksem.Użyj do tego zmiennej “i”, która w pętli zmienia wartość przy każdej rundzie.

10. W tym miejscu kodu mamy już wypełnioną tablicę z wynikami. Twoim zadaniem będzie wypisać przy pomocy pętli "for" wartości z całej tablicy.

Gratuluję! Napisałeś/łaś swój pierwszy program

 
 

Potrzebujesz wskazówki?

Zobacz rozwiązanie zadania