小白学习C语言1--猜拳游戏
最近在学习C语言,为了监督自己每天学习,在学习的过程中坚持写程序发帖!每天学习一点点,积少成多,加油!2020/11/8
猜拳游戏,功能很简单:和电脑进行猜拳,显示胜负。结束游戏后可显示双方出过手势和胜负历史记录
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#define OK 0
int comp; //电脑手势
int human;//玩家手势
int result;//胜负结果
char *s[]={"石头","剪刀","布"};
char *showresult[]={"平局","你输了","你赢了"};
//游戏初始化
int initialize()
{
srand(time(NULL));
printf("猜拳游戏开始啦!\n\n");
return OK;
}
//进行游戏(电脑、玩家出拳并记录)
int game(int his_comp[],int his_human[],int count)
{
int i;
comp=rand()%3;
his_comp=comp;
do
{
printf("石头剪刀布>>>");
for(i=0;i<3;i++)
printf("%d-%s ",i,s);
printf(":");
scanf("%d",&human);
his_human=human;
}while(human<0||human>2); //输入错误检验
printf("我出%s,你出%s,",s,s);
return OK;
}
//胜负判断并记录显示胜负结果
int judge(int his_result[],int count)
{
result=(human-comp+3)%3;
his_result=result;
printf("%s\n\n",showresult);
}
//询问是否再次游戏
int comfirm_retry()
{
int retry;
do
{
printf("再来一次吗? 0-否 1-是 :");
scanf("%d",&retry);
}while(retry!=0&&retry!=1);
return retry;
}
//历史记录
int history(int his_comp[],int his_human[],int his_result[],int count)
{
int i;
printf(">>>游戏历史记录<<<\n");
for(i=0;i<count;i++)
printf("round %d:我出%-4s,你出%-4s,%s\n",i+1,s],s],showresult]);
return OK;
}
int main()
{
int count; //游戏进行次数
const int MAX_count=50; //游戏最大进行次数
int his_comp; //电脑历史手势
int his_human;//玩家历史手势
int his_result;//历史胜负结果
int retry;//是否继续游戏标志
int i;
initialize(); //游戏初始化
do
{
game(his_comp,his_human,count); //进行游戏
judge(his_result,count); //胜负判断并记录显示胜负结果
retry=comfirm_retry();//确认是否再次游戏
count++;
}while(retry==1&&count<50);
if(count==50)
printf("休息一下吧\n");
for(i=0;i<10;i++)
printf("---");
printf("\n游戏结束\n\n");
history(his_comp,his_human,his_result,count);//显示历史记录
return OK;
}
运行结果:
跟着学习吧感谢楼主 楼主你好,我是c语言初学者,有个问题不明白请教一下,为什么要将ok宏定义为0,可不可也用指针将ok字符指向,然后后续输出字符ok? 学习了,谢谢! 厉害厉害我以前也想做 没做出来拿走学习了 学习一下,谢谢分享 拿回去学习学习 c语言我学的时候 也有这个编程 感谢楼主分享好人一生平安 拿走学习学习
页:
[1]
2