3. vaje: TAROK (16.03. - 23.03.)

Napišite razred Tarok in v njem statične metode za delo s tarok kartami. Natančneje:

a) V razredu Tarok deklarirajte in inicializirajte naslednje spremenljivke in tabele:

static char pik = '\u2660'; // ♠
static char kriz = '\u2663'; // ♣
static char srce = '\u2665'; // ♥
static char karo = '\u2666'; // ♦

static char barve[] = {srce, karo, kriz, pik};
static String prazneRdece[] = {"1", "2", "3", "4"};
static String prazneCrne[] = {"7", "8", "9", "10"};

static String figure[] = {"Fant", "Kaval", "Dama", "Kralj"};

static String taroki[] = {
             "I", "II", "III", "IIII", "V", "VI", "VII",
             "VIII", "IX", "X", "XI", "XII", "XIII", "XIV",
             "XV", "XVI", "XVII", "XVIII", "XIX", "XX",
             "XXI", "SKIS"
};


b) Napišite metodo static String[] ustvariKarte(), ki ustvari tabelo velikosti 54 in jo napolni z vsemi tarok kartami; karte naj bodo nizi take oblike: "♥1", "♣Kaval", "♠Kralj", "XII", "SKIS" in podobno. Metoda ustvariKarte() naj bo kar se da "pametna": namesto direktnega "ročnega" polnjenja tabele uporabite, na primer, zanko po vseh barvah in podobno.

c) Napišite metodo static void izpisi(String karte[]), ki karte izpiše na zaslon. Ob zaporedju klicev
String karte[] = ustvariKarte();
izpisi(karte);

naj bo izpis na zaslon tak:

♥1 ♥2 ♥3 ♥4 ♥Fant ♥Kaval ♥Dama ♥Kralj
♦1 ♦2 ♦3 ♦4 ♦Fant ♦Kaval ♦Dama ♦Kralj
♣7 ♣8 ♣9 ♣10 ♣Fant ♣Kaval ♣Dama ♣Kralj
♠7 ♠8 ♠9 ♠10 ♠Fant ♠Kaval ♠Dama ♠Kralj
I II III IIII V VI VII VIII
IX X XI XII XIII XIV XV XVI
XVII XVIII XIX XX XXI SKIS

d) Napišite metodo static void premesajKarte(String karte[], int koliko), ki premeša karte; to naj naredi tako, da koliko-krat zamenja naključni dve karti. Ob zaporedju klicev:

String karte[] = ustvariKarte();
premesajKarte(karte, 200);
izpisi(karte);

naj bo izpis na zaslon tak (vrstni red bo seveda drug):


XIV ♣7 ♠7 ♥Kaval VI ♠Fant XI XVI
VIII ♥1 ♣Dama IIII ♥3 II ♣8 VII
♦Dama X ♠Kaval SKIS ♥Kralj ♥2 XII ♠8
♠Dama ♣9 ♥4 ♠Kralj V ♦1 XXI ♣Kralj
♦Fant ♠10 ♥Fant ♣Kaval ♠9 ♥Dama XV ♣Fant
XIII ♦4 XVII ♦2 III ♦Kralj XIX XX
I ♦3 XVIII ♦Kaval IX ♣10

e) Napišite metodo static int preprostoStetje(String karte[]) za preprosto štetje tarok kart (karte so vredne toliko, kot je vredna vsota posamezne karte; za vrednost posamezne karte glej zgoraj omenjeno wiki stran).

f) Napišite metodo static int natancnoStetje(String karte[], boolean izpis, int z, int k), ki prešteje karte po tarok pravilih. Pri tem naj prešteje samo del kart (karte od vključno z-te pa do vključno (k-1)-te karte iz tabele). Če je parameter izpis==true, naj metoda pri štetju izpisuje tudi trojke in njihovo vrednost. Ob zaporedju klicev
String karte[] = ustvariKarte();
premesajKarte(karte, 200);

System.out.println("Prvi kup kart:");
int kupcek1= natancnoStetje(karte, true, 0, 25);

System.out.println("Drugi kup kart:");
int kupcek2= natancnoStetje(karte, true, 25, 54);

System.out.println("Natancno stetje 1. kupa kart: " + kupcek1);
System.out.println("Natancno stetje 2. kupa kart: " + kupcek2);


naj bo izpis, na primer, tak:

Prvi kup kart:
♠9 ♣7 ♦1 1
VII ♥3 II 1
XVI ♦Dama ♠Kralj 8
XXI IIII ♠7 5
♥Kaval ♣Kaval IX 5
♥Fant ♣Fant XIV 3
♠8 VI ♦Kralj 5
♥Dama ♦3 XII 4
♣10 0
Drugi kup kart:
XIX ♣9 ♦Fant 2
♥Kralj ♥4 ♣Dama 8
V ♣8 ♠Kaval 3
XI XIII ♦Kaval 3
I ♠Fant ♦2 6
♦4 XV ♣Kralj 5
XX X VIII 1
XVIII ♠10 III 1
♠Dama XVII ♥2 4
♥1 SKIS 5
Natancno stetje 1. kupa kart: 32
Natancno stetje 2. kupa kart: 38