Java Console Kartu Remi

Ini adalah edisi UTS gue di matakuliah PBO dasar. Yang namanya UTS pasti dikasih waktu yang terbatas buat ngerjainnya. Untungnya dalam dua jam akhirnya gue berhasil menyelesaikannya setelah gak kelar dan dibawa pulang untuk dilanjutin #hiks. Permainannya cukup sedierhana #gue gak bawa pulang soalnya :( oke singkat cerita jadi permainan kartu remi ini dinamakan BlackJack
Cara memainkannya sederhana. Cuma main sama CPU dengan cara pilih add more card untuk mengambil kartu secara acak dari deck kartu remi hingga kumpulan kartu terambil. Player yang memiliki jumlah 21 dari semua kartu ditangan menjadi kalah. Jadi initinya adalah main kecil kecilan nomor kartu.
Oke gue rasa showcasenya sudah cukup jelas. jadi sekarang kita lanjut aja ke teknisnya. Program .java ini dibuat dengan 3 buah kelas.

KartuRemi.java

public class KartuRemi {
 
 private int nilai;
 private int warna;
 
 public int getWarna(){
  return this.warna;
 }
 
 public void setWarna(int w){
  if(warna == 0 
  || warna == 1 
  || warna == 2 
  || warna == 3){
   this.warna = w;
  } else {
   System.out.println("Warna tidak valid. warna antara 0 sd 4");
  }
 }
 
 public void setNilai(int n){
  if(n >= 1 
  && n <= 13){
   this.nilai = n;
  } else {
   if(n < 1){
    this.nilai = 1;
   } else if (n > 13) {
    this.nilai = 13;
   }
  }
 }
 
 public int getNilai(){
  return this.nilai;
 }
 
 public KartuRemi(int nilai, int warna){
  setNilai(nilai);
  setWarna(warna);
 }
 
 @Override
 public String toString(){
  String ret = "";
  if(getNilai() < 11 || getNilai() > 1){
   ret = ret + (nilai + 1);
  } else {
   switch (nilai) {
    case 1:
     ret = ret + "A";
    break;
    case 11:
     ret = ret + "J";
    break;
    case 12:
     ret = ret + "K";
    break;
    case 13:
     ret = ret + "Q";
    break;
    default:
     System.out.print("?");
    break;
   }
  }

  switch (warna) {
   case 0:
   ret = ret + "S";
   break;
   case 1:
    ret = ret + "H";
   break;
   case 2:
    ret = ret + "C";
   break;
   case 3:
    ret = ret + "D";
   break;
   default:
    System.out.print("?");
   break;
  }
  return ret;
 }
 
}

CardInHand.java

import java.util.*;

public class CardInHand {
 
 private KartuRemi[] hand;
 
 public CardInHand(int n){
  hand = new KartuRemi[n];
 }
 
 public void addRandomCard(){
  boolean success = false;
  int warna = (int) (Math.random() * 10) % 3;
  int nilai = (int) (Math.random() * 10) % 12;
  
  for(int i = 0; i < hand.length; i++){
   if(hand[i] == null) {
    KartuRemi kr = new KartuRemi(nilai, warna);
    hand[i] = kr;
    success = true;
    break;
   }
  }
  if (!success) {
   hand = Arrays.copyOf(hand, hand.length + 1);
    
   KartuRemi kr = new KartuRemi(nilai, warna);
   hand[hand.length - 1] = kr;
  }
 }
 
 public int getTotalValue(){
  int totals = 0;
  for(int i = 0; i < hand.length; i++){
   totals = totals + hand[i].getNilai();
  }
  return totals;
 }
 
 @Override 
 public String toString(){
  
  String card = "";
  
  for(KartuRemi ka : hand){
   card = card + ka.toString() + " ";
  }
  return card;
 }
}

BlackJack.java

import java.util.Scanner;

public class BlackJack {
 
 public static void main(String[] args){
  
  Scanner sc = new Scanner(System.in);
  
  CardInHand player = new CardInHand(2);
  CardInHand cpu = new CardInHand(2);
  
  player.addRandomCard();
  player.addRandomCard();
  
  cpu.addRandomCard();
  cpu.addRandomCard();
  
  int choose  = 0;
  
  while (choose != 3){
   
   System.out.println("Player card : " + player.toString());
   System.out.println("Computer card : " + cpu.toString());
  
   System.out.println("What do you want to do ?");
  
   System.out.println("1. add more card");
   System.out.println("2. give it a go");
   System.out.println("3. exit");
   System.out.print("choose : ");
   choose = sc.nextInt();
   
   if(cpu.getTotalValue() >= 21){
    System.out.println("YOU WIN.!!!");
    choose = 3;
    break;
   } else if(player.getTotalValue() >= 21){
    System.out.println("YOU LOOSE.!!!");
    choose = 3;
    break;
   }
   
   switch (choose){
    case 1:
     player.addRandomCard();
     cpu.addRandomCard();
    break;
    case 2:
     if(cpu.getTotalValue() > player.getTotalValue()){
      System.out.println("YOU WIN.!!!");
     } else if(cpu.getTotalValue() < player.getTotalValue()){
      System.out.println("YOU LOOSE.!!!");
     } else if (cpu.getTotalValue() == player.getTotalValue()) {
      System.out.println("DRAW.!!!");
     }
    break;
    default:
    break;
   }
  }
 }
}
Selamat mencoba permainan sederhana ini dan happy coding :D

Komentar