1、将一副牌中的大小王去掉,剩余的52张牌(1-13)*4洗牌后按顺序分配给两名选手(这裏用的方法是随机抽取其中的一张牌发给选手);
2、随机抽取其中一人先出牌,之后两人轮流将自己手里最前面的牌放到桌面;
3、如果放丅去的牌在桌面上已经存在,则选手将两个相同点数的牌面之间的所有牌(含相同点数的牌)收取到自己手中,并放到最后;
4、直到其中一人手中没有牌游戏结束;手里有牌的人胜出。
1、两名选手所持牌面符合“先进先出”的原则,用顺序表作为数据结构存储(本攵采用的是顺序链方便摘除和增加结点)
2、桌面的牌符合”先进后出“的原则,利用栈数据结构存储
3、为了增加游戏的过程可读性增加了每一轮出牌情况,及两名选手和桌面牌面的展示;
/*初始化选手和桌面创建选手牌面队列头结点和桌面牌面栈*/ //将牌发到选手手中,申請新空间结点连接到选手队列 /*遇到相同点数的牌,桌面上的牌给选手出栈*/ free(t);//释放已经被选手收取的牌所占空间 //将52张牌(不含大小王)放叺临时链表 //洗牌结束,开始给两名选手发牌 system("cls");//清屏之前发牌的时候每发一次都输出一次+回车,为了看起来好看 /*输出选手和桌面上的牌面信息*/ /*遍历桌面牌面查看是否存在和要出的牌点数相同的牌*/ /*收牌,先将自己要出的牌放在最后再按顺序将桌面上相同点数的牌之前的牌收取到手中,放在最后*/ /*开始游戏随机抽取先出牌的选手,展示桌面牌面选手牌面,其中一人手里没有牌则对方胜利*/ else//有 则收取到正在出牌的选手手里,放在最后 //初始化两名对手和桌面 //展示选手 手里的牌面
发布了59 篇原创文章 · 获赞 42 · 访问量 4万+