美文网首页
趣味C语言之猜数游戏

趣味C语言之猜数游戏

作者: 凌云struggle | 来源:发表于2019-08-02 23:18 被阅读0次
  • 游戏简述

    系统随机产生4个0~9不相同的数字,从小到大排序,玩家从终端输入4个从小到大排好序的不相同数字,如果数字相同并且位置相同,记为A;如果数字相同但是位置不同,记为B。用户根据每次输入数字的反馈,进行逻辑推理,直到猜出答案。
  • 程序运行效果

    猜数游戏.png
  • 设计思路

  1. 产生4个不相同的随机数
  2. 将4个数从小到大进行排序(插入排序)
  3. 游戏开始,将输入的数字与原始数字进行比较,通过两重循环实现,在数字相同的情况下,如果i与j相等,则A++;否则B++
  4. 如果A等于4,则跳出循环,游戏结束;否则继续输入,同时A,B的值还原
  • 重难点呈现

    • 如何产生随机数

      1. 导入头文件
      #include <stdlib.h>
      #include <time.h>
      
      1. 使用种子
      srand(1);     //每次执行种子相同,生成相同的随机数
      srand((unsigned int)time(NULL));     //每次执行种子不同,生成不同的随机数
       
      int temp = rand() % 10    //产生0~9的随机数,以此类推 
      
      • 指定范围随机数
        srand((unsigned)time(null));
        (a,b) (rand()%(b-a+1))+a-1
        [a,b) (rand()%(b-a))+a
        (a,b] (rand()%(b-a))+a+1
        [a,b] (rand()%(b-a+1))+a
    • 如何实现插入排序

    //边产生 边排序   插入排序
          //寻找这个数对应的位置
          int j = 0;
          for(;j <i;j++){
              //j对应的数字和产生的数字进行比较
              if(temp < originalArray[j]){
                  //j后面的内容往后移动 腾出空间
                  for(int k = i;k > j;k--){
                      originalArray[k] = originalArray[k-1];
                  }
                  break;
              }
              
          }
          
          //写入到数组中
          originalArray[j] = temp;
          
      }
    
    ps:想了解更多的C语言排序方法,关注我接下来的更新!
  • 完整代码实现

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdbool.h>



int main(int argc, const char * argv[]) {
    //保存原始数据
    int originalArray[4] = {};
    //保存猜测数据
    int guessArray[4] = {};
    //计算数字正确且位置正确的个数
    int countA = 0;
    //计算数字正确但位置错误的个数
    int countB = 0;
    
    
    srand((unsigned int)time(NULL));
    for(int i = 0;i < 4;i++){
        
        bool isExist = false;
        int temp = 0;
        while(1){
            //产生一个随机数
            temp = rand() % 10;
            
            //判断是否已经存在
            for(int j = 0;j <i;j++){
                if(originalArray[j] == temp){
                    //重复了,停止比较,继续产生新的
                    isExist = true;
                    break;
                }
            }
            //1.重复了,break
            //2.遍历数组没有重复的
            if(isExist == false){
                break;
            }
        }
        
        //边产生 边排序   插入排序
        //寻找这个数对应的位置
        int j = 0;
        for(;j <i;j++){
            //j对应的数字和产生的数字进行比较
            if(temp < originalArray[j]){
                //j后面的内容往后移动 腾出空间
                for(int k = i;k > j;k--){
                    originalArray[k] = originalArray[k-1];
                }
                break;
            }
            
        }
        
        //写入到数组中
        originalArray[j] = temp;
        
    }
    
    //开始游戏
    while (1) {
        //输入猜测的数据
        printf("请输入猜测的数字:\n");
        for (int i = 0; i < 4; i++) {
            scanf("%d",&guessArray[i]);
        }
        
        //将产生的数与输入的数进行比较
        for (int i = 0; i < 4; i++) {  //控制原始数字
            for (int j = 0; j < 4; j++) {   //控制输入
                if (originalArray[i] == guessArray[j]) {
                    if (i == j) {
                        //数字相同且位置相同
                        countA++;
                    }else{
                        //数字相同但位置不同
                        countB++;
                    }
                }
            }
        }
        if (countA == 4) {
            //猜对了!
            printf("Congratulations!!!\n");
            break;
        }else{
            printf("%dA%dB\n",countA,countB);
            
            //清零
            countA = 0;
            countB = 0;
            
        }
        
    }
    
    
//    //输出产生的数
//    for(int i =0;i <4;i++){
//        printf("%d",originalArray[i]);
//    }
//    printf("\n");
    
    return 0;
}
  • 心得体会

    通过这个小demo的练习,学习到了如何去生成随机数,尽管中间遇到了一些小障碍,但是解决问题的同时也学到了很多。当然,最有意思的是,这个demo本身就是一款十分锻炼逻辑思维能力的小游戏,你可以来试试,看看自己的逻辑思维能力如何

相关文章

  • 趣味C语言之猜数游戏

    游戏简述系统随机产生4个0~9不相同的数字,从小到大排序,玩家从终端输入4个从小到大排好序的不相同数字,如果数字相...

  • 趣味C语言之杀人游戏

    游戏简述终端输入参与的人数:7,依次编号为1,2,3,4,5,6,7,大家围成一圈,输入死亡编号:3,凡是报到3的...

  • C语言猜数游戏

    代码 输出 本程序在Dev-c++中编译运行通过

  • 猜数游戏

    #!/usr/bin/env python #_*_conding:utf-8_*_ age =22 count ...

  • 猜数游戏

    牛牛和羊羊在玩一个有趣的猜数游戏。在这个游戏中,牛牛玩家选择一个正整数,羊羊根据已给的提示猜这个数字。第i个提示是...

  • 猜数游戏

    这个游戏比较适合一二年级及其以下的孩子。 两人每人拿一张卡片,写下1-100之间的任何一个数字,把卡片叠好,互相交...

  • C语言-猜数游戏,最多猜7次

    问题描述:猜数游戏,最多猜7次 源代码: 运行结果: 程序参数: 输出大小: 155.5380859375 KiB...

  • 2019-05-22

    python 猜数游戏

  • 基于C语言的模拟猜单词游戏

    一、课题内容和要求 “模拟猜单词游戏”系统要求用C或C++模拟猜单词游戏。游戏包括:单词管理、玩家纪录、猜词过程、...

  • 猜数游戏(数独)

    【学习目标】 1.经历填数游戏活动,初步提高分析推理能 力。 2.在探索、尝试、交流等活动中,体会填数 游戏...

网友评论

      本文标题:趣味C语言之猜数游戏

      本文链接:https://www.haomeiwen.com/subject/kpirdctx.html