小棍游戏

作者在 2011-11-19 23:13:58 发布以下内容
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int xgnum;//全局变量,当前小棍的数目
void mainMenu();//提示
int getxgNum(int rexg);//机器取棍数目
int rand1_3();//机器随机取棍数目

void main()
{
    int userget;
    int macget;
    bool overleap=false;//游戏结束标志
    mainMenu();
    time_t t;
    srand((unsigned) time(&t));
    //初始小棍的数目大于10小于20
    while(xgnum<10)
    {
        xgnum=1+(int)(20.0*rand()/(RAND_MAX+1.0));
    }
    printf("      计算机随机产生%d个小棍\n",xgnum);

    while(!overleap)
    {
        printf("请输入你要取走的小棍数目(1,2,3):");
        scanf("%d",&userget);
        while(userget<1||userget>3)
        {
            printf("输入数目错误请重新输入\n");
            printf("请输入你要取走的小棍数目(1,2,3):");
            scanf("%d",&userget);
        }
        xgnum=xgnum-userget;
        printf("还剩%d个小棍\n",xgnum);

        if(xgnum==1)
        {
            printf("用户赢了\n");
            overleap=true;
        }
        else
        {
            macget=getxgNum(xgnum);
            xgnum=xgnum-macget;
            printf("机器拿走了%d个小棍\n还剩%d个小棍\n",macget,xgnum);
            if(xgnum==1)
            {
                printf("机器赢了\n");
                overleap=true;
            }
        }
    }

}
//机器取棍数目
int getxgNum(int rexg)
{
    int tmp;
    tmp=rexg%4-1;//这个是算法的关键
    if(tmp==-1)
        return 3;
    else if(tmp==0)
        return rand1_3();
    else
        return tmp;
}

//机器随机取棍数目
int rand1_3()
{
    int tmp;
    tmp=(int)rand()%3;
    if(tmp==0)
        tmp=3;
    else if(tmp==1)
        tmp=1;
    else
        tmp=2;
    return tmp;
}
//全局变量,当前小棍的数目
void mainMenu()
{
    printf("...........欢迎来玩小棍游戏!................\n");
    printf("............介绍下游戏规则...................\n");
    printf("...1 每次只能取走1,2,3个小棍.................\n");
    printf("...2 当用户取过小棍,还剩一个时,用户赢......\n");
    printf("...3 当机器取过小棍,还剩一个时,机器赢......\n");
}
C/C++ | 阅读 1162 次
文章评论,共0条
游客请输入验证码
浏览7802次
最新评论