Facebook
From mato, 3 Years ago, written in Java.
Embed
Download Paste or View Raw
Hits: 53
  1. import java.util.ArrayList;
  2. import java.util.Collections;
  3. import java.util.Random;
  4. import java.util.Scanner;
  5.  
  6. public class ProjektSorty {
  7.  
  8.  
  9.     static String cyan = "\u001B[36m";
  10.     static String yellow = "\u001B[33m";
  11.     static String reset = "\u001B[0m";
  12.  
  13.     static Random rd = new Random();
  14.     static Scanner sc = new Scanner(System.in);
  15.  
  16.     static String[][] hraciaPlocha = new String[8][11];
  17.     static int[] poleCisel = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
  18.             22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40};
  19.     static int narocnost = 4;
  20.     static boolean chyba = false;
  21.  
  22.     public static void main(String[] args) {
  23.         System.out.println("Hra");
  24.         boolean hrame = true;
  25.         boolean koniecHry = false;
  26.         String pokracuj = "";
  27.         String meno = "";
  28.         String hracNaHladanie = "";
  29.         String vyber = "";
  30.         ArrayList<String> menaASkore = new ArrayList<String>();
  31.         while (true) {
  32.             game(hrame, koniecHry, pokracuj, meno, hracNaHladanie, vyber, menaASkore);
  33.         }
  34.     }
  35.  
  36.     private static void game(boolean hrame, boolean koniecHry,String pokracuj, String meno, String hracNaHladanie, String vyber, ArrayList<String> menaASkore){
  37.         while (!koniecHry) {
  38.             System.out.println("Pred tým ako začneš, zadaj svoje meno, pod ktorým sa neskôr môžeš nájsť: ");
  39.  
  40.             do {
  41.                 meno = sc.nextLine();
  42.                 if (meno.contains(",")) {
  43.                     System.out.println("Meno nesmie obsahovať čiarku, zadaj ho ešte raz: ");
  44.                 }
  45.             } while (meno.contains(","));
  46.  
  47.             reset(pokracuj, meno, vyber);
  48.  
  49.             info();
  50.             while (hrame) {
  51.                 loadArea();
  52.                 genNumbers();
  53.                 vypis();
  54.                 String[][] poleSuradnicPreCisla = new String[narocnost - 1][3];
  55.                 guess(poleSuradnicPreCisla);
  56.                 if (chyba) {
  57.                     break;
  58.                 }
  59.             }
  60.             menaASkore.add((narocnost-1)+","+meno);
  61.             listOfWinners(menaASkore);
  62.             System.out.println("Chceš vyhľadať hráča? ('ano' pre áno): ");
  63.             vyber = sc.nextLine();
  64.             if (vyber.toLowerCase().equals("ano") || vyber.toLowerCase().equals("áno")) {
  65.                 System.out.println("Zadaj meno hráča: ");
  66.                 do {
  67.                     hracNaHladanie = sc.nextLine();
  68.                     if (hracNaHladanie.contains(",")) {
  69.                         System.out.println("Meno nesmie obsahovať čiarku, zadaj ho ešte raz: ");
  70.                     }
  71.                 } while (hracNaHladanie.contains(","));
  72.  
  73.                 int x = linearSearch(menaASkore, hracNaHladanie);
  74.                 if(x!=-1){
  75.                     System.out.println("Zadaný hráč skončil v poradí "+(x+1));
  76.                 }
  77.                 else {
  78.                     System.out.println("Zadané meno neexistuje");
  79.                 }
  80.             }
  81.  
  82.             System.out.println("Chcete pokračovať? Ak áno, zadajte 'ano': ");
  83.             pokracuj = sc.nextLine();
  84.             if (!pokracuj.toLowerCase().equals("ano")) {
  85.                 koniecHry = true;
  86.                 System.exit(0);
  87.             }
  88.         }
  89.     }
  90.  
  91.     private static int linearSearch(ArrayList<String> namesAndScores, String value){
  92.         for(int i = 0; i < namesAndScores.size(); i++){
  93.             if(namesAndScores.get(i).split(",")[1].equals(value)) return i;
  94.         }
  95.         return -1;
  96.     }
  97.  
  98.     private static ArrayList<String> listOfWinners(ArrayList<String> namesAndScores){
  99.         sortListOfWinners(namesAndScores);
  100.         //for (int i = 0; i < namesAndScores.size(); i++) {
  101.         //    System.out.println(namesAndScores.get(i));
  102.         //}
  103.         return namesAndScores;
  104.     }
  105.     private static ArrayList<String> sortListOfWinners(ArrayList<String> namesAndScores){
  106.         Collections.sort(namesAndScores, Collections.reverseOrder());
  107.         return namesAndScores;
  108.         }
  109.  
  110.     private static void reset(String pokracuj, String name, String choise) {
  111.         narocnost = 4;
  112.         pokracuj = "";
  113.         chyba = false;
  114.         name = "";
  115.         choise = "";
  116.     }
  117.  
  118.     private static void info() {
  119.         System.out.println("Pravidlá hry");
  120.         System.out.println("" + yellow + " Zobrazí sa vám hracia plocha a na nej čísla." +
  121.                 "\n Vašou úlohou je zapamätať si čísla a následne" +
  122.                 "\n zapísať súradnice čísel vzostupne.");
  123.         System.out.println(" Ak si myslíš, že si pamätáš všetky pozície čísel, " +
  124.                 "\n klikni na kôš pre vymazanie údajov z konzoly a do konzoly napíš 'ok'. \n Potom môžeš zadávať.");
  125.         System.out.println(" Zadávaj pozíciu najmenšieho čísla v tvare 'číslo, písmeno' napr.(1a) " +
  126.                 "\n a postupne zadávaj pozíciu čísel vždy väčších o jedno, až kým na ploche nebude ani jedno zakryté číslo" + reset);
  127.     }
  128.  
  129.     private static void guess(String[][] poleSuradnicPreCisla) {
  130.         boolean suTamCisla = true;
  131.         boolean temp;
  132.         int pocitadlo = 0;
  133.         String pozicia = "";
  134.  
  135.         String ready = "";
  136.         do {
  137.             System.out.println("Ak si pripravený, zadaj 'ok'.");
  138.             ready = sc.nextLine();
  139.         } while (!(ready.toLowerCase()).equals("ok"));
  140.  
  141.         for (int i = 0; i < hraciaPlocha.length; i++) {
  142.             for (int j = 0; j < hraciaPlocha[i].length; j++) {
  143.                 temp = isNumber(hraciaPlocha[i][j]);
  144.                 if (i != 0 && j != 0 && temp) {
  145.                     poleSuradnicPreCisla[pocitadlo][0] = hraciaPlocha[i][j];
  146.                     poleSuradnicPreCisla[pocitadlo][1] = hraciaPlocha[0][j];
  147.                     poleSuradnicPreCisla[pocitadlo][2] = hraciaPlocha[i][0];
  148.                     pocitadlo++;
  149.                 }
  150.             }
  151.         }
  152.  
  153.         selectionSort(poleSuradnicPreCisla);
  154.         hideNumbers();
  155.         for (int i = 0; i < 100; i++) {
  156.             System.out.println();
  157.         }
  158.         vypis();
  159.         System.out.println("Teraz hádaj pozície čísel: ");
  160.  
  161.         while (suTamCisla) {
  162.             pozicia = sc.nextLine();
  163.             if (!correctCoordinates(poleSuradnicPreCisla, pozicia)) {
  164.                 System.out.println("Zadal si zlé súradnice, prehral si :(");
  165.                 chyba = true;
  166.                 break;
  167.             }
  168.             vypis();
  169.             suTamCisla = checkForNumbers(suTamCisla);
  170.         }
  171.         if (!chyba) {
  172.             System.out.println("Nová uroveň!");
  173.         } else {
  174.             System.out.println("Urobil si chybu, musíš začať od znova.");
  175.         }
  176.     }
  177.  
  178.     private static boolean checkForNumbers(boolean suTamCisla) {
  179.         boolean temp;
  180.         boolean temp2 = false;
  181.         for (int i = 0; i < hraciaPlocha.length; i++) {
  182.             if (temp2) {
  183.                 break;
  184.             }
  185.             for (int j = 0; j < hraciaPlocha[i].length; j++) {
  186.                 temp = isSquare(hraciaPlocha[i][j].charAt(0));
  187.                 if (i != 0 && j != 0 && temp) {
  188.                     temp2 = true;
  189.                     break;
  190.                 } else {
  191.                     temp2 = false;
  192.                 }
  193.             }
  194.         }
  195.         suTamCisla = temp2;
  196.         return suTamCisla;
  197.     }
  198.  
  199.     private static boolean isSquare(char hraciaPlocha) {
  200.         boolean stav;
  201.         if ((hraciaPlocha) == ('⬜')) {
  202.             stav = true;
  203.         } else {
  204.             stav = false;
  205.         }
  206.  
  207.         return stav;
  208.     }
  209.  
  210.     private static String[][] selectionSort(String[][] array) {
  211.         for (int i = 0; i < array.length - 1; i++) {
  212.             int maxIndex = i;
  213.             for (int j = i + 1; j < array.length; j++) {
  214.                 if (Integer.parseInt(array[j][0]) < Integer.parseInt(array[maxIndex][0]))
  215.                     maxIndex = j;
  216.             }
  217.             String tmp = array[i][0];
  218.             String tmp2 = array[i][1];
  219.             String tmp3 = array[i][2];
  220.  
  221.             array[i][0] = array[maxIndex][0];
  222.             array[i][1] = array[maxIndex][1];
  223.             array[i][2] = array[maxIndex][2];
  224.  
  225.             array[maxIndex][0] = tmp;
  226.             array[maxIndex][1] = tmp2;
  227.             array[maxIndex][2] = tmp3;
  228.         }
  229.         return array;
  230.     }
  231.  
  232.     private static void loadArea() {
  233.         int pocitadlo = 1;
  234.         //male "a"
  235.         char pocitadloPreZnaky = 97;
  236.         for (int i = 0; i < hraciaPlocha.length; i++) {
  237.             for (int j = 0; j < hraciaPlocha[i].length; j++) {
  238.                 if (i == 0 && j >= 2 && j != hraciaPlocha[i].length - 1) {
  239.                     hraciaPlocha[i][j] = String.valueOf(pocitadlo);
  240.                     pocitadlo++;
  241.                 } else if (j == 0 && i >= 2 && i != hraciaPlocha.length - 1) {
  242.                     hraciaPlocha[i][j] = String.valueOf(pocitadloPreZnaky);
  243.                     pocitadloPreZnaky++;
  244.                 }
  245.                 else if (i == 1 || i == hraciaPlocha.length - 1) {
  246.                     hraciaPlocha[i][j] = cyan + "#" + reset;
  247.                 } else if (j == 1 || j == hraciaPlocha[i].length - 1) {
  248.                     hraciaPlocha[i][j] = cyan + "#" + reset;
  249.                 } else if (j == 0 && i == 0) {
  250.                     hraciaPlocha[i][j] = cyan + "#" + reset;
  251.                 }
  252.                 else {
  253.                     hraciaPlocha[i][j] = "-";
  254.                 }
  255.             }
  256.         }
  257.     }
  258.  
  259.     private static void genNumbers() {
  260.         ArrayList<String> listVolnychSuradnic = new ArrayList<String>();
  261.         int randomIndex = 0;
  262.         String temp = "";
  263.         for (int i = 0; i < hraciaPlocha.length; i++) {
  264.             for (int j = 0; j < hraciaPlocha[i].length; j++) {
  265.                 if (hraciaPlocha[i][j].equals("-")) {
  266.                     listVolnychSuradnic.add("" + i + "" + j + "");
  267.                 }
  268.             }
  269.         }
  270.         for (int i = 0; i < narocnost; i++) {
  271.             randomIndex = rd.nextInt(listVolnychSuradnic.size());
  272.             temp = listVolnychSuradnic.get(randomIndex);
  273.             listVolnychSuradnic.remove(randomIndex);
  274.             hraciaPlocha[Integer.parseInt(String.valueOf(temp.charAt(0)))]
  275.                     [Integer.parseInt(String.valueOf(temp.charAt(1)))] = String.valueOf(poleCisel[i]);
  276.         }
  277.         narocnost++;
  278.  
  279.     }
  280.  
  281.     private static boolean correctCoordinates(String[][] poleSuradnicPreCisla, String pozicia) {
  282.         boolean spravnaPozicia = false;
  283.         for (int i = 0; i < poleSuradnicPreCisla.length; i++) {
  284.             if (!poleSuradnicPreCisla[i][1].equals("precitane") && !poleSuradnicPreCisla[i][2].equals("precitane")) {
  285.                 if (Character.valueOf(poleSuradnicPreCisla[i][1].charAt(0)) == Character.valueOf(pozicia.charAt(0)) && Character.valueOf(poleSuradnicPreCisla[i][2].charAt(0)) == Character.valueOf(pozicia.charAt(1))) {
  286.                     spravnaPozicia = true;
  287.                     poleSuradnicPreCisla[i][1] = "precitane";
  288.                     poleSuradnicPreCisla[i][2] = "precitane";
  289.                     replaceSquare(pozicia);
  290.                     break;
  291.                 }
  292.             }
  293.         }
  294.         return spravnaPozicia;
  295.     }
  296.  
  297.     private static void replaceSquare(String pozicia) {
  298.         for (int i = 0; i < hraciaPlocha.length; i++) {
  299.             for (int j = 0; j < hraciaPlocha[i].length; j++) {
  300.                 if (Character.valueOf(hraciaPlocha[0][j].charAt(0)) == Character.valueOf(pozicia.charAt(0)) && Character.valueOf(hraciaPlocha[i][0].charAt(0)) == Character.valueOf(pozicia.charAt(1))) {
  301.                     hraciaPlocha[i][j] = "-";
  302.                 }
  303.             }
  304.         }
  305.     }
  306.  
  307.     private static void hideNumbers() {
  308.         boolean temp;
  309.         for (int i = 0; i < hraciaPlocha.length; i++) {
  310.             for (int j = 0; j < hraciaPlocha[i].length; j++) {
  311.                 temp = isNumber(hraciaPlocha[i][j]);
  312.                 if (i != 0 && temp) {
  313.                     hraciaPlocha[i][j] = "⬜";
  314.                 }
  315.             }
  316.         }
  317.     }
  318.  
  319.     private static void vypis() {
  320.         boolean temp;
  321.         int pocetStvorcov = 0;
  322.         int pocetMedzierStvorcov = 1;
  323.         for (int i = 0; i < hraciaPlocha.length; i++) {
  324.             for (int j = 0; j < hraciaPlocha[i].length; j++) {
  325.  
  326.                 temp = isNumber(hraciaPlocha[i][j]);
  327.                 if (i != 0 && j != 0 && temp) {
  328.                     if (Integer.parseInt(hraciaPlocha[i][j]) >= 10) {
  329.                         System.out.print(yellow + hraciaPlocha[i][j] + reset + "  ");
  330.                     } else {
  331.                         System.out.print(yellow + hraciaPlocha[i][j] + reset + "   ");
  332.                     }
  333.  
  334.                 } else if (hraciaPlocha[i][j].equals("⬜")) {
  335.                     for (int k = 0; k < hraciaPlocha[i].length; k++) {
  336.                         if (hraciaPlocha[i][k].equals("⬜")) {
  337.                             pocetStvorcov++;
  338.                         }
  339.                     }
  340.                     if (pocetStvorcov > 1 && pocetMedzierStvorcov % 2 == 0) {
  341.                         System.out.print(hraciaPlocha[i][j] + "  ");
  342.                         pocetStvorcov++;
  343.                     } else {
  344.                         System.out.print(hraciaPlocha[i][j] + "   ");
  345.                         pocetMedzierStvorcov++;
  346.                     }
  347.                 } else {
  348.                     System.out.print(hraciaPlocha[i][j] + "   ");
  349.                 }
  350.             }
  351.             System.out.println();
  352.         }
  353.     }
  354.  
  355.     private static boolean isNumber(String udaj) {
  356.         boolean stav = false;
  357.         try {
  358.             Integer.parseInt(String.valueOf(udaj));
  359.             stav = true;
  360.         } catch (NumberFormatException e) {
  361.             stav = false;
  362.         }
  363.         return stav;
  364.     }
  365.  
  366. }