5 card dd card recegnition

Started by
0 comments, last by Zahlman 19 years, 6 months ago
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.
Advertisement
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]++;}


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 == 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.

This topic is closed to new replies.

Advertisement