The program interacts between cards and four players among whom cards are to be distributed.
The Program do the following function
- Creates a deck of cards.
- Shuffle the deck.
- Shows the deck.
- Deal cards equally among four players.
- Show the cards of each Player.
Please suggest some better ways of doing this program.
Also suggest new functions and modifications in this program.
package cardgame;
public class Card {
String suit;
String rank;
public Card(String cardSuit, String cardRank){
this.suit = cardSuit;
this.rank = cardRank;
}
}
package cardgame;
import java.util.*;
public class DeckOfCards {
final int size = 52;
Card[] deckOfCards = new Card[size];
public DeckOfCards(){
int count=0;
String[] suits = {"Diamonds","Clubs","Hearts","Spades"};
String[] ranks ={"King","Queen","Jack","Ten","Nine","Eight","Seven","Six","Five","Four","Three","Deuce","Ace",};
for (String s:suits){
for (String r:ranks){
Card card = new Card(s, r);
this.deckOfCards[count] = card;
count++;
}
}
}
public void ShuffleCards(){
Random rand = new Random();
int j;
for(int i=0; i<size; i++){
j = rand.nextInt(52);
Card temp = deckOfCards[i];
deckOfCards[i]=deckOfCards[j];
deckOfCards[j]= temp;
}
}
public void showCards(){
System.out.println("---------------------------------------------");
int count =0;
for (Card card : deckOfCards){
System.out.print(card.rank + " of " + card.suit + " ");
count++;
if(count%4==0)
System.out.println("");
}
System.out.println("---------------------------------------------");
}
public void dealCards(Players player1,Players player2,Players player3,Players player4){
int count = 0;
for (Card card : deckOfCards){
if (count>38){
player1.playCards[count%13] = card;
//System.out.println(player1.playCards[count/12].rank+" "+player1.playCards[count/12].suit);
}
else if (count>25){
player2.playCards[count%13] = card;
}
else if (count>12){
player3.playCards[count%13] = card;
}
else{
player4.playCards[count%13] = card;
}
count++;
}
}
}
package cardgame;
public class Players {
String name;
Card[] playCards = new Card[13];
public Players(String name){
this.name = name;
}
public void ShowPlayerCards(){
System.out.println("---------------------------------------------");
for (Card card : playCards){
if(card!=null)
System.out.println(card.rank + " of " + card.suit);
}
System.out.println("---------------------------------------------");
}
public String getName(){
return name;
}
}
package cardgame;
import java.util.*;
public class CardGame {
public static void main(String[] args) {
DeckOfCards deck = new DeckOfCards();
System.out.println("UnShuffeled Cards.");
deck.showCards();
deck.ShuffleCards();
System.out.println("Shuffeled Cards.");
deck.showCards();
Scanner input = new Scanner(System.in);
System.out.println("Player One...\nEnter Name:");
Players player1 = new Players(input.nextLine());
System.out.println("Player Two...\nEnter Name:");
Players player2 = new Players(input.nextLine());
System.out.println("Player Three...\nEnter Name:");
Players player3 = new Players(input.nextLine());
System.out.println("Player Four...\nEnter Name:");
Players player4 = new Players(input.nextLine());
deck.dealCards(player1, player2, player3, player4);
System.out.println("---------------------------------------------");
System.out.println(player1.getName());
player1.ShowPlayerCards();
System.out.println(player2.getName());
player2.ShowPlayerCards();
System.out.println(player3.getName());
player3.ShowPlayerCards();
System.out.println(player4.getName());
player4.ShowPlayerCards();
}
}