Blackjack

bene98

Aktives Mitglied
Hallo, ich würde gerne das Kartenspiel erstellen. Hab dafür Teile aus einem Buch übernommen. Das Nachprogrammieren macht aber einfach keinen Spaß, deshalb wollte ich selbst eine graphische Version bauen (in dem Buch die Version war für Konsole.)
Ich konnte erst in der Klasse Blackjack die Methode neues Spiel starten und mir wurden dann zwei Spielkarten angezeigt. Die Methode neue Karte (in Blackjack hat aber nie dazu geführt, dass eine dritte Karte angezeigt wurde. (Aktuell kann sie dies auch nicht)
Ich erhalte momentan gar keine Fehler in der Konsole angezeigt. Kann aber auch gar keine Karten sehen, lediglich die zwei Buttons.
Vielleicht sieht ja jemand das Problem. Danke

Java:
import java.awt.Component;
import java.awt.Container;
import java.io.IOException;
import java.util.ArrayList;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class BlackJack {
    Spieler spieler, dealer;
    private Kartenspiel kartenspiel;
    private int einsatz;
    private boolean spielläuft;
    ArrayList<JButton> buttonlist = new ArrayList<>();
JPanel spielpanel;
    JFrame spielframe;

    public BlackJack() throws IOException {
        kartenspiel = new Kartenspiel();
        spieler = new Spieler("n", 500);
        dealer = new Spieler("Dealer", 10000);
        einsatz = 0;
        spielläuft = false;
        spielframe = new JFrame();
        spielpanel = new JPanel();

        JButton neuesSpiel = new JButton("neues Spiel");
        neuesSpiel.addActionListener(e -> neuesSpiel());

        JButton neueKarte = new JButton("neue Karte");
        neueKarte.addActionListener(e -> neueKarte());
        spielpanel.add(neueKarte);
        spielpanel.add(neuesSpiel);
        spielframe.add(spielpanel);
        spielframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        spielframe.setVisible(true);

    }

    public void los() {

    }

    public Spieler getSpieler() {
        return spieler;
    }

    public void klugscheisser() {
        System.out.println("das ist wahnsinn");

    }

    public void setSpieler(Spieler spieler) {
        this.spieler = spieler;
    }

    public Spieler getDealer() {
        return dealer;
    }

    public void setDealer(Spieler dealer) {
        this.dealer = dealer;
    }

    public int getEinsatz() {
        return einsatz;
    }

    public void setEinsatz(int einsatz) {
        this.einsatz = einsatz;
    }

    public boolean getSpielStatus() {
        return spielläuft;
    }

    public void neuesSpiel() {

        spieler.clear();
        dealer.clear();
        spieler.addKarte(kartenspiel.gibEineKarte());
        dealer.addKarte(kartenspiel.gibEineKarte());
        spieler.addKarte(kartenspiel.gibEineKarte());
        dealer.addKarte(kartenspiel.gibEineKarte());

spielläuft=false;
        JButton tempbutton;
        while (spielläuft != true) {
            for (int i = 0; i < spieler.getAnzahlKarten(); i++) {
                tempbutton = new JButton();
                tempbutton.setIcon(spieler.getKarte(i).bild);
        spielpanel.add(tempbutton);
        

            }
        
        }

    }

    public void neueKarte() {
        JButton tempbutton;
        
        spieler.addKarte(kartenspiel.gibEineKarte());
        
            tempbutton = new JButton();

            spielpanel.add(tempbutton);
        

System.out.println("doenerstag ist Feiertag");
    }

    public void dealerIstDran() {
        while ((dealer.aktuelleWertung() <= 16) && (dealer.getAnzahlKarten() < 5))
            dealer.addKarte(kartenspiel.gibEineKarte());
    }

    public boolean erhoeheEinsatz() {
        if (dealer.getGeld() > 50) {
            dealer.setGeld(dealer.getGeld() - 50);
            einsatz += 50;

        } else {
            System.out.println("Du hast die Bank pleite gemacht");
            System.exit(1);
        }

        if (spieler.getGeld() > 50) {
            spieler.setGeld(spieler.getGeld() - 50);
            einsatz += 50;
            return true;
        }
        return false;
    }

    public static void main(String[] args) throws IOException {
        BlackJack blackjack = new BlackJack();
        blackjack.neuesSpiel();
    }

}
 

bene98

Aktives Mitglied
Java:
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Kartenspiel {

    ArrayList <Karte> stapel;
    public int kartenImSpiel=7;

    public Kartenspiel() throws IOException {
        stapel= new ArrayList<>();

        BufferedImage k2C = ImageIO.read(new File("C:\\Users\\Benedikt\\Documents\\cards_jpeg_zip\\JPEG\\2C.png"));
        ImageIcon karte2C = new ImageIcon(k2C);
        BufferedImage k2D = ImageIO.read(new File("C:\\Users\\Benedikt\\Documents\\cards_jpeg_zip\\JPEG\\2D.png"));
        ImageIcon karte2D = new ImageIcon(k2D);
        BufferedImage k2H = ImageIO.read(new File("C:\\Users\\Benedikt\\Documents\\cards_jpeg_zip\\JPEG\\2H.png"));
        ImageIcon karte2H = new ImageIcon(k2H);
        BufferedImage k2S = ImageIO.read(new File("C:\\Users\\Benedikt\\Documents\\cards_jpeg_zip\\JPEG\\2S.png"));
        ImageIcon karte2S = new ImageIcon(k2S);
        BufferedImage k3C = ImageIO.read(new File("C:\\Users\\Benedikt\\Documents\\cards_jpeg_zip\\JPEG\\3C.png"));
        ImageIcon karte3C = new ImageIcon(k3C);
        BufferedImage k3D = ImageIO.read(new File("C:\\Users\\Benedikt\\Documents\\cards_jpeg_zip\\JPEG\\3D.png"));
        ImageIcon karte3D = new ImageIcon(k3D);
        BufferedImage k3H = ImageIO.read(new File("C:\\Users\\Benedikt\\Documents\\cards_jpeg_zip\\JPEG\\3H.png"));
        ImageIcon karte3H = new ImageIcon(k3H);
        BufferedImage k3S = ImageIO.read(new File("C:\\Users\\Benedikt\\Documents\\cards_jpeg_zip\\JPEG\\3S.png"));
        ImageIcon karte3S = new ImageIcon(k3S);
        BufferedImage k4C = ImageIO.read(new File("C:\\Users\\Benedikt\\Documents\\cards_jpeg_zip\\JPEG\\4C.png"));
        ImageIcon karte4C = new ImageIcon(k4C);
        BufferedImage k4D = ImageIO.read(new File("C:\\Users\\Benedikt\\Documents\\cards_jpeg_zip\\JPEG\\4D.png"));
        ImageIcon karte4D = new ImageIcon(k4D);
        BufferedImage k4H = ImageIO.read(new File("C:\\Users\\Benedikt\\Documents\\cards_jpeg_zip\\JPEG\\4H.png"));
        ImageIcon karte4H = new ImageIcon(k4H);
        BufferedImage k4S = ImageIO.read(new File("C:\\Users\\Benedikt\\Documents\\cards_jpeg_zip\\JPEG\\4S.png"));
        ImageIcon karte4S = new ImageIcon(k4S);
        BufferedImage k5C = ImageIO.read(new File("C:\\Users\\Benedikt\\Documents\\cards_jpeg_zip\\JPEG\\5C.png"));
        ImageIcon karte5C = new ImageIcon(k5C);
        BufferedImage k5D = ImageIO.read(new File("C:\\Users\\Benedikt\\Documents\\cards_jpeg_zip\\JPEG\\5D.png"));
        ImageIcon karte5D = new ImageIcon(k5D);
        BufferedImage k5H = ImageIO.read(new File("C:\\Users\\Benedikt\\Documents\\cards_jpeg_zip\\JPEG\\5H.png"));
        ImageIcon karte5H = new ImageIcon(k5H);
        
        

        Karte zweic = new Karte("2C", karte2C);
        Karte zweid= new Karte ("2D", karte2D);
        Karte zweih = new Karte("2H", karte2H);
        Karte zweis= new Karte("2S", karte2S);
        Karte dreic=new Karte ("3C", karte3C);
        Karte dreid=new Karte ("3D", karte3D);
        Karte dreih=new Karte ("3H", karte3H);
        Karte dreis=new Karte("3S", karte3S);
        
        
        
        
        stapel.add(zweic);
        stapel.add(zweid);
        stapel.add(zweih);
        stapel.add(zweis);
        stapel.add(dreic);
        stapel.add(dreic);
        stapel.add(dreih);
        stapel.add(dreis);
        
    
    }
    public void mischen() {
    Collections.shuffle(stapel);

    }
    public Karte gibEineKarte() {
        Karte temp2 = null;
    while (kartenImSpiel>=0) {   
    temp2 = stapel.get(kartenImSpiel);
    
        
    }return temp2;}

}
 

bene98

Aktives Mitglied
Java:
import java.awt.image.BufferedImage;

import java.io.File;


import javax.imageio.ImageIO;

import javax.swing.ImageIcon;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;


public class Karte {


    public final int farbe, wert;

    ImageIcon bild;

    private String name;


    public Karte(String name, ImageIcon bild) {


        this.farbe = 0;

        this.wert = 0;

        this.bild = bild;

        this.name = name;


    }


    public int getFarbe() {

        return farbe;

    }


    public int getWert() {

        return wert;

    }


}
 
Zuletzt bearbeitet:

bene98

Aktives Mitglied
Java:
import java.util.ArrayList;


public class Spieler {

    private String spielerName;

    private int geld;

    public ArrayList<Karte> karten;


    public Spieler(String n, int g) {

        spielerName = n;

        geld = g;

        karten = new ArrayList<Karte>();


        // TODO Auto-generated constructor stub

    }


    public String getSpielerName() {

        return spielerName;

    }


    public void setSpielerName(String spielerName) {

        this.spielerName = spielerName;

    }


    public int getGeld() {

        return geld;

    }


    public void setGeld(int geld) {

        this.geld = geld;

    }


    public void clear() {

        karten.clear();

    }


    public void addKarte(Karte k) {

        karten.add(k);

    }


    public int getAnzahlKarten() {

        return karten.size();

    }


    public Karte getKarte(int p) {

        if ((p >= 0) && (p < karten.size()))


        {

            return karten.get(p);

        } else {

            return null;

        }

    }


    public int aktuelleWertung() {

        int wert = 0, anzahl = getAnzahlKarten();

        boolean istAss = false;

        Karte karte = null;

        int kartenWert;


        for (int i = 0; i < anzahl; i++) {

            karte = getKarte(i);

            kartenWert = karte.getWert();


          

          

            if (kartenWert>10) kartenWert=10;

            if(kartenWert==1) istAss=true;

          

            wert += kartenWert;

        }

 

        if(istAss &&(wert+10<=21))

                wert=wert+10;

  

        return wert;

      

    }


}
 
Zuletzt bearbeitet:

mihe7

Top Contributor
OK, das war natürlich nicht das Problem ;)

while (spielläuft != true) {
Endlosschleife?

Außerdem fügst Du einem Panel, das bereits angezeigt wird, Elemente hinzu. Dann musst Du das Panel neu validieren. Ruf mal im Anschluss an das Hinzufügen der Karten (nach der for-Schleife) noch ein spielpanel.revalidate(); auf.
 

bene98

Aktives Mitglied
Hallo, Ich meine ich hätte die Probleme beseitigt aber es werden weiterhin keine Karten angezeigt.
Java:
import java.awt.Component;
import java.awt.Container;
import java.io.IOException;
import java.util.ArrayList;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class BlackJack {
    Spieler spieler, dealer;
    private Kartenspiel kartenspiel;
    private int einsatz;
    private boolean spielläuft;
    ArrayList<JButton> buttonlist = new ArrayList<>();
JPanel spielpanel;
    JFrame spielframe;

    public BlackJack() throws IOException {
        kartenspiel = new Kartenspiel();
        spieler = new Spieler("n", 500);
        dealer = new Spieler("Dealer", 10000);
        einsatz = 0;
        spielläuft = false;
        spielframe = new JFrame();
        spielpanel = new JPanel();

        JButton neuesSpiel = new JButton("neues Spiel");
        neuesSpiel.addActionListener(e -> neuesSpiel());

        JButton neueKarte = new JButton("neue Karte");
        neueKarte.addActionListener(e -> neueKarte());
        spielpanel.add(neueKarte);
        spielpanel.add(neuesSpiel);
        spielframe.add(spielpanel);
        spielframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        spielframe.setVisible(true);

    }

    public void los() {

    }

    public Spieler getSpieler() {
        return spieler;
    }

    public void klugscheisser() {
        System.out.println("das ist wahnsinn");

    }

    public void setSpieler(Spieler spieler) {
        this.spieler = spieler;
    }

    public Spieler getDealer() {
        return dealer;
    }

    public void setDealer(Spieler dealer) {
        this.dealer = dealer;
    }

    public int getEinsatz() {
        return einsatz;
    }

    public void setEinsatz(int einsatz) {
        this.einsatz = einsatz;
    }

    public boolean getSpielStatus() {
        return spielläuft;
    }

    public void neuesSpiel() {

        spieler.clear();
        dealer.clear();
        spieler.addKarte(kartenspiel.gibEineKarte());
        dealer.addKarte(kartenspiel.gibEineKarte());
        spieler.addKarte(kartenspiel.gibEineKarte());
        dealer.addKarte(kartenspiel.gibEineKarte());


        JButton tempbutton;
    
            for (int i = 0; i < spieler.karten.size(); i++) {
                tempbutton = new JButton();
                tempbutton.setIcon(spieler.karten.get(i).bild);
        spielpanel.add(tempbutton);}
        spielpanel.revalidate();
    
        
            
            
        
        
        
    }

    public void neueKarte() {
        JButton tempbutton;
        
        spieler.addKarte(kartenspiel.gibEineKarte());
        
            tempbutton = new JButton();

            spielpanel.add(tempbutton);
        

System.out.println("doenerstag ist Feiertag");
    }

    public void dealerIstDran() {
        while ((dealer.aktuelleWertung() <= 16) && (dealer.getAnzahlKarten() < 5))
            dealer.addKarte(kartenspiel.gibEineKarte());
    }

    public boolean erhoeheEinsatz() {
        if (dealer.getGeld() > 50) {
            dealer.setGeld(dealer.getGeld() - 50);
            einsatz += 50;

        } else {
            System.out.println("Du hast die Bank pleite gemacht");
            System.exit(1);
        }

        if (spieler.getGeld() > 50) {
            spieler.setGeld(spieler.getGeld() - 50);
            einsatz += 50;
            return true;
        }
        return false;
    }

    public static void main(String[] args) throws IOException {
        BlackJack blackjack = new BlackJack();
        blackjack.neuesSpiel();
    }

}
 

mihe7

Top Contributor
Gut, wenn Du jetzt hergehst und fügst die Karte nach dem Anzeigen und anschließendem revalidate hinzu, funktioniert das auch?
 

Ähnliche Java Themen

Neue Themen


Oben