habe folgendes problem in meinem quelltext habe ich die boolean variablen sieg und niederlage erzeugt wenn diese false sind hat der spieler noch nicht zu ende gespielt wenn er aber zu ende gespielt hat soll je nachdem sieg oder niederlage auf true gesett werden, dies geschiet garnicht er nimmt es von anfang an als true (glaube ich)
Bitte um Hilfe
Bitte um Hilfe
Code:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
import java.util.*;
import java.lang.String;
//////////////////////////////////////////////////////////////////////////////////
//////////////////////Java Black Jack Applikation/////////////////////////////////
////////////////////////Autor Topsy Kret ///////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
public class Blackjack extends Frame
{
Random zufall=new Random();
// Hier werden die int Variablen deklariert. In a,b,c,d,e,f,h,j sind Zufallszahlen generiert mit Hilfe der Klasse Random
int j=5,kx=100,ky=100,punktestand=0,i=1,points,points2,l=0,
//intPunkeS/B werden benötigt zu verhindern, dass die Bank mehr Karten zieht als benötigt und somit über 21 Punkte kommt.
intPunkteS,intPunkteB,
//Diese Variable zähl die häüfigkeit der klciks auf den Button "ziehn", so werden später in der IF, in der die Bank Karten zieht,
// so viele Karten des Speilers dargestellt wie auch wirklich gezogen wurden
klicks=0,
//a,b,c,d,e,f,h,k werden für die Zufallsauswahl der Karten benutzt.
a=zufall.nextInt(52), b=zufall.nextInt(52),
c=zufall.nextInt(52), d=zufall.nextInt(52),
m=zufall.nextInt(52), f=zufall.nextInt(52),
h=zufall.nextInt(52), k=zufall.nextInt(52);
boolean sieg = false;
boolean niederlage = false;
//In diesem Sting sind die Dateinamen der Karten enthalten, hierauf werden später die int Variablen a.c.d,... per Random zugegreiffen.
String[] karte = {"2_1.gif","2_2.gif","2_3.gif","2_4.gif",
"3_1.gif","3_2.gif","3_3.gif","3_4.gif",
"4_1.gif","4_2.gif","4_3.gif","4_4.gif",
"5_1.gif","5_2.gif","5_3.gif","5_4.gif",
"6_1.gif","6_2.gif","6_3.gif","6_4.gif",
"7_1.gif","7_2.gif","7_3.gif","7_4.gif",
"8_1.gif","8_2.gif","8_3.gif","8_4.gif",
"9_1.gif","9_2.gif","9_3.gif","9_4.gif",
"10_1.gif","10_2.gif","10_3.gif","10_4.gif",
"B1.gif","B2.gif","B3.gif","B4.gif",
"Q1.gif","Q2.gif","Q3.gif","Q4.gif",
"K1.gif","K2.gif","K3.gif","K4.gif",
"As1.gif","As2.gif","As3.gif","As4.gif"};
//Hier sind die Punkte die für die Karten im obigen Stringarray sind deklariert, auch hier wird per Random zugegriffen.
int[] kartenpunkte = {2,2,2,2,3,3,3,3,4,4,4,4,
5,5,5,5,6,6,6,6,7,7,7,7,
8,8,8,8,9,9,9,9,10,10,10,10,
10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10};
//Ausgabe-Elemente für die Punkte des Spieler und der Bank
//Label zum mitteilen von Informationen
Label theWinnerIs = new Label("win or loose");
Label player = new Label("Spieler");
Label dieBank = new Label("Bank");
Label punkteStandBank = new Label("?");
Label punkteStandSpieler = new Label("");
// Hauptfunktion
public static void main(String[] args)
{
// Starten des Konstruktors der Klasse, Erzeugung eines neuen Objektes bj
Blackjack bj = new Blackjack();
bj.setLocation(10,10);
// Objekt bj sichtbar machen
bj.setVisible(true);
}
// Konstruktor
public Blackjack()
{
// Frame Standard-Funktionen
setSize(800,600);
// Layout setzen und Komponenten hinzufügen
setLayout(null);
// Label
Label labueberschrift = new Label("Java Black Jack");
//Erzeugen der Radiobuttons für die Auswahl ob Ass als Eins oder als 11 gezählt wird.
JRadioButton ass1 =new JRadioButton("Ass=1" , true),
ass10 =new JRadioButton("Ass=10" , false);
//Erstellen der Fonts
Font font1 = new Font("Arial", Font.BOLD, 20);
Font font2 = new Font("Arial", Font.BOLD, 12);
//Erzeugen der Buttons
Button halten =new Button("Halten");
Button ziehen =new Button("Ziehen");
Button neu =new Button("Neuesstart");
//Bounden und der Elemente
labueberschrift.setBounds (200,30,500,50);
theWinnerIs.setBounds (300,400,180,60);
dieBank.setBounds (580,350,80,50);
player.setBounds (580,420,80,50);
punkteStandBank.setBounds (680,350,60,50);
punkteStandSpieler.setBounds(680,420,60,50);
halten.setBounds (133,500,100,60);
ziehen.setBounds (366,500,100,60);
neu.setBounds (599,500,100,60);
ass1.setBounds (680,300,100,25);
ass10.setBounds (680,325,100,25);
//Zuweisen des Fonts
labueberschrift.setFont (font1);
theWinnerIs.setFont (font1);
player.setFont (font1);
dieBank.setFont (font1);
punkteStandBank.setFont (font1);
punkteStandSpieler.setFont (font1);
halten.setFont (font1);
ziehen.setFont (font1);
neu.setFont (font1);
ass1.setFont (font2);
ass10.setFont (font2);
//************punkteStandBank.setEditable(false);
//************punkteStandSpieler.setEditable(false);
//Adden der Elemente
add(labueberschrift);
add(theWinnerIs);
add(player);
add(dieBank);
add(halten);
add(ziehen);
add(neu);
add(punkteStandSpieler);
add(punkteStandBank);
add(ass1);
add(ass10);
//Zuordnung der Inneren Klassen
halten.addActionListener (new HalteKnopf());
neu.addActionListener (new NeustartKnopf());
ziehen.addActionListener (new ZiehKnopf());
ass1.addActionListener (new bAss());
ass10.addActionListener (new bAss());
//Buttongroup festlegen
ButtonGroup ass = new ButtonGroup();
ass.add(ass1);
ass.add(ass10);
}
//Hier werden in der Paint die Karten dargestellt
public void paint(Graphics g)
{
//Dies dient der Überprüfung der Zufallszahlen falls Probleme auftreten.
System.out.println("paint erfolgreich aufgerufen!! ******************");
System.out.println("a = "+a);
System.out.println("b = "+b);
System.out.println("c = "+c);
System.out.println("d = "+d);
System.out.println("m = "+m);
System.out.println("f = "+f);
System.out.println("h = "+h);
System.out.println("k = "+k);
System.out.println("j = "+j);
//Karten werden geladen
Image s_1 = new javax.swing.ImageIcon(getClass().getResource(karte[a])).getImage();
Image s_2 = new javax.swing.ImageIcon(getClass().getResource(karte[b])).getImage();
Image s_3 = new javax.swing.ImageIcon(getClass().getResource(karte[c])).getImage();
Image s_4 = new javax.swing.ImageIcon(getClass().getResource(karte[d])).getImage();
Image b_1 = new javax.swing.ImageIcon(getClass().getResource(karte[m])).getImage();
Image b_2 = new javax.swing.ImageIcon(getClass().getResource(karte[f])).getImage();
Image b_3 = new javax.swing.ImageIcon(getClass().getResource(karte[h])).getImage();
Image b_4 = new javax.swing.ImageIcon(getClass().getResource(karte[k])).getImage();
//Color rot = new Color(255,255,0);
//g.setBackground(rot);
//Hier werden die Karten unter der Bedingung das j==1 bis 5 ist ausgegeben dies geschiet Step by Step
//Ausgabe der ersten beiden Karten des Spielers
//Und der Berechnung seiner momentanen Punkte
if(j==5)
{
g.drawImage(s_1,kx,ky+150,this);
g.drawImage(s_2,kx+120,ky+150,this);
points=0+kartenpunkte[a]+kartenpunkte[b];
punkteStandSpieler.setText(""+points);
intPunkteS=points;
}
if(j==4)
{
points=0+kartenpunkte[a]+kartenpunkte[b]+kartenpunkte[c];
intPunkteS=points;
g.drawImage(s_1,kx,ky+150,this);
g.drawImage(s_2,kx+120,ky+150,this);
g.drawImage(s_3,kx+240,ky+150,this);
punkteStandSpieler.setText(""+points);
}
if(j==3)
{
points=kartenpunkte[a]+kartenpunkte[b]+kartenpunkte[c]+kartenpunkte[d];
intPunkteS=points;
punkteStandSpieler.setText(""+points);
g.drawImage(s_1,kx,ky+150,this);
g.drawImage(s_2,kx+120,ky+150,this);
g.drawImage(s_3,kx+240,ky+150,this);
g.drawImage(s_4,kx+360,ky+150,this);
}
if(j==2 && l==1 && intPunkteS<22)
{
if (klicks<1)
{
g.drawImage(s_1,kx,ky+150,this);
g.drawImage(s_2,kx+120,ky+150,this);
}
if (klicks==1)
{
g.drawImage(s_1,kx,ky+150,this);
g.drawImage(s_2,kx+120,ky+150,this);
g.drawImage(s_3,kx+240,ky+150,this);
}
if (klicks>1)
{
g.drawImage(s_1,kx,ky+150,this);
g.drawImage(s_2,kx+120,ky+150,this);
g.drawImage(s_3,kx+240,ky+150,this);
g.drawImage(s_4,kx+360,ky+150,this);
}
if(j==2 && l==1)
{ System.out.println("bis hier hin kommt es ******************");
if(sieg = false)
{
if(niederlage = false)
{
g.drawImage(b_1,kx,ky,this);
g.drawImage(b_2,kx+120,ky,this);
points2=0+kartenpunkte[m]+kartenpunkte[f];
punkteStandBank.setText(""+points2);
intPunkteB=0+points2;
//Spieler verliert wenn Spielerpunkte größer 22 oder Spieler kleiner Bank
//und Bank größer 22 ist
if(intPunkteB<intPunkteS)
{
g.drawImage(b_1,kx,ky,this);
g.drawImage(b_2,kx+120,ky,this);
g.drawImage(b_3,kx+240,ky,this);
points2=0+kartenpunkte[m]+kartenpunkte[f]+kartenpunkte[h];
punkteStandBank.setText(""+points2);
intPunkteB=0+points2;
}
if(intPunkteB<intPunkteS)
{
g.drawImage(b_1,kx,ky,this);
g.drawImage(b_2,kx+120,ky,this);
g.drawImage(b_3,kx+240,ky,this);
g.drawImage(b_4,kx+360,ky,this);
points2=0+kartenpunkte[m]+kartenpunkte[f]+kartenpunkte[h]+kartenpunkte[k];//Punkte werden aktualiesiert
punkteStandBank.setText(""+points2);
intPunkteB=0+points2;//Punkte werden aktualisiert
}
}
}
}
}
if(intPunkteB>0) //Bedingung aufgestellt damit nich direkt "Sieg" ausgegeben wird.
{
if (intPunkteS>intPunkteB ) //Spieler muss natärlich mehr Punkte besitzen als die Bank
{
if(niederlage = false)
{
theWinnerIs.setText("Sieg");
boolean sieg = true;
}
}
}
if (intPunkteS==21) // Sollte points 21 sein, so hat der Spieler ein Black Jack und direkt gewonnen
{
theWinnerIs.setText("Black Jack");
boolean sieg = true;
}
if (intPunkteS>21) // Sollte points über 21 sein, so hat der Spieler ein verloren
{
if(sieg = false)
{
theWinnerIs.setText("Niederlage");
l=0;
boolean niederlage = true;
}
}
if(j==7)
{
g.clearRect(800,600,0,0);
j=5;
a=zufall.nextInt(52); b=zufall.nextInt(52);
c=zufall.nextInt(52); d=zufall.nextInt(52);
m=zufall.nextInt(52); f=zufall.nextInt(52);
h=zufall.nextInt(52); k=zufall.nextInt(52);
repaint();
}
}
// Dieser Button Beenden den Zug des Spielers und
//offenbart die Karten der Bank und die Punkte der Bank
class bAss implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
}
}
class ZiehKnopf implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if(niederlage = false)
{
if(sieg = false)
j--;
punkteStandSpieler.setText(""+points);
klicks++;
repaint();
}
}
}
class HalteKnopf implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if(niederlage = false)
{
if(sieg = false)
{
points2=0;
intPunkteB=0;
j=2;
l=0+1;
repaint();
}
}
else
{
theWinnerIs.setText("Drück Neustart");
}
}
}
class NeustartKnopf implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
boolean sieg = false;
boolean niederlage = false;
klicks=0;
j=7;
points=0;
points2=0;
theWinnerIs.setText("Neustart");
punkteStandSpieler.setText("-");
punkteStandBank.setText("-");
repaint();
}
}
}