具体任务如下:
(1)一副扑克52张牌(去掉大小王),分别是A 2 3 4 5 6 7 8 9 10 J Q K,每种4张(不考虑花色);
(2)由电脑随机洗牌,并分成4份(4个电脑玩家),并设计出一个对弈函数,每家调用该函数实现自动出牌;出牌后,若所有下家都没有牌出,则当前这一家可以选择出其它牌。
(3)一次出牌可以是1张、2张一样、3张一样或者4张一样,下家所出的牌,需要大于上家出的牌,从小到大的顺序为:2 3 4 5 6 7 8 9 10 J Q K A,若上家出2张一样的,那下家也要出2张一样的,而且比它大的牌;
(4)增加其它规则,如:允许连对,例如2张J和2张Q可以一起出牌,同样3张或4张也可以连对一起出牌,也可以几个连对一起出牌;
(5)扑克牌增加花色(黑桃 红桃 梅花 方块)和大小王,实现其它扑克牌玩法;
(6)用户自行设计任务要求。
2.教学要求
(1)能理解项目需求,并分解成各个小任务;
(2)能运用C语言知识,设计项目的代码框架、设计扑克牌结构体;
(3)能按易到难,用C语言实现各项任务;
(4)能按实践报告内容和格式要求,编写实践报告;
(5)能按项目答辩要求,完成项目答辩相关工作。
3.重点与难点
(1)重点:游戏规则的设计,如何用C语言结构体对扑克牌进行描述。
(2)难点:在各种游戏规则下,实现对扑克牌的大小比较。
随机生成54张牌,参考:
#include<stdio.h>
#include<stdlib.h>
void fun(int a[]){
int i;
int j;
int flag=0;
int num = 0;
for(i=0;i<13;i++){
flag = 1;
while(flag){
num = (rand() % 54) +1;
for(j=0;j<i;j++){
if(num == a[j]){
break;
}
}
if(j==i){
flag=0;
a[i] = num;
}
}
}
}
void main()
{
/*
假设1~54分别代表54张牌对应的数字
*/
int i;
int a[13];
fun(a);
for(i=0;i<13;i++)
printf("%d\t",a[i]);
}