Sign in to follow this  

5 card dd card recegnition

This topic is 4809 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

int game::rank() { //starts the loop, it may go throurh it a few usless times but it is the inly accurate way for(loop[1] = 0; loop[1]<5; loop[1]++) { for(loopa = 0; loopa<5; loopa++) { //2 pair if(mycard[loop[1]] == mycard[loop[1]+1] && mycard[loop[1]+2] == mycard[loop[1]+3]) { if(loop[1]+3 <=4) { card_rank[1] = 27 + mycard[loop[1]] + mycard[loop[1]+2]; return 0; } } //basic pair if(mycard[loop[1]] == mycard[loop[1]+1]) { card_rank[1] = mycard[loop[1]]+13; } //3 of a kind else if(mycard[loop[1]] == mycard[loop[1]+1] && mycard[loop[1]] == mycard[loop[1]+2]) { card_rank[1] = mycard[loop[1]] + 120; } //-------------------------- if(pccard[loop[1]] == pccard[loop[1]+1] && pccard[loop[1]+2] == pccard[loop[1]+3]) { if(loop[1]+3 <=4) { card_rank[2] = 27 + pccard[loop[1]] + pccard[loop[1]+2]; return 0; } } //basic pair if(pccard[loop[1]] == pccard[loop[1]+1]) { card_rank[2] = pccard[loop[1]]+13; } //3 of a kind else if(pccard[loop[1]] == pccard[loop[1]+1] && pccard[loop[1]] == pccard[loop[1]+2]) { card_rank[2] = pccard[loop[1]] + 120; } } } } that was only part of it, I am currently finishing it. please post any comments.

Share this post


Link to post
Share on other sites
What is this loop[1] that shows up all over the place???

No wait, don't tell me you have an *array of global loop counter variables*???

Also, you're not using loopa anywhere.

Also, it looks like you think array indices start at 1. No no no. They start at 0.

Also, I have absolutely no idea what your card_rank values are supposed to mean. Use some symbolic names, at the very least. And don't worry about packing them in tightly. As long as they're ordered.

Also, assuming a 5-card hand, what do you expect to happen when you try to check mycard[loop[1]+3] on the last loop[1] iteration?

Also, don't try to repeat the check with mycard and pccard all jumbled together like that. You're going to be doing all the same things. So write your function so it takes a 'hand' as input, and then call it with mycard[], then with pccard[] and have it return the rank() of each (instead of trying to store it in some other array).

Oh, here's a hint that will probably make things much easier: Instead of trying to look for matched values, try making a tally of how many of each value there are:


int values[13] = {0};
// Each element counts the number of cards in the hand whose
// value equals the array index.
for (int i = 0; i < 5; i++) {
values[mycard[i]]++;
}



Then, you can go through and check if there are any 2s, 3s or 4s in the array:


int paircount = 0, triplecount = 0, quadcount = 0;
for (int i = 0; i < 13; i++) {
if (values[i] == 2) paircount++;
// similarly for the others
}
// Going from that information to the hand type is left as an
// exercise, as is "remembering" the value that was
// paired/tripled/quadrupled. Although, there wouldn't be
// anything really wrong with just looking it up again.

Share this post


Link to post
Share on other sites

This topic is 4809 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this