My first big attempt at OOP in Java. I designed it with the intent of adding other card games to play in the future. Please criticize and let me know how I did. import java.util.; import java.lang.;
public class CardGame{
public static void main(String[] args){
TexasHoldem game = new TexasHoldem();
game.play();
}
}
class Card{
private String suit;
private String value;
public Card(String valueInput, String suitInput){
value = valueInput;
suit = suitInput;
}
public String getSuit(){
return suit;
}
public String getValue(){
return value;
}
public String toString(){
return value + " of " + suit;
}
}
class Deck{
private List<Card> deck;
private String[] suits = {"Hearts", "Clubs", "Spades", "Diamonds"};
private String[] values = {"Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"};
public Deck(){
deck = new ArrayList<Card>();
for(int i = 0; i < values.length; i++){
for(int j = 0; j < suits.length; j++){
deck.add(new Card(values[i], suits[j]));
}
}
shuffle();
}
public void shuffle(){
Random rand = new Random();
for(int i = deck.size(); i > 0; i--){
int index = rand.nextInt(i);
Card temp = deck.get(index);
deck.set(index, deck.get(i - 1));
deck.set(i - 1, temp);
}
}
public Card getCard(){
Random rand = new Random();
int index = rand.nextInt(deck.size());
Card output = deck.get(index);
deck.remove(index);
return output;
}
public String toString(){
for(Card c : deck) System.out.println(c);
return "";
}
}
class CPU{
public List<Card> cpuCards;
private String name;
public CPU(String nameInput){
name = nameInput;
cpuCards = new ArrayList<Card>();
}
public void addCard(Card card){
cpuCards.add(card);
}
public void removeCard(Card card){
cpuCards.remove(cpuCards.indexOf(card));
}
public String toString(){
String output = name + "\n";
for(Card c : cpuCards) output += c.toString() + "\n";
return output;
}
}
class TexasHoldem{
private Deck deck = new Deck();
private List<Card> table;
private List<CPU> computers;
private CPU player;
public TexasHoldem(){
table = new ArrayList<Card>();
computers = new ArrayList<CPU>();
Scanner scan = new Scanner(System.in);
System.out.println("How many players (2 - 8)?");
int amount = scan.nextInt();
player = new CPU("Redditor");
for(int k = 0; k < 2; k++) player.addCard(deck.getCard());
for(int i = 1; i < amount; i++){
CPU cpu = new CPU("CPU" + i);
for(int j = 0; j < 2; j++) cpu.addCard(deck.getCard());
computers.add(cpu);
}
}
public String getFlop(){
String flop = "Flop" + "\n";
for(int i = 0; i < 3; i++){
Card c = deck.getCard();
table.add(c);
flop += c.toString() + "\n";
}
return flop;
}
public String getTurn(){
Card c = deck.getCard();
table.add(c);
return "Turn" + "\n" + c;
}
public String getRiver(){
Card c = deck.getCard();
table.add(c);
return "River" + "\n" + c;
}
public void play(){
System.out.println(player);
for(CPU cpu : computers) System.out.println(cpu);
System.out.println(getFlop());
System.out.println(getTurn() + "\n");
System.out.println(getRiver());
}
}