import java.awt.*; import java.awt.event.*; import javax.swing.*; public class PokerValues implements ActionListener { //User Settings boolean INFINITE_DRAW = false; int DRAW_NUMBER = 5; String GAME_NAME = "Poker Hand Values"; //Declares Swing Variables JFrame mainFrame; JPanel mainPanel; JPanel ActionPanel; JPanel ScorePanel; JButton card[] = new JButton[5]; JButton redraw, draw, rules, exit; JLabel scoreLabel, total; //Declares variables used to store the random number String num[] = new String[5]; String suit[] = new String[5]; int number[] = new int[5]; int cardSuit[] = new int[5]; //Arrays for the cards String Cards[][] = { {"a","2","3","4","5","6","7","8","9","10","j","q","k"}, {"h","s","c","d"} }; int values[][] = { {1,2,3,4,5,6,7,8,9,10,11,12,13}, {1,2,3,4} }; //Declares the String that holds the card String strCard[] = new String[5]; //Declares variables used for displaying the images Icon image[] = new Icon[5]; Icon held[] = new Icon[5]; Icon deal = new ImageIcon("images/deal.gif"); Icon newHnd = new ImageIcon("images/new.gif"); Icon Exit = new ImageIcon("images/exit.gif"); //Declares boolean statements that check for a held card. And if redraw has already be clicked. boolean Held[] = new boolean[5]; boolean keep[] = new boolean[5]; boolean redrawChk; int redrawCnt; //Declares an array to keep track of cards used (Only saves 5x6 cards to prevent using too many cycles) int usedCnt=1; String used[][] = new String[5][6]; //Declares Variables for the score and total points int point=0; String score; //Declares variables to store temporary data int Tnumber[] = new int[5]; int TcardSuit[] = new int[5]; String Tnum[] = new String[5]; String Tsuit[] = new String[5]; int Tnumber2[] = new int[5]; int TcardSuit2[] = new int[5]; String Tnum2[] = new String[5]; String Tsuit2[] = new String[5]; int cardNumbers[] = new int[5]; int cardSuits[] = new int[5]; int cardNumber[] = new int[5]; int cardSuit2[] = new int[5]; //Generates a random number and matches it with the "Cards" array public void random() { //Gets a Random number int card=0, card2=0; for(int j=0; j<5; j++) { for(int i=0; i<2; ) { card =(int) Math.round(Math.random() *13); if (card < 13) i++; } for(int i=0; i<2; ) { card2 =(int) Math.round(Math.random() *6); if (card2 < 4) i++; } //Matches the Number to Card array this.num[j] = Cards[0][card]; this.suit[j] = Cards[1][card2]; this.number[j] = values[0][card]; this.cardSuit[j] = values[1][card2]; //Makes sure the same card isn't used twice for(int k=0; k=j; i--) { if(cardNumbers[i-1] > cardNumbers[i]) { int t=cardNumbers[i-1]; cardNumbers[i-1] = cardNumbers[i]; cardNumbers[i] = t; } if(cardSuits[i-1] > cardSuits[i]) { int tmp=cardSuits[i-1]; cardSuits[i-1] = cardSuits[i]; cardSuits[i] = tmp; } } } if(redrawChk || INFINITE_DRAW) { //Starts Checking for any hands with points if(cardNumbers[0] == 1 && cardSuits[0] == cardSuits[1] && cardNumbers[1] == cardNumbers[2]-1 && cardNumbers[1] >= 10 && cardSuits[1] == cardSuits[2] && cardNumbers[2] == cardNumbers[3]-1 && cardSuits[2] == cardSuits[3] && cardNumbers[3] == cardNumbers[4]-1 && cardSuits[3] == cardSuits[4]) { score = "You got a Royal Flush. This is worth 500 points."; point = point + 500; } else if(cardNumbers[0] == cardNumbers[1]-1 && cardSuits[0] == cardSuits[1] && cardNumbers[1] == cardNumbers[2]-1 && cardSuits[1] == cardSuits[2] && cardNumbers[2] == cardNumbers[3]-1 && cardSuits[2] == cardSuits[3] && cardNumbers[3] == cardNumbers[4]-1 && cardSuits[3] == cardSuits[4] || cardNumbers[0] == 1 && cardNumbers[1] == cardNumbers[2]-1 && cardNumbers[2] == cardNumbers[3]-1 && cardNumbers[3] == cardNumbers[4]-1 && cardNumbers[4] == 13) { score = "You got a Straight Flush. This is worth 300 points."; point = point + 300; } else if(cardNumbers[0] == cardNumbers[1] && cardNumbers[1] == cardNumbers[2] && cardNumbers[2] == cardNumbers[3] || cardNumbers[1] == cardNumbers[2] && cardNumbers[2] == cardNumbers[3] && cardNumbers[3] == cardNumbers[4]) { score = "You got Four of a Kind. This is worth 250 points."; point = point + 250; } else if(cardNumbers[0] == cardNumbers[1] && cardNumbers[1] == cardNumbers[2] && cardNumbers[3] == cardNumbers[4] || cardNumbers[0] == cardNumbers[1] && cardNumbers[2] == cardNumbers[3] && cardNumbers[3] == cardNumbers[4]) { score = "You got a Full House. This is worth 200 points."; point = point + 200; } else if(cardSuits[0] == cardSuits[1] && cardSuits[1] == cardSuits[2] && cardSuits[2] == cardSuits[3] && cardSuits[3] == cardSuits[4]) { score = "You got a Flush. This is worth 150 points."; point = point + 150; } else if(cardNumbers[0] == cardNumbers[1]-1 && cardNumbers[1] == cardNumbers[2]-1 && cardNumbers[2] == cardNumbers[3]-1 && cardNumbers[3] == cardNumbers[4]-1 || cardNumbers[0] == 1 && cardNumbers[1] == cardNumbers[2]-1 && cardNumbers[2] == cardNumbers[3]-1 && cardNumbers[3] == cardNumbers[4]-1 && cardNumbers[4] == 13) { score = "You got a Straight. This is worth 150 points."; point = point + 150; } else if(cardNumbers[0] == cardNumbers[1] && cardNumbers[1] == cardNumbers[2] || cardNumbers[1] == cardNumbers[2] && cardNumbers[2] == cardNumbers[3] || cardNumbers[2] == cardNumbers[3] && cardNumbers[3] == cardNumbers[4]) { score = "You got Three of a Kind. This is worth 100 points."; point = point + 100; } else if(cardNumbers[0] == cardNumbers[1] && cardNumbers[2] == cardNumbers[3] || cardNumbers[1] == cardNumbers[2] && cardNumbers[3] == cardNumbers[4] || cardNumbers[0] == cardNumbers[1] && cardNumbers[3] == cardNumbers[4]) { score = "You got Two Pair. This is worth 75 points."; point = point + 75; } else if(cardNumbers[0] == cardNumbers[1] || cardNumbers[1] == cardNumbers[2] || cardNumbers[2] == cardNumbers[3] || cardNumbers[3] == cardNumbers[4]) { score = "You got a Pair. This is worth 50 points."; point = point + 50; } else score = "You got nothing. This is worth 0 points."; //Adds the Hand value to the Label "scoreLabel" scoreLabel = new JLabel(score, SwingConstants.CENTER); } else scoreLabel = new JLabel("Click the card to hold, then click deal.", SwingConstants.CENTER); //Adds the total points to the label "total" total = new JLabel("Total: " + point, SwingConstants.CENTER); } //Adds the buttons to the pane public void addButtons() { //Adds the listeners that listen for when a button is pressed for(int i=0; i<5; i++) card[i].addActionListener(this); redraw.addActionListener(this); draw.addActionListener(this); rules.addActionListener(this); exit.addActionListener(this); //Adds the buttons to the panels for(int i=0; i<5; i++) mainPanel.add(card[i]); ScorePanel.add(scoreLabel); ScorePanel.add(total); //ScorePanel.add(rules); if(redrawChk == false || INFINITE_DRAW) ActionPanel.add(redraw); ActionPanel.add(draw); ActionPanel.add(exit); scoreLabel.setBorder(BorderFactory.createEmptyBorder(5,5,2,5)); total.setBorder(BorderFactory.createEmptyBorder(5,5,2,5)); } //Changes the image of held cards public void hold() { for(int i=0; i<5; i++) keep[i] = false; //Adds the images of the held cards for(int i=0; i<5; i++) held[i] = new ImageIcon("images/" + strCard[i] + "-h.gif"); //Changes the image if the card is held for(int i=0; i<5; i++) { if(Held[i]) { card[i] = new JButton(held[i]); keep[i] = true; } else card[i] = new JButton(image[i]); } //Runs the addButtons() method addButtons(); } //Keeps cards being held and replaces the other cards public void redraw() { //Initializes the temporary variables for(int i=0; i<5; i++) { Tnum[i] = num[i]; Tsuit[i] = suit[i]; Tnumber[i] = number[i]; TcardSuit[i] = cardSuit[i]; } //If there are more than 6 values in the used array, then it starts over if(usedCnt == 6) usedCnt = 1; //Adds the last set of cards to the used array int t=usedCnt; for(int i=t-1; i