有只小狐狸 发表于 2020-11-8 19:45

小白学习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;
}

运行结果:

Tea毒生灵 发表于 2020-11-9 09:53

跟着学习吧感谢楼主

qqbing1994 发表于 2022-7-31 15:55

楼主你好,我是c语言初学者,有个问题不明白请教一下,为什么要将ok宏定义为0,可不可也用指针将ok字符指向,然后后续输出字符ok?

xjshuaishuai 发表于 2020-11-8 20:09

学习了,谢谢!

郑智薰 发表于 2020-11-8 20:16

厉害厉害我以前也想做 没做出来拿走学习了

sergin 发表于 2020-11-8 20:25

学习一下,谢谢分享

186978177 发表于 2020-11-8 20:29

拿回去学习学习

QingYi. 发表于 2020-11-8 20:32

c语言我学的时候 也有这个编程

aimzhangyuting 发表于 2020-11-8 20:37

感谢楼主分享好人一生平安

qdfxy 发表于 2020-11-14 20:52

拿走学习学习
页: [1] 2
查看完整版本: 小白学习C语言1--猜拳游戏