I need help coding a video poker game in java First off I do
I need help coding a video poker game in java. First off: I don\'t know how to sort a hand (5 cards) by rank value. This is what I tried:
void JButton2_actionPerformed(java.awt.event.ActionEvent event)
{
for (int i = SIZE_OF_HAND; i > 0; i--){
for (int j = 0; j < i - 1; j++){
Card c1 = myHand.getCard(j);
Card c2 = myHand.getCard(j + 1);
Card temp = c1;
if (c1.compareTo(c2) > 0) {
c1 = c2;
c2 = temp;
}
}
}
and I also tried this:
myHand.sort();
where .sort() is defined in the class Hand as:
public void sort() {
Collections.sort(hand);
}
None of these methods work. This is pretty urgent, so please help! Thanks.
Solution
Hand.java package javapoker; public class Hand { private Card[] cards; private int[] value; Hand(Deck d) { value = new int[6]; cards = new Card[5]; for (int x=0; x<5; x++) { cards[x] = d.drawFromDeck(); } int[] ranks = new int[14]; //miscellaneous cards that are not otherwise significant int[] orderedRanks = new int[5]; boolean flush=true, straight=false; int sameCards=1,sameCards2=1; int largeGroupRank=0,smallGroupRank=0; int index=0; int topStraightValue=0; for (int x=0; x<=13; x++) { ranks[x]=0; } for (int x=0; x<=4; x++) { ranks[ cards[x].getRank() ]++; } for (int x=0; x<4; x++) { if ( cards[x].getSuit() != cards[x+1].getSuit() ) flush=false; } for (int x=13; x>=1; x--) { if (ranks[x] > sameCards) { if (sameCards != 1) //if sameCards was not the default value { sameCards2 = sameCards; smallGroupRank = largeGroupRank; } sameCards = ranks[x]; largeGroupRank = x; } else if (ranks[x] > sameCards2) { sameCards2 = ranks[x]; smallGroupRank = x; } } if (ranks[1]==1) //if ace, run this before because ace is highest card { orderedRanks[index]=14; index++; } for (int x=13; x>=2; x--) { if (ranks[x]==1) { orderedRanks[index]=x; //if ace index++; } } for (int x=1; x<=9; x++) //can\'t have straight with lowest value of more than 10 { if (ranks[x]==1 && ranks[x+1]==1 && ranks[x+2]==1 && ranks[x+3]==1 && ranks[x+4]==1) { straight=true; topStraightValue=x+4; //4 above bottom value break; } } if (ranks[10]==1 && ranks[11]==1 && ranks[12]==1 && ranks[13]==1 && ranks[1]==1) //ace high { straight=true; topStraightValue=14; //higher than king } for (int x=0; x<=5; x++) { value[x]=0; } //start hand evaluation if ( sameCards==1 ) { value[0]=1; value[1]=orderedRanks[0]; value[2]=orderedRanks[1]; value[3]=orderedRanks[2]; value[4]=orderedRanks[3]; value[5]=orderedRanks[4]; } if (sameCards==2 && sameCards2==1) { value[0]=2; value[1]=largeGroupRank; //rank of pair value[2]=orderedRanks[0]; value[3]=orderedRanks[1]; value[4]=orderedRanks[2]; } if (sameCards==2 && sameCards2==2) //two pair { value[0]=3; //rank of greater pair value[1]= largeGroupRank>smallGroupRank ? largeGroupRank : smallGroupRank; value[2]= largeGroupRank
