【发布时间】:2009-06-15 18:08:28
【问题描述】:
阅读更多书籍示例-这是一个部分扑克程序- 本段涉及直手....
首先给出的 - 只有相关部分......如果需要,将提供完整的代码......
int suits[5]; //index 1..4- value start at 1
int values[14]; //index 1..13- value same as rank, A = 1, K = 13
cin.get(rankCh);
switch (toUpper(rankCh)) {
case 'A': values = 1; break;
case '2': values = 2; break;
case '3': values = 3; break;
case '4': values = 4; break;
case '5': values = 5; break;
case '6': values = 6; break;
case '7': values = 7; break;
case '8': values = 8; break;
case '9': values = 9; break;
case 'T': values = 10; break;
case 'J': values = 11; break;
case 'Q': values = 12; break;
case 'K': values = 13; break;
default:
badCard = true;
}
其他功能:
bool isFlush(int suits[]) {
for(i = 1; i <= 4; i++)
if (suits[i] == 5) //5 here is Number of Cards
return true;
return false;
}
是的,我知道数组声明,但这就是它的定义方式——在文本中很好地证明了它......从 1 开始编号 我希望我的直手现在可以同时处理 Ace 高和低 - 因为上面定义的 A 是低...
两个版本:第一个似乎不确定正确的低 A...
代码
bool isStraight(int values[]) //Version one only straight- low aces only
{
int count = 0;
for (i = 1; i <= 13; i++) {
if (values[i] != 1) {
count++;
} else
count = 0;
if (count == 5) //5 is NUMCARDS
return true;
}
return false;
}
现在这是我需要一些建议的地方:拥有一个处理高低 ace 的函数:
bool isStraight(int values[]) //Version handles both high and low
{
int count = 0;
for (i = 1; i <= 13; i++) {
if (values[i] != 1) {
count++;
// if(i == 1 && values[1] != 0) //Check for high and low
// count++;
} else
count = 0;
if (count == 5) //5 is NUMCARDS
return true;
}
return false;
}
我在 cmets 中拥有的东西能同时处理高低 ace 吗...
由于 i = 1 表示为 ace,并且不确定哪些 values[1] 是正确的,应该是 values[13] 还是什么...可能类似于
if (i == 1)
values[13] //not sure...
建议-
- 不希望进行大规模更改 - 只是对我拥有的内容进行细微更改...我不想通过蛮力进行排序或解决,即喜欢 values[1] == 1 && values [2] ==1 you明白这一点 - 文本已经这样做了,但我正试图以这种方式重写它......
谢谢...希望我能完成我想要的修改...
【问题讨论】: