Jak zapewne każdy z was przekonał się na własnej skórze, nauka czegokolwiek w oparciu tylko o samą teorię może doprowadzić do załamania nerwowego, rozstroju żołądka itd.;p Dlatego postanowiłem napisać artykuł, a właściwie tutorial, który pozwoli wykorzystać podstawy Javy do napisania zabójczo prostej gry Zgadnij liczbę
. Cel gry jest prosty. Aplikacja losuje liczbę z określonego przedziału a następnie użytkownik próbuje ją zgadnąć. Jeśli się pomyli, program daje mu wskazówkę: szukana liczba jest mniejsza/większa (w zależności od sytuacji). Zabawa trwa dopóki nie znajdziemy szukanej liczby. Na końcu aplikacja wyświetla komunikat informujący o tym, za którym razem udało nam się zgadnąć liczbę. Tak więc bierzemy się do pracy:).
Kod źródłowy krok po kroku
Na początek informacja. Pełny kod źródłowy aplikacji Zgadnij liczbę dostępny jest również w dziale kodów źródłowych.
Na początku szkielet naszej aplikacji (jeśli korzystamy z jakiegoś IDE np. Eclipse'a, czynność ta zostanie wykonana automatycznie, jeśli uaktywnimy odpowiednie opcje dostępne na ekranie tworzenia klasy):
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Random;
public class ZgadnijLiczbe
{
/**
* @param args
* @throws IOException
* @throws NumberFormatException
*/
public static void main(String[] args) throws NumberFormatException, IOException
{
// TODO Auto-generated method stub
}
}
Na powyższym listingu dodałem już niezbędne importy:
- java.io.BufferedReader - klasa zawierająca obiekt BufferedReader.
- java.io.IOException - klasa zawierająca obsługę błędów wejścia/wyjścia.
- java.io.InputStreamReader - klasa obsługująca strumień wejściowy aplikacji.
- java.util.Random - klasa pozwalająca na generowanie losowych wartości.
W kolejnym kroku utworzyłem już publiczną klasę ZgadnijLiczbe i zadeklarowałem główną metodę aplikacji. Metoda main rzuca dwa wyjątki: NumberFormatException (błędny format liczby) i IOException (błąd wejścia/wyjścia).
Następnym etapem jest utworzenie i inicjalizacja niezbędnych obiektów i zmiennych. Poniższy kod wklejamy wewnątrz funkcji main:
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); boolean wynik = false; int ktory_raz=1; Random rand = new Random(); int liczba = rand.nextInt(100);
Obiekt reader pozwala na odczyt danych wprowadzonych z klawiatury. Zmienna wynik informuje nas czy padła prawidłowa odpowiedź (na początku musi być ustawiona na false). Zmienna ktory_raz, przechowuje informację o ilości prób. Wreszcie obiekt rand generuje losową liczbę z zakresu <0, 100).
Czas przejść do najważniejszej części aplikacji, mianowicie pętli while:
while(wynik==false)
{
System.out.print("Wprowadź liczbę z zakresu 0-100: ");
int zgadnij = Integer.parseInt(reader.readLine());
if(zgadnij==liczba)
{
System.out.println("Znalazłeś szukaną liczbę!!!");
wynik=true;
}
else if (zgadnij>liczba)
{
System.out.println("Podałeś większą liczbę.");
wynik=false;
ktory_raz++;
}
else if (zgadnij<liczba)
{
System.out.println("Podałeś mniejszą liczbę.");
wynik=false;
ktory_raz++;
}
}
Pętla while jest wykonywana dopóki uzytkownik nie zgadnie wylosowanej przez komputer liczby. W linii 3 wyświetlamy zachęcający komunikat, a w linii 4 odczytujemy linię tekstu. Ponieważ funkcja readLine, domyślnie odczytuje stringi należy sparsować wprowadzoną wartość do typu integer. Jeśli użytkownik wprowadzi zamiast liczby np. tekst zostane wyrzucony wcześniej zadeklarowany wyjątek NumberFormatException.
W liniach 5-21 znajduje się instrukcja If sprawdzająca wartość liczby. Mamy trzy sytuacje:
- zgadnij==liczba - użytkownik odgadł liczbę. Należy mu to uzmysłowić drukując stosowny komunikat (linia 7). Musimy koniecznie również ustawic zmienną wynik na true, dzięki czemu opuścimy pętlę while.
- zgadnij > liczba - sytuacja w której użytkownik podał liczbę większą niż szukana. W linii 12 wyświetlamy stosowny komuniktat do zaistniałej sytuacji. W linii 13 ustawiamy zmienną wynik na false, dzieki czemu pętla będzie mogła być dalej iterowana (zasadniczo linię 13 można pominąć, ponieważ zmienna wynik z góry była ustawiona na false. Tutaj została dodana aby poprawić czytelność kodu). Na koniec w linii 14, inkrementujemy zmienną ktory_raz.
- zgadnij < liczba - ostatnia sytuacja występuje gdy użytkownik podał liczbę mniejszą od szukanej. Dlatego powyższy kod, jest praktycznie identyczny z kodem przedstawionym w sytuacji powyżej. Zmienia sie jedynie treśc komunikatu.
Kiedy użytkownik odgadnie liczbę, a tym samym wyjdzie z pętli wyświetlamy komunikat informujący go, za którym razem odgadł liczbę (patrz listing poniżej).
System.out.println("Zgadłeś za "+ktory_raz+" razem.");
Uwagi końcowe
Jak widzicie, aplikacja przedstawiona w tym artykule jest niezwykle prosta. Nie ma tutaj poprawnej obsługi błędów (np. bloku try...catch), czy rozbudowanych konstrukcji w Javie. Zachęcam do eksperymentów i roszerzania kodu.
Komentarze [0] | Jurek



Programista, student informatyki i ekonometrii, pasjonat
informatyki w każdej postaci, dobrych filmów, książek i muzyki, lubiący sport, a przede wszystkim
posiadacz najlepszej blondynki na świecie;)

