Diskuze: Prosím o radu s kódem

Koš Prosím o radu s kódem

Aktivity (1)
Avatar
Petr Šenfeld:6. července 20:02

Čau,
jsem samouk a začal jsem tady na IT-network úpně od nuly. S dosavadními znalostmi, což je Základy JAVA + 7 lekcí OOP se snažím naprogramovat jednoduchý "BlackJack", zatím jen v konzoli, protože dál jsem se ještě nedostal. Po 7h patlání a různého zkoušení už nevím co dál. K problému..

Ad1)Netuším jak propsat hodnotaH do třídy Dealer, tak aby se mi tam ukládala hodnota a šla vypsat viz. vysledek() ve třídě Dealer. Myslel jsem, že to půjde, když podědím třídu Hrac. Vše funguje, zřejmě ne dle programátorských "pravidel a nějaké přehlednosti" ale k tomu se nějak časem dopracuji.

Ad2) Občas je výsledek 22 program to nezastaví ale někdy je 22 a program se zachová jak má. Netuším čím to je.

Ad3) Když zvolím volbu 2 (stačí) tak mi to v konzoli vůbec nevypíše "stačí".

Snad jsem to dobře popsal. Kód dám do komentáře.
Díky za radu.

Zkusil jsem: Dosavadní řešení je funční avšak nemohu použít metodu vysledek() ze třídy Dealer a musím výsledek psát bez použití OOP v main().

Chci docílit: Využít plně OOP a použít vysledek() ve třídě Dealer a následně jen v main() zavolat dealer.vysledek() namísto původního vypisování...

 
Odpovědět 6. července 20:02
Avatar
Petr Šenfeld:6. července 20:03

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package blackjack;

import java.util.Scanner;
import java.util.Random;

/**
*
* @author senfik
*/
public class BlackJack {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Scanner sc = new Scanner(System.in, "Windows-1250");
Hrac hrac = new Hrac();
Dealer dealer = new Dealer();
String znovu1 = "1";
while (znovu1.equal­s("1")) {
hrac.hra();
dealer.turn();
dealer.vysledek();

System.out.prin­tln("");
System.out.prin­tln("dealer má " + dealer.hodnotaD);
System.out.prin­tln("hráč má "+ hrac.hodnotaH);

if(hrac.hodnotaH > dealer.hodnotaD) {
System.out.prin­tln("\nVyhrál jsi kámo!!!!\n");
}
else if (hrac.hodnotaH == dealer.hodnotaD){
System.out.prin­tln("Stejně!!");
}
else if(dealer.hodnotaD >21){
System.out.prin­tln("");
}
else
{
System.out.prin­tln("Prohrál si bro...");
}
System.out.prin­tln("Chceš znovu hrát?? 1ano/2ne");
znovu1 = sc.nextLine();
dealer.hodnotaD = 0;
hrac.hodnotaH = 0;

}
System.out.prin­tln("díky za hru :-)");
}

}

 
Nahoru Odpovědět 6. července 20:03
Avatar
Petr Šenfeld:6. července 20:03

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package blackjack;
import java.util.Random;
/**
*
* @author senfik
*/
public class Dealer {
public int hodnotaD;
private int pocetKaret;
private Random random;
public int hodnotaH;

public Dealer() {
pocetKaret = 10;
random = new Random();
}
public void turn() {
if(hodnotaD < 17&& hodnotaD <22){
while(hodnotaD < 17 && hodnotaD <22){
hodnotaD = hodnotaD + random.nextInt;
if(hodnotaD < 22) {
hodnotaD++;
System.out.prin­tf("Dealer má: %s\n",hodnotaD);
try {
Thread.sleep(500);
}
catch (InterruptedEx­ception ex) {
System.err.prin­tln("error");
}
}
else{
System.out.prin­tf("Dealer má: %s PŘES!!\n ",hodnotaD);
}
}
}
}
public void vysledek() {
if(hodnotaD >21)
System.out.prin­tln("Vyhrál jsi!!!!");
/*if(hodnotaH > hodnotaD) {
System.out.prin­tln("Vyhrál jsi kámo");
}
else
{
System.out.prin­tln("Prohrál si bro...");
}
*/

}
}

 
Nahoru Odpovědět 6. července 20:03
Avatar
Petr Šenfeld:6. července 20:03

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package blackjack;
import java.util.Scanner;
import java.util.Random;

/**
*
* @author senfik
*/
public class Hrac extends Dealer {
public int hodnotaH;
private int pocetKaret;
private Random random;
Scanner sc = new Scanner(System.in, "Windows-1250");

public Hrac() {
pocetKaret = 10;
random = new Random();
}

public void kartu() {
hodnotaH = hodnotaH + random.nextInt;
if(hodnotaH < 22) {
hodnotaH++;
System.out.prin­tf("Máš: %s cheš další kartu? 1ano/2ne\n",hod­notaH);
}
else{
System.out.prin­tf("Přes, končíš..(%s)",hod­notaH);
System.out.prin­tln("Chceš hrát znovu?? 1ano/2ne");
hodnotaH = 0;
}
}
public void hra() {
String znovu = "1";

System.out.prin­tln("Možnosti: ");
System.out.prin­tln("1-kartu");
System.out.prin­tln("2-stačí");
System.out.prin­tln("----------");
int volba = Integer.parse­Int(sc.nextLi­ne());
while (znovu.equals("1")){
switch (volba) {

case 1:
kartu();
break;
case 2:
System.out.prin­tln("stačí");
break;
}
znovu = sc.nextLine();
}
}
}

 
Nahoru Odpovědět 6. července 20:03
Avatar
Odpovídá na Petr Šenfeld
Andy Scheuchzer:6. července 20:08

Ten zdroják takhle nebude asi nikdo číst. Máš dvě možnosti:

  • kliknout na tlačítko </>
  • kliknout na tlačítko Máš dlouhý zdroják? pod polem na komentář.

Druhá možnost je určitě lepší.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět  +3 6. července 20:08
Od ASM úroveň jazyků pouze klesá…
Avatar
Odpovídá na Andy Scheuchzer
Petr Šenfeld:6. července 22:30

No tu druhou možnost jsem dal ale nevím jak na ni pak odkážu...

package blackjack;

import java.util.Scanner;
import java.util.Random;

/**
 *
 * @author senfik
 */
public class BlackJack {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        Scanner sc = new Scanner(System.in, "Windows-1250");
        Hrac hrac = new Hrac();
        Dealer dealer = new Dealer();
        String znovu1 = "1";
        while (znovu1.equals("1")) {
        hrac.hra();
        dealer.turn();
        dealer.vysledek();

        System.out.println("");
        System.out.println("dealer má " + dealer.hodnotaD);
        System.out.println("hráč má "+ hrac.hodnotaH);



        if(hrac.hodnotaH > dealer.hodnotaD) {
            System.out.println("\nVyhrál jsi kámo!!!!\n");
        }
        else if (hrac.hodnotaH == dealer.hodnotaD){
            System.out.println("Stejně!!");
        }
        else if(dealer.hodnotaD >21){
            System.out.println("");
        }
        else
        {
            System.out.println("Prohrál si bro...");
        }
            System.out.println("Chceš znovu hrát?? 1ano/2ne");
        znovu1 = sc.nextLine();
        dealer.hodnotaD = 0;
        hrac.hodnotaH = 0;

    }
     System.out.println("díky za hru :-)");
    }

}
 
Nahoru Odpovědět 6. července 22:30
Avatar
Petr Šenfeld:6. července 22:33
package blackjack;
import java.util.Random;
/**
 *
 * @author senfik
 */
public class Dealer  {
    public int hodnotaD;
    private int pocetKaret;
    private Random random;
    public int hodnotaH;

    public Dealer() {
        pocetKaret = 10;
        random = new Random();
    }
    public void turn() {
        if(hodnotaD < 17&& hodnotaD <22){
           while(hodnotaD < 17 && hodnotaD <22){
        hodnotaD = hodnotaD + random.nextInt((pocetKaret));
        if(hodnotaD < 22) {
           hodnotaD++;
            System.out.printf("Dealer má: %s\n",hodnotaD);
            try {
            Thread.sleep(500);
            }
            catch (InterruptedException ex) {
            System.err.println("error");
            }
        }
        else{
            System.out.printf("Dealer má: %s PŘES!!\n ",hodnotaD);
            }
          }
        }
     }
    public void vysledek() {
        if(hodnotaD >21)
            System.out.println("Vyhrál jsi!!!!");
        /*if(hodnotaH > hodnotaD) {
            System.out.println("Vyhrál jsi kámo");
        }
        else
        {
            System.out.println("Prohrál si bro...");
        }
        */

    }
}
 
Nahoru Odpovědět 6. července 22:33
Avatar
Petr Šenfeld:6. července 22:34
package blackjack;
import java.util.Scanner;
import java.util.Random;

/**
 *
 * @author senfik
 */
public class Hrac extends Dealer {
    public int hodnotaH;
    private int pocetKaret;
    private Random random;
    Scanner sc = new Scanner(System.in, "Windows-1250");

    public Hrac() {
        pocetKaret = 10;
        random = new Random();
    }

    public void kartu() {
        hodnotaH = hodnotaH + random.nextInt((pocetKaret));
        if(hodnotaH < 22) {
           hodnotaH++;
            System.out.printf("Máš: %s   cheš další kartu? 1ano/2ne\n",hodnotaH);
        }
        else{
            System.out.printf("Přes, končíš..(%s)",hodnotaH);
            System.out.println("Chceš hrát znovu?? 1ano/2ne");
            hodnotaH = 0;
        }
     }
        public void hra() {
        String znovu = "1";

        System.out.println("Možnosti: ");
        System.out.println("1-kartu");
        System.out.println("2-stačí");
        System.out.println("----------");
        int volba = Integer.parseInt(sc.nextLine());
        while (znovu.equals("1")){
        switch (volba) {

            case 1:
                kartu();
                break;
            case 2:
                System.out.println("stačí");
                break;
         }
        znovu = sc.nextLine();
      }
    }
}
 
Nahoru Odpovědět 6. července 22:34
Avatar
Odpovídá na Petr Šenfeld
Matúš Olejník:6. července 22:39

Už si označil jednu odpoveď ako riešenie takže už máš hotovo? :D

Nahoru Odpovědět 6. července 22:39
/* I am not sure why this works but it fixes the problem */
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.