I have decided to create a console Blackjack game as my final Java project. Please take a look at my code and give me some feedback.
I have tried to make the game as object-oriented as possible. I have five different classes.
Player
class:
public class Person extends Dealer{
Random ran = new Random ();
Scanner scan = new Scanner (System.in);
public static int personcard, persontotal;
static ArrayList <String> name = new ArrayList <String> ();
public void shufflePerson () throws InterruptedException {
name.add("Bert");
personcard = ran.nextInt(14);
while (personcard < 1) {
personcard = ran.nextInt(14);
}
switch (personcard) {
case 11:
System.out.println(name + " drew a Jack");
persontotal = 10 + persontotal;
Thread.sleep(2500);
System.out.println(name +"s total is: " + persontotal);
break;
case 12:
Thread.sleep(2500);
System.out.println(name +" drew a Queen");
persontotal = 10 + persontotal;
Thread.sleep(2500);
System.out.println(name +"s total is: " + persontotal);
break;
case 13:
Thread.sleep(2500);
System.out.println(name +" drew a King");
persontotal = 10 + persontotal;
Thread.sleep(2500);
System.out.println(name + "s total is: " + persontotal);
break;
case 14:
Thread.sleep(2500);
System.out.println(name +" drew an Ace");
persontotal = 11 + persontotal;
Thread.sleep(2500);
System.out.println(name + "s total is: " + persontotal);
break;
default:
Thread.sleep(2500);
System.out.println(name + " drew a: " + personcard);
persontotal = persontotal + personcard;
Thread.sleep(2500);
System.out.println(name + "s total is: " + persontotal);
}
if (persontotal > 21) {
System.out.println(name +" busted.");
playAgain p = new playAgain ();
p.again();
}
else {
System.out.println("Hit or stay?");
String hitorstay = scan.nextLine();
if (hitorstay.equals("hit")) {
shufflePerson();
}
else {
System.out.println("Okay, dealers turn.");
Dealer d = new Dealer ();
d.shuffleDealer();
}
}
}
Dealer
class:
public class Dealer {
Random ran = new Random ();
public static int dealercard, dealertotal;
public void shuffleDealer () throws InterruptedException {
dealercard = ran.nextInt(14);
while (dealercard < 1) {
dealercard = ran.nextInt(14);
}
switch (dealercard) {
case 11:
System.out.println("Dealer drew a Jack");
dealertotal = 10 + dealertotal;
Thread.sleep(2500);
System.out.println("Dealers total is: " + dealertotal);
break;
case 12:
Thread.sleep(2500);
System.out.println("Dealer drew a Queen");
dealertotal = 10 + dealertotal;
Thread.sleep(2500);
System.out.println("Dealers total is: " + dealertotal);
break;
case 13:
Thread.sleep(2500);
System.out.println("Dealer drew a King");
dealertotal = 10 + dealertotal;
Thread.sleep(2500);
System.out.println("Dealers total is: " + dealertotal);
break;
case 14:
Thread.sleep(2500);
System.out.println("Dealer drew an Ace");
dealertotal = 11 + dealertotal;
Thread.sleep(2500);
System.out.println("Dealers total is: " + dealertotal);
break;
default:
System.out.println("Dealers drew a " + dealercard);
// vår formel för total
dealertotal = dealercard + dealertotal;
Thread.sleep(2500);
System.out.println("Dealers total is: " + dealertotal);
}
if (dealertotal > 21) {
System.out.println("Dealer busted.");
playAgain p = new playAgain ();
p.again();
}
else if (dealertotal < 15) {
System.out.println("Dealer chooses to hit.");
shuffleDealer ();
}
else {
System.out.println("Dealer chooses to stay.");
displayWinner w = new displayWinner ();
w.showWinner();
}
}
displayWinner
class:
public class displayWinner extends Person {
public void showWinner () throws InterruptedException {
if (persontotal > dealertotal) {
System.out.println(name +" won!");
playAgain p = new playAgain ();
p.again();
}
else if (dealertotal > persontotal){
System.out.println("Dealer won!");
playAgain p = new playAgain ();
p.again();
}
else {
System.out.println("Draw.");
playAgain p = new playAgain ();
p.again();
}
}
playAgain
class:
public class playAgain {
Scanner scan = new Scanner (System.in);
public void again () throws InterruptedException {
System.out.println("Game ended. Play again? y/n");
String yn = scan.nextLine();
if (yn.equals("y")) {
Person p = new Person ();
p.shufflePerson();
}
else {
System.out.println("Goodbye.");
System.exit(0);
}
}
Main class:
public static void main(String[] args) throws Exception {
System.out.println();
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~");
System.out.println("~ Welcome ~");
System.out.println("~ to BlackJack! ~");
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~");
System.out.println("\nShuffling cards...");
Thread.sleep(0);
Person p = new Person ();
p.shufflePerson();
}