本文主要介绍用C语言实现的纸牌游戏的示例代码。文中的示例代码讲解的很详细,对我们学习C语言很有帮助。感兴趣的朋友可以跟着边肖学习一下。
:
目录
1.基本要求2。运行界面3。代码解释
1. 基本要求
一副没有花牌的扑克牌(J、Q、K、A、大王大、大王小)。两个人玩卡牌游戏,一个是用户,一个是电脑;
每轮给每个人发五张牌,用这五张牌建立一个二叉排序树。
用户先打牌,轮流打牌。一次只能出一张牌,而且要比别人大。比如用户出3,电脑就出大于3的牌,否则无法选择。
最先完成的人获胜。
2. 运行界面
1.头版
2.游戏描述
开始游戏
4.开始玩牌
5.游戏结束
3. 代码解释
# includestdio.h
#includestdlib.h
#includewindows.h
#includetime.h
int卡[5][2];//标记玩家和用户分别打出的牌。
int player card[5];//玩家的手
int计算机卡[5];//电脑的手
char bhu ase[5];
char chuase[5];
typedef结构节点
{
int数据;
结构节点* LChild
结构节点* RChild
}节点;
typedef结构树
{
int数据;
结构节点* LChild
结构节点* RChild
}树;
//游戏描述
void PlayingCardsyxsm()
{
printf(‘每个人每轮发五张牌,用五张牌建立一个二叉树。用户会先出牌,轮流出牌。\ n’);
Printf('一次只能发一个并且应该比其他的大',\ n ');
Printf('比如用户给3,计算机就要算出大于3的牌,否则无法选择;\ n’);
Printf('最先完成的人获胜。\ n’);
}
//发牌卡
void PlayingCardsfp()
{
int播放器;
int计算机;
//玩家和电脑各发五张牌
for(int I=0;i5;i ){
player=rand()% 9 2;
Printf('玩家发的牌:%d \n ',玩家);
playercard[i]=播放器;
computer=rand()% 9 ^ 2;
Printf('计算机发行的卡:%d \n ',计算机);
计算机卡[i]=计算机;
}
}
//打牌
void PlayingCardscp()
{
int player=0;//玩家在当前回合中打出的牌
int computer=0;//当前回合中计算机打出的牌
int player count=0;//玩家打出的牌数
int computer count=0;//电脑打出的牌数
bool flag=false
//每次出现最大值时,游戏也最多可以玩5轮。
for(int m=0;m 5;m)
{
//双方出牌时,总共最多打5轮。
for(int k=0;k 5;k)
{
for(int j=0;j 5;j)
{
//确定当前的牌可以打,比对手的大,而且你没打过这张牌。
if(playercard[j]电脑卡[j][0]==0)
{
Printf('玩家卡% c% d \ n ',bhuase [j],玩家卡[j]);
玩家计数;//玩家的牌数是1
//标记玩家已经打出这张牌
卡[j][0]=1;
player=player card[j];
睡眠(800);//在头文件函数#include windows.h中,充当休眠程序。
打破;
}
}
//如果玩家已经打完5张牌,玩家获胜并退出循环。
if(playercount==5)
{
Printf('玩家赢了!');
flag=true
打破;
}
for(int j=0;j 5;j)
{
//确定当前的牌可以打,比对手的大,而且你没打过这张牌。
if(计算机卡[j]玩家卡[j][1]==0)
{
Printf('计算机播放% c% d \ n ',Chuase [j],computer card[j]);
计算机计数;//计算机卡的数量1
//标记计算机已经打出这张牌
卡[j][1]=1;
computer=computer card[j];
睡眠(800);
打破;
}
}
//如果电脑已经打完5张牌,电脑获胜,退出循环。
if(计算机计数==5)
{
Printf('计算机赢了!');
flag=true
打破;
}
}
//如果玩家的牌大于电脑最大的牌,将电脑当前回合的牌值重置为0,继续下一回合。
if(玩家电脑)电脑=0;
//如果电脑的牌大于玩家的最大牌,则将玩家当前回合的牌值重置为0,继续下一回合。
if(电脑玩家)player=0;
如果(标志)断开;
}
}
//发牌后玩家的手牌
void PlayingCardsxswj()
{
printf(' player \ n ');
printf(' % d % d % d % d % d % d % d \ n ',playercard[0],playercard[1],playercard[2],playercard[3],playercard[4],player card[5]);
}
//发完牌后电脑的手牌
void PlayingCardsxsdn()
{
printf('电脑\ n’);
printf(' % d % d % d % d % d % d % d \ n ',computercard[0],computercard[1],computercard[2],computercard[3],computercard[4],computer card[5]);
}
//初始化树的头结点为空
void treechushihua(node *t)
{
t=空
}
//建立平衡二叉树
node *treecharu(node *t,int key)
{
//如果头结点为空,就将当前节点设置为根节点
if(t==NULL)
{
node * p;
p=(节点*)malloc(sizeof(节点));
p-data=key;
p-l child=NULL
p-RChild=NULL;
t=p;
}
//如果头结点不为空,则进行平衡二叉树的插入操作
其他
{
//插入结点的值小于根节点,则插入左子树
如果(关键t数据)
t-LChild=treecharu(t-LChild,key);
//插入结点的值大于等于根节点,则插入右子树
其他
t-RChild=treecharu(t-RChild,key);
}
return t;
}
//将玩家手牌存储到平衡二叉树中
节点*健力宝(节点*t)
{
int i,key
for(I=0;i5;我)
{
key=玩家卡[I];
t=treecharu(t,key);
}
return t;
}
//将电脑手牌存储到平衡二叉树中
节点*健力奇(节点*t)
{
int i,key
for(I=0;i5;我)
{
密钥=计算机卡[I];
t=treecharu(t,key);
}
return t;
}
//顺序输出玩家或电脑手牌
void treepaixu1(node *t)
{
如果(t!=空)
{
treepaixu 1(t-l儿童);
printf('%d ',t-data);
treepaixu 1(t-RChild);
}
}
//先序遍历玩家平衡二叉树
void treepaixu2(node *t,int *p)
{
if(t==NULL)返回;
其他
{
//先序遍历,将玩家手牌有序化
treepaixu2(t-LChild,p);
玩家卡[(* p)]=t-data;
treepaixu2(t-RChild,p);
}
}
//先序遍历电脑平衡二叉树
void treepaixu3(node *t,int *p)
{
if(t==NULL)返回;
其他
{
//先序遍历,将电脑手牌有序化
treepaixu3(t-LChild,p);
计算机卡[(* p)]=t-data;
treepaixu3(t-RChild,p);
}
}
//主函数
int main()
{
int k=0;
//随机函数,通过时间种子来获取随机数种子,获得随机数
srand((无符号)时间(空));
int n=0;
//选择菜单
而(k!=-1)
{
puts(" ");
puts(" ");
puts(" ");
printf('\t\t\t ****纸牌游戏* * * * \ n ');
printf('\t\t\t****1 .游戏说明* * * * \ n ');
printf('\t\t\t****2 .开始游戏* * * * \ n ');
printf('\t\t\t****3 .开始出牌* * * * \ n ');
printf('\t\t\t****4 .游戏结束* * * * \ n ');
printf(' \ t \ t \ t * * * * * * * * * * * * * * \ n ');
puts(" ");
printf(' \ t \ t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ');
printf(' \ t \ t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ');
puts(" ");
printf('\t\t\t请输入(1、2、3、4):\ n’);
scanf('%d ',k);
开关(k){
//游戏说明
案例一:PlayingCardsyxsm();打破;
//发牌阶段
案例2:{
//发牌
PlayingCardsfp();
//建立玩家二叉树
节点* t1=空
t1=健力布(t1);
printf('玩家手牌为:');
treepaixu 1(t1);
//建立电脑二叉树
节点* t2=空
t2=健力奇(T2);
puts(" ");
printf('电脑手牌为:');
treepaixu 1号(T2);
//玩家手牌有序化
n=0;
treepaixu2(t1,n);
//电脑手牌有序化
n=0;
treepaixu3(t2,n);
puts(" ");
//输出玩家和电脑的手牌
PlayingCardsxswj();
PlayingCardsxsdn();
打破;
}
//出牌阶段
案例3:{
PlayingCardscp();
打破;
}
//退出游戏
情况四:k=-1;打破;
}
}
返回0;
}
以上就是C语言实战之纸牌游戏的详细内容,更多关于C语言纸牌游戏的资料请关注我们其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。