Skip to content

Zgadywanie liczb przez komputer – JAVA

Druga część zadania z liczbami. Tym razem zgadywanie liczb przez komputer w Javie.

W pierwszym zadaniu komputer „pomyślał” liczbę, a użytkownik miał ją zgadnąć. Tym razem odwracamy sytuację. Użytkownik wybiera liczbę, a komputer próbuje ją zgadnąć. Oczywiście, są tu dwa warunki, o których trzeba pamiętać:

  • limit – z jakiego zakresu użytkownik wybiera liczbę. My założyliśmy przedział od 1 do 1000;
  • po każdym strzale komputera, użytkownik musi mu podpowiedzieć, czy pomyślana liczba jest mniejsza czy większa, a gdy ją trafi musi o tym powiedzieć

Zgadywanie liczb przez użytkownika

Zgadywanie liczb przez komputer

Jak powinien wyglądać, cały proces?

  1. Najpierw prosimy użytkownika, aby pomyślał liczbę od 1 do 1000
  2. Ustalamy wzór, na podstawie którego, komputer będzie typował liczbę
  3. Komputer przekazuje swój strzał i czeka na odpowiedź użytkownika
  4. Jeśli liczba jest za mała lub za duża, zmieniamy zakres z jakiego komputer ma trafiać liczbę. Komputer ponawia strzał
  5. Proces powtarza się do momentu wybrania właściwej liczby.

Ja najpierw przygotowałem program, w której użytkownik wpisywał liczbę w konsolę, a komputer ją porównywał ze swoimi strzałami. To było robocze rozwiązanie, które nie spełniało założeń biznesowych. Właściwy kod, rozpoczynamy od dwóch komunikatów i ustalenia dolnej granicy przedziału i górnej:

W ostatniej linii przekazujemy do metody liczby z zakresu.

Najpierw deklarujemy dwie wartości – jedna będzie odpowiadać za liczbę, którą zgadujemy, a druga za podliczanie, w ilu ruchach komputer trafi (int count). Następnie tworzymy nieskończoną pętlę, która rozpoczyna się zainicjowaniem wzoru:

guessNum = ((max – min) / 2) + min;

Dla pierwszego trafienia byłoby to więc guessNum = ((1000-1)/2) + 1, czyli guessNum = 500. Użytkownik musi wtedy określić, czy liczba jest za mała, za duża czy to ta przez niego wymyślona. Jeśli wartość wpisana w konsolę równa się „Mniej” to maksymalny zakres przyjmuje wartość wskazanej przez komputer liczby. Jeśli wartość wpisana w konsolę równa się „Więcej” to zmienia się minimalny zakres liczby.

W związku z tym, że cały czas jesteśmy w pętli, to do momentu, gdy użytkownik nie wpiszę „Ok” proces będzie się powtarzał. Gdy komputer trafi liczbę i użytkownik to potwierdzi, to pętla zostanie zakończona.

Co można tu jeszcze poprawić?

W tej chwili, za każdym razem, gdy zostanie wykonana pętla, to zwiększa się liczba trafień. Jeśli użytkownik będzie poprawnie wpisywał komunikaty, to nie ma problemu, ale jeśli zrobi w nich błąd (np. brak polskiego znaku) to liczba trafień się zwiększy, ale komputer nie dostanie podpowiedzi.

***

Wszystkie teksty poświęcone nauce programowania znajdziesz TUTAJ.

Published inDEV