Hello,
I am trying to make a blackjack program. I don't know how to handle the sequence of the program. For example, when I get above 21 points I can get the program to say "You are dead", but you can still take cards which shouldnt be possible. But I don't know how to stop the button "neemKaart" to stop functioning. Is there a way to take the functionality of a button away or to make it dissapear?
This is my code:
Code:import java.awt.*;
import java.applet.Applet;
import java.awt.event.*;
public class blackjack4 extends Applet implements ActionListener {
private Deck stapel1;
private Deck stapel2;
private Button start;
private Button neemKaart;
private Button passen;
public Boolean kaartGenomen=false;
public Boolean gepast=false;
public Boolean gestart=false;
public int scoreComputer = 0;
public void init() {
stapel1 = new Deck();
stapel2 = new Deck();
start = new Button("Start potje blackjack");
add(start);
start.addActionListener(this);
passen = new Button("Ik pas");
passen.addActionListener(this);
neemKaart = new Button("Neem een kaart");
neemKaart.addActionListener(this);
}
public void actionPerformed (ActionEvent gebeurtenis) {
if (gebeurtenis.getSource() == passen)
gepast=true;
repaint();
if (gebeurtenis.getSource() == neemKaart)
kaartGenomen = true;
repaint();
if (gebeurtenis.getSource() == start)
gestart = true ;
add(neemKaart);
add(passen);
validate();
}
public void paint (Graphics g) {
// stapel1.vulTabel(g);
// g.drawString("de waarde van welkeKaart is: " + Integer.toString(welkeKaart), 8,122);
// g.drawString("de waarde van kaartGenomen is: " + kaartGenomen, 8,232);
if (gestart == true){
stapel1.kiesKaart(g);
stapel1.kiesKaart(g);
gestart = false;
repaint();
}
if (kaartGenomen == true) {
stapel1.kiesKaart(g);
kaartGenomen = false;
repaint();
}
int totaal = stapel1.bepaalScore(g, 160, 160);
if (totaal > 21){
g.drawString("Je bent dood", 10, 130);
g.drawString ("Jij verliest het weer",50,250);
}
else
g.drawString("De score is " + totaal, 1, 130);
if (gepast==true) {
g.drawString("je hebt gepast",2,55);
gestart = false;
int totaal2 = stapel2.bepaalScore(g, 18, 170);
g.drawString("Computer heeft " + totaal2, 1, 140);
while (stapel2.bepaalScore(g, 18, 170) < 17)
stapel2.kiesKaart(g);
if (totaal > 21)
g.drawString ("Jij verliest het weer",50,250);
else
if
((totaal > totaal2) && totaal <22)
g.drawString ("Jij wint, goede speler!",50,250);
else
if ((totaal < totaal2) && totaal2<22)
g.drawString ("Jij verliest het weer",50,250);
else
if ((totaal < totaal2) && totaal2>21)
g.drawString ("Jij wint, goede speler!",50,250);
}
}
}
class Kaart {
public int nummer;
public String soort;
}
class Deck {
public Kaart[] stapel = new Kaart[52];
public Kaart[] totaalIk = new Kaart[20];
public Kaart[] totaalComputer = new Kaart[20];
public String[] soort = {"harten", "schoppen", "klaver", "ruiten"};
private int x=0;
private int y=0;
private int z=0;
private int nummer = 1;
int kaartNummer = 0;
int kaartNummerIk = 0;
int kaartNummerComputer=0;
public int welkeKaart;
public int dezePlek = 0;
public Deck() {
int soortNummer = 0;
String soortNaam;
soortNaam = soort[soortNummer];
for (soortNummer=0; soortNummer< 4; soortNummer++)
for (nummer = 1; nummer < 14;nummer++){
stapel[kaartNummer]=new Kaart();
stapel[kaartNummer].nummer=nummer;
stapel[kaartNummer].soort= soort[soortNummer];
kaartNummer++;}
for (kaartNummer=0;kaartNummer<20;kaartNummer++){
totaalIk[kaartNummer]= new Kaart();
totaalIk[kaartNummer].nummer=0;
}
}
public void kiesKaart (Graphics g) {
welkeKaart = (int) (Math.random()*52);
totaalIk[dezePlek]= new Kaart();
totaalIk[dezePlek].soort=stapel[welkeKaart].soort;
totaalIk[dezePlek].nummer=stapel[welkeKaart].nummer;
dezePlek = dezePlek +1;
}
public int bepaalScore (Graphics g, int l, int r) {
int score = 0;
int aasAftrek=0;
for (kaartNummerIk = 0, z=0;kaartNummerIk<dezePlek;kaartNummerIk++){
switch(totaalIk[kaartNummerIk].nummer){
case 1: g.drawString(totaalIk[kaartNummerIk].soort + " 2",l,r + z);
score = score + 2;break;
case 2: g.drawString(totaalIk[kaartNummerIk].soort + " 3",l,r + z);
score = score + 3;break;
case 3: g.drawString(totaalIk[kaartNummerIk].soort + " 4",l,r + z);
score = score + 4;break;
case 4: g.drawString(totaalIk[kaartNummerIk].soort + " 5",l,r + z);
score = score + 5;break;
case 5: g.drawString(totaalIk[kaartNummerIk].soort + " 6",l,r + z);
score = score + 6;break;
case 6: g.drawString(totaalIk[kaartNummerIk].soort + " 7",l,r + z);
score = score + 7;break;
case 7: g.drawString(totaalIk[kaartNummerIk].soort + " 8",l,r + z);
score = score + 8;break;
case 8: g.drawString(totaalIk[kaartNummerIk].soort + " 9",l,r + z);
score = score + 9;break;
case 9: g.drawString(totaalIk[kaartNummerIk].soort + " 10",l,r + z);
score = score + 10;break;
case 10: g.drawString(totaalIk[kaartNummerIk].soort + " Boer",l,r + z);
score = score + 10;break;
case 11: g.drawString(totaalIk[kaartNummerIk].soort + " Vrouw",l,r + z);
score = score + 10;break;
case 12: g.drawString(totaalIk[kaartNummerIk].soort + " Heer",l,r + z);
score = score + 10;break;
case 13: g.drawString(totaalIk[kaartNummerIk].soort + " Aas",l,r + z);
if (score > 11)
score = score + 1;
else
if (score < 11)
score = score + 11;break;
}
z=z+10;
if ((score > 21) && (totaalIk[0].nummer==13 || totaalIk[1].nummer==13 || totaalIk[2].nummer==13 || totaalIk[3].nummer==13 || totaalIk[4].nummer==13 || totaalIk[5].nummer==13 || totaalIk[6].nummer==13 || totaalIk[7].nummer==13 || totaalIk[8].nummer==13) && (aasAftrek==0)){
score = score - 10;
aasAftrek++;
}
}
return score;
}
}
