Menu

Jak naprogramovat hru – Hádej číslo v javě

28. 9. 2018 - Daniel Bulant - Java tutoriály
Jak naprogramovat hru – Hádej číslo v javě

Co budeme potřebovat?

V tomto tutoriálu budu pracovat s Apache NetBeans 9.0(ke stažení zde, windows uživatelé stáhnou binaries, mac os stáhne macOSX bundle) a Java JRE  8u181  určenou na windows 10 64-bit. 

Nejdříve si vytvořte nový projekt (v NetBeans ctrl+shift+N neboli file > new project) Java application který si uložíme na disk.

Takto si vytvoříme projekt

Poté se nám vytvoří předdefinovaný soubor pojmenovaný Hádej-číslo:

a otevře takovýto projekt

Nyní přidáme dva důležité importy:

import java.util.Scanner;
import java.util.concurrent.ThreadLocalRandom;

Poté si přidáme naše proměnné, nejdříve na generování samotného čísla:

    static Integer randomNum = ThreadLocalRandom.current().nextInt(1, 100 + 1);

a poté i na barvy textu:

    //barvy
    public static final String ANSI_RESET = "\u001B[0m";
    public static final String ANSI_BLACK = "\u001B[30m";
    public static final String ANSI_RED = "\u001B[31m";
    public static final String ANSI_GREEN = "\u001B[32m";
    public static final String ANSI_YELLOW = "\u001B[33m";
    public static final String ANSI_BLUE = "\u001B[34m";
    public static final String ANSI_PURPLE = "\u001B[35m";
    public static final String ANSI_CYAN = "\u001B[36m";
    public static final String ANSI_WHITE = "\u001B[37m";

A naše „hra“ bude vypadat nějak takto:

Takto by měl vypadat kód s proměnnými

Teď si vytvoříme funkci na získání vstupu uživatele:

    public static String ask(String input){
        echo(input);
                String readed = null;
        Scanner reader = new Scanner(System.in);  // získání vstupu
        if(reader.hasNext()){
            readed = reader.nextLine();
        } else {
            echo("chyba");
        }
        if(readed != null){
            return readed;
        } else {
            return null;
        }
    }

a funkci na vypsání textu:

    public static void echo(String input){
        System.out.println(input);
    }

Tím by jsme měli základní funkce. Nyní si vytvoříme samotnou funkci na porovnání:

    public static String checkNum(Integer number){
        if(number > randomNum){
            return "bigger";
        } 
        if(number < randomNum){
            return "smaller";
        }
        if(number == randomNum){
            return "equal";
        }
        return "error";
    }

Teď již máme všechny potřebné funkce naprogramovány. teď již pouze napsat poslední část kódu a budeme mít hotovo:


    public static void tryFind(){
       String returned = checkNum(Integer.parseInt(ask(ANSI_CYAN+"Hádej číslo"+ANSI_RESET+ANSI_BLUE)));
       switch(returned){
           case "bigger":
               echo(ANSI_RESET+ANSI_RED+"Tvoje číslo je moc velké!"+ANSI_RESET);
               tryFind();
               break;
           case "smaller":
               echo(ANSI_RESET+ANSI_RED+"Tvoje číslo je moc malé!"+ANSI_RESET);
               tryFind();
               break;
           case "equal":
               echo(ANSI_RESET+ANSI_GREEN+"Uhodl jsi!"+ANSI_RESET);
               break;
       }
    }

Tím by jsme měli kód kompletně hotový. Měl by vypadat nějak takto:


package hádej.číslo;

import java.util.Scanner;
import java.util.concurrent.ThreadLocalRandom;

/* @author TheTutorials */
public class HádejČíslo {
    static Integer randomNum = ThreadLocalRandom.current().nextInt(1, 100 + 1);
    static boolean debug = false;
    
    //barvy
    public static final String ANSI_RESET = "\u001B[0m";
    public static final String ANSI_BLACK = "\u001B[30m";
    public static final String ANSI_RED = "\u001B[31m";
    public static final String ANSI_GREEN = "\u001B[32m";
    public static final String ANSI_YELLOW = "\u001B[33m";
    public static final String ANSI_BLUE = "\u001B[34m";
    public static final String ANSI_PURPLE = "\u001B[35m";
    public static final String ANSI_CYAN = "\u001B[36m";
    public static final String ANSI_WHITE = "\u001B[37m";
    
    public static void main(String[] args) {
        tryFind();
    }
        public static void tryFind(){
       String returned = checkNum(Integer.parseInt(ask(ANSI_CYAN+"Hádej číslo"+ANSI_RESET+ANSI_BLUE)));
       switch(returned){
           case "bigger":
               echo(ANSI_RESET+ANSI_RED+"Tvoje číslo je moc velké!"+ANSI_RESET);
               tryFind();
               break;
           case "smaller":
               echo(ANSI_RESET+ANSI_RED+"Tvoje číslo je moc malé!"+ANSI_RESET);
               tryFind();
               break;
           case "equal":
               echo(ANSI_RESET+ANSI_GREEN+"Uhodl jsi!"+ANSI_RESET);
               break;
       }
    }
            public static String checkNum(Integer number){
        if(number > randomNum){
            return "bigger";
        } 
        if(number < randomNum){
            return "smaller";
        }
        if(number == randomNum){
            return "equal";
        }
        return "error";
    }
    public static String ask(String input){
        echo(input);
                String readed = null;
        Scanner reader = new Scanner(System.in);  // Reading from System.in
        if(reader.hasNext()){
            readed = reader.nextLine();
        } else {
            echo("error");
        }
        if(readed != null){
            return readed;
        } else {
            return null;
        }
    }
    public static void echo(String input){
        System.out.println(input);
    }
    
}

Hurá! Máme vlastní hru! Zkusme si ji zahrát…

Můžete si zahrát vaší verzi Hádej číslo. Gratuluji!
Štítky: , , ,

Napsat komentář