C语言综合案例:猜拳游戏1.0

C语言综合案例:猜拳游戏1.0

 #include 
 #include 
 #include 
 #include 
 /**
 *  需求:猜拳游戏1.0
 *  步骤:
1. 选择对手       
2. 自己出拳
3. 对手出拳
4. 双发比较
*/ 
int main(int argc,char *argv[])
 {
 // 定义变量
	int is_stop = 1;          
	int is_select_ct = 1;     
	int computer_no;          
// 对手的序号
	char computer_name[20];   // 对手的名字
	int is_select_own = 1;    
	int own_no;               
	char own_name[20];        
	int ct_no;                
	char ct_name[20];         
// 游戏是否退出,默认不退出
// 默认,选择对手操作是否重复,默认重复
// 默认,自己出拳操作是否重复,默认重复
// 自己出拳的序号
// 自己出拳的名字
// 对手出拳的序号
// 对手出拳的名字
// 游戏头部i
	printf("==============================\n");
 	printf("=      猜拳游戏 v1.0版       =\n");
 	printf("==============================\n");
 while(is_stop)
 {
 /************1. 选择对手 *************/
  while (is_select_ct)
        {
            printf("请选择您的对战玩家:\n[1] 哪吒  [2] 敖丙  [3] 申公豹\n");
            scanf("%d",&computer_no);
            switch (computer_no)
            {
                case 1:
                    // 给字符数组赋值一个字符串常量
                    strcpy(computer_name,"哪吒");
                    is_select_ct = 0;// 终止循环
                    break;
                case 2:
                    strcpy(computer_name,"敖丙");
                    is_select_ct = 0;// 终止循环
                    break;
                case 3:
                    strcpy(computer_name,"申公豹");
                    is_select_ct = 0;// 终止循环
                    break;
                default:
                    strcpy(computer_name,"无效玩家");
                    is_select_ct = 1; // 重新循环
            }
            printf("您选择的对手是%s\n\n",computer_name);
        }
        /************2. 自己出拳 *************/
        while (is_select_own)
        {
            printf("请选择您要出拳的序号:\n[1] 石头  [2] 剪刀  [3] 布\n");
            scanf("%d",&own_no);
            switch(own_no)
            {
                case 1:
                    strcpy(own_name,"石头");
                    is_select_own = 0;// 终止循环
                    break;
                case 2:
                    strcpy(own_name,"剪刀");
                    is_select_own = 0;// 终止循环
                    break;
                case 3:
                    strcpy(own_name,"布");
                    is_select_own = 0;// 终止循环
                    break;
                default:
                    strcpy(own_name,"无效的出拳");
                    is_select_own = 1;// 重复循环
            }
            printf("您出的是%s\n\n",own_name);
        }
        /************3. 对手出拳 *************/
        // 通过随机数产生对手的出拳的序号(1~3)
        srand((unsigned)time(NULL)); // 以时间作为随机种子,降低随机数重复的概率
        // 随机产生序号 rand()函数生成的数据从0开始,含头不含尾巴
        ct_no = rand()%3+1;// 默认生成0~2,我们需要改造成1~3 
        switch(ct_no)
        {
            case 1:
                strcpy(ct_name,"石头");
                break;
            case 2:
                strcpy(ct_name,"剪刀");
                break;
            case 3:
                strcpy(ct_name,"布");
                break;
        }
        printf("%s出的拳是%s\n\n",computer_name,ct_name);
        /************4. 双方比较 *************/
        if ((own_no == 1 && ct_no == 2) || (own_no == 2 && ct_no == 3) || (own_no == 3 && 
ct_no == 1))
        {
            printf("恭喜,您获胜!\n\n");
        }
        else if(own_no == ct_no)
        {
            printf("平局!\n");
        }
        else
        {
            printf("很遗憾,您输了!\n");
        }
        /************5. 退出游戏 *************/
        char stop; // 输入一个字符来退出
        printf("是否退出游戏?[Y/N]\n");   
        getchar();// 消除回车
        scanf("%c",&stop);
         if(stop == 'Y' || stop == 'y')
 {
 // 结束内部所有循环,否则仅退出外部循环,会失败
	is_select_ct = 0;
 	is_select_own = 0;
 	is_stop = 0;
 	printf("\n游戏结束!\n");
 }
 else
 {
 	is_select_ct = 1;
 	is_select_own = 1;
 	is_stop = 1;
 }
 }
 return 0;
 }

你可能感兴趣的:(c语言,游戏,开发语言)