正文

好玩的猜数游戏2005-04-10 20:46:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/goal00001111/510.html

分享到:

/*猜数游戏*/        /*程序产生一个随机数,游戏者输入数据进行猜测。管理员可输入密码,        其中普通管理员只能获得答案,超级管理员获得答案并能修改普通管理员密码*/ #include<stdio.h> #include<stdlib.h> #include<string.h> #include<time.h>          #define NO 0 #define YES 1 #define QUIT -1 #define EASY 1 #define COMMON 2 #define HARD 3 #define PASSWORD2 -100 /*超级管理员密码,不可修改*/        char *PasswordName = "nihao";/*超级管理员确认密码,不可修改*/ int Password1 =-10 ;  /*普通管理员密码,可修改*/ long number;       /*计算机产生的随机数*/ long guess_value=0; /*游戏者输入的猜测数*/ int nbr_of_guesses=0;/*累加游戏者猜测的次数*/ int done=0;  /*标记游戏者是否猜对,若猜对则  done=1*/ long chushu;       void the_back_door(int password,long answer);  /*开个后门好作弊,判断普通或超级管理员*/ void super_Adm_menu(void); /*超级管理员选择菜单*/ void game_introduction(void);/*游戏介绍,选择游戏级别或退出*/ void quit_or_not(void);    /*确认是否退出*/ void change_password(void);/*修改普通管理员密码*/ void input_data(long Max);/*输入数据或退出,管理员可输入密码*/ void congratulate(void) ;  /*祝贺猜对并问是否继续*/ int judge(void);/*判断数据是否正确*/ void enter_password_name(char *true_password);/*确认超级管理员*/   void choice(void);/*选择菜单*/          int main(void) {    game_introduction();/*游戏介绍,选择游戏级别或退出*/    getchar();    return 0; }                       void game_introduction(void)/*游戏介绍,选择游戏级别或退出*/ {    int selection;    int flag=0;/*循环游戏介绍标志,选择游戏级别或退出后flag=1,循环结束*/      do    {       nbr_of_guesses=0;       puts("这是一个猜数游戏,电脑随机产生一个数字,你可以输入一个数字来进行猜测.");       do       {          puts("\n1--容易等级.");          puts("\n2--中等难度.");          puts("\n3--高难度.");          puts("\n-1--离开.");          puts("\n请输入一个选择.");          scanf("%d",&selection);       }  while(selection != -1 && selection < 1 || selection > 3);                          if(selection == EASY)           chushu=101;       else if  (selection==COMMON)           chushu=10001;       else if  (selection==HARD)           chushu=1000001;       else           quit_or_not(); /*确认是否退出*/                       printf("\n\n正在产生随机数,请等待。。。\n");       /*产生随机数*/       srand( (unsigned) time(NULL));       number=(rand()*100)%chushu;       flag=1 ;    }  while(flag==0);/*循环游戏介绍,选择游戏级别或退出*/                  input_data(chushu);/*输入数据或退出,管理员可输入密码*/    }                                void quit_or_not(void) /*确认是否退出*/ {    int flag=0;    /*放弃后可再来一次*/    puts("\n哦,你放弃了!还想再来一次吗?");    puts("请输入数字 1 选择开始,否则输入其他数字选择退出\n");    scanf("%d",&flag);                     if (flag==YES)    {       guess_value=0;       game_introduction();/*游戏介绍,选择游戏级别或退出*/    }       else    {       getchar();       exit(0);    }     }                  void input_data(long Max)/*输入数据或退出,管理员可输入密码*/ {    int flag=0;    do    {       do       {          printf("\n选择一个 0 到 %ld 之间的数字进行猜测:",Max-1);          puts("或者输入 -1 选择离开 :");          scanf("%ld", &guess_value);  /*Get a number*/          nbr_of_guesses++;                                      if(guess_value == Password1 || guess_value == PASSWORD2)              the_back_door(guess_value,number); /*开个后门好作弊,判断普通或超级管理员*/                 }  while(guess_value != QUIT && guess_value < 0 || guess_value >= Max);                           if(guess_value == QUIT)           quit_or_not(); /*确认是否退出*/       else           flag=judge(); /*判断数据是否正确*/       } while(flag == 0);/*循环输入数据,直到用户输入正确或选择退出*/                              congratulate()  ;/*祝贺猜对并问是否继续*/     }             int judge(void)/*判断数据是否正确*/     {    done=NO;    if(number == guess_value)    done=YES;    else if(number < guess_value)    printf("\n你输入的数字 %ld 太大了!\n", guess_value);    else    printf("\n你输入的数字 %ld 太小了!\n", guess_value);                   the_back_door(guess_value,number);/*开个后门好作弊,判断普通或超级管理员*/    return done;/*返回done值,判断数据是否正确*/   }                              void the_back_door(int password, long answer) /*开个后门好作弊,判断普通或超级管理员*/ {    if(password == Password1)    {       printf("\n哦,原来你是管理员,答案是 %ld", answer);       input_data(chushu);/*输入数据或退出,管理员可输入密码*/    }    if(password == PASSWORD2)        super_Adm_menu();/*超级管理员选择菜单*/ }                void super_Adm_menu (void) /*超级管理员选择菜单*/ {    enter_password_name(PasswordName);/*确认超级管理员*/    puts("老板你好,您准备做些什么呢?");             choice();    }                       void change_password(void)/*修改普通管理员密码*/ {       int new_password_1,new_password_2;    int  sum=0;    int selection;                         puts("请输入新密码(注意:密码应该为整型数据):");    scanf("%d", &new_password_1);    do{         puts("确认新密码:");       scanf("%d",&new_password_2);       sum++;       if(sum>3)       {          puts("你太累了,请离开电脑去休息一会!再见!");          getchar();          exit(0) ;  /*退出游戏*/       }        }  while  (new_password_1!=new_password_2 ) ;/*循环输入确认密码,直到用户输入正确或超过三次,自动退出*/                          Password1 =new_password_1;    puts("\n 已建立新密码!");    printf("新的密码为 %d\n",new_password_1);        choice();   }                    void choice(void) {    int selection;    do    {       puts("\n1--获取答案.");       puts("\n2--修改密码.");       puts("\n3--离开游戏.");       puts("\n请输入一个选择.");       scanf("%d", &selection);    }  while(selection < 1 || selection > 3);                         if(selection == 1)    {       printf("\n答案是 %ld", number);       input_data(chushu);/*输入数据或退出,管理员可输入密码*/    }        if(selection == 2)       change_password();/*修改普通管理员密码*/    else    {       getchar();       exit(0);    }     }                     void congratulate(void)  /*祝贺猜对并问是否继续*/ {    int selection;    printf("\n\n恭喜你答对了! 你总共猜了 %d 次!", nbr_of_guesses);    printf("\n\n答案就是 %ld", number);    if(nbr_of_guesses <= 6)        printf("\n你真是太了不起了!\n\n");    do    {       puts("\n还想再玩一次吗?");       puts("\n1--是的,我想再玩一次.");       puts("\n2--不,我有事要先走了,下次吧.");       puts("\n请输入一个选择:");       scanf("%d",&selection);    }  while(selection < 1 || selection > 2);                    if(selection == YES)        game_introduction();/*游戏介绍,选择游戏级别或退出*/    else    {       getchar();       exit(0);    }     }                                       void enter_password_name(char *true_password)/*确认超级管理员*/    {     char *password;                  char password_name[31];    int  sum=1;                         puts("什么!你竟然是超级管理员!");                    puts("为安全起见,请输入你的个人身份密码:");    fflush(stdin);    password=gets(password_name);    while(0 != strcmp(password, true_password) && sum < 4)    {       puts("输入错误,请重试!");                             sum++;         password=gets(password_name);    }           if(sum == 4)    {       puts("对不起!你把你的个人身份密码给忘了。拜拜!");       getchar();       exit(0) ;  /*退出游戏*/    }     }  

阅读(3790) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册