在C中检查骰子和骰子的组合
我尝试用C编写一个小骰子游戏。我是C的初学者,还需要学习很多东西。用户插入5个骰子的数字。程序将每个数字放入一个数组,然后打印出4种情况中的一种:在C中检查骰子和骰子的组合,c,C,我尝试用C编写一个小骰子游戏。我是C的初学者,还需要学习很多东西。用户插入5个骰子的数字。程序将每个数字放入一个数组,然后打印出4种情况中的一种: Grand=所有5个骰子上的数字相同 扑克=4个骰子上的相同数字 满屋子=3个相等的数字和2个相等的数字 失去=没有大的、扑克的或满座的房子 我只需要编写一个if语句块,检查所有可能的组合,然后将正确的大小写打印到控制台中。但那要花我很长时间。所以我想问,是否有更简单的方法来实现这一点 我对Grand和Lost进行了编码,到目前为止: #includ
#include <stdio.h>
int main() {
int dices[5];
printf("Program Dice game \n\n");
for(int i=0; i < 5; i++) {
printf("dice %i: ", i+1);
scanf("%i", &dices[i]);
}
printf("dice \t");
printf("1 \t");
printf("2 \t");
printf("3 \t");
printf("4 \t");
printf("5 \n");
printf("number \t");
for(int i=0; i < 5; i++) {
printf("%i \t", dices[i]);
}
printf("\n\n");
if(dices[0] == dices[1] && dices[0] == dices[2]
&& dices[0] == dices[3] && dices[0] == dices[4]) {
printf("Win! Grand!");
} else {
printf("Lose!");
}
return 0;
}
#包括
int main(){
整数骰子[5];
printf(“程序骰子游戏\n\n”);
对于(int i=0;i<5;i++){
printf(“骰子%i:,i+1);
scanf(“%i”和骰子[i]);
}
printf(“dice\t”);
printf(“1\t”);
printf(“2\t”);
printf(“3\t”);
printf(“4\t”);
printf(“5\n”);
printf(“数字\t”);
对于(int i=0;i<5;i++){
printf(“%i\t”,骰子[i]);
}
printf(“\n\n”);
如果(骰子[0]==骰子[1]&&骰子[0]==骰子[2]
&&骰子[0]==骰子[3]&骰子[0]==骰子[4]){
printf(“赢!大!”);
}否则{
printf(“丢失!”);
}
返回0;
}
一种解决方案是对骰子数组进行排序。这样,你就可以少做很多比较了。下面是一个例子:
int cmp_func (const void *a, const void *b)
{
return (*(int*)a - *(int*)b);
}
int main() {
int dice[5] = {2, 3, 2, 3, 3}; //arbitrary dice combination
qsort(dice, 5, sizeof(int), cmp_func);
if (dice[0] == dice[4])
{
printf("Grand\n");
}
else if (dice[1] == dice[4] || dice[0] == dice[3])
{
printf("Poker\n");
}
else if ((dice[0] == dice[2] && dice[3] == dice[4]) || (dice[0] == dice[1] && dice[2] == dice[4]))
{
printf("Full House\n");
}
else
{
printf("Lose\n");
}
return (0);
}
一旦你的骰子被排序,如果第一个和最后一个相等,你可以假设它们都相等。如果第一个等于第四个或第二个等于最后一个,你可以假设你有4个相同的骰子,等等
请注意,如果骰子数组的初始顺序很重要,则必须复制它并使用另一个数组进行排序/测试。骰子的复数形式是骰子。