C语言程序课程设计—读心术

简介: 前言这是我大学C语言程序课程设计的第一个项目((●’◡’●)),还是挺开心滴哈哈。虽然这个项目制作难度不高,代码量也不多,但只要你手法足够,任何简单的东西都能够复杂化滴。

前言

这是我大学C语言程序课程设计的第一个项目((●’◡’●)),还是挺开心滴哈哈。虽然这个项目制作难度不高,代码量也不多,但只要你手法足够,任何简单的东西都能够复杂化滴。

一、游戏规则

读心术,顾名思义,就是我能知道你心里所想的东西呗。当然,这玩意没有这么神奇哈,怎么可能知道你在想撒子呢对吧。这里的读心术只是我们被套路了而已。

具体规则:从0~7中选择一个数默想在心中,选择完之后需要回答三个问题,每次回答输入1或0,如果输入了其他的数字或字母将会要求重新输入,三个问题回答完之后,就能知道你心中所想的那个数字了,然后我们在原有的基础上增加了一个用户登入的系统,也就是说只有正确的输入账号和密码才能够登入成功来进行游戏,但是注意如果账号输入错误时需要重新输入账号,账号输入正确但密码输入错误时也需要重新输入账号,账号密码输入错误次数共达三次的话将会无法进行输入,需在下次打开游戏时才能再次输入。

二、原理

读心术的本质其实就是进制转换的问题,首先我们先把0到7的八个数字从十进制转换成二进制,最大数7的二进制是111,也就是说三位的二进制就够了,位数不够的地方补0即可。0:000,1:001,2:010,3:011,4:100,5:101,6:110,7:111。然后我们从这八个数二进制的低位往高位看,看看相同位的都为1的数字有哪些,所以第一个问题就是1、3、5、7,第二个问题是3、5、6、7,第三个问题是4、5、6、7。然后我们根据回答问题的1或0即可知道你心里所想的数,也就是说这个数字是我们计算出来的。

三、代码

#include <bits/stdc++.h>
using namespace std;
int main() 
{ 
  int num[3][4] = {{1, 3, 5, 7}, {2, 3, 6, 7}, {4, 5, 6, 7}};
  int sum=0,t=1;
  printf("\t\t\t\t\t\t欢迎来到读心术游戏\t\n");
  string s="jiruan6ban";
  int password = 123456789;
  for(int i=1;i<=3;i++)
  {
    cout<<"请输入您的用户名:"<<endl;
    string username;
    cin>>username;
    int password1;
    if(username==s)
    {
      cout<<"用户名正确,请输入密码:"<<endl; 
      cin>>password1;
      if(password1==password)
      {
        cout<<"密码正确!登入成功!"<<endl<<endl;
        cout<<"接下来将进行读心术的游戏了哦!"<<endl;
        cout << "请从下面的数字(0~7)中选择一个默念在心中" << endl;
        cout << "0、1、2、3、4、5、6、7"<<endl;
        cout<<"心里有数了叭!接下来我只需要询问您三个问题就能知道您想的那个数是什么,怎么? 不信吗?那么咋们走着瞧吧哈哈"<<endl<<endl;
        for(int i=0;i<=2;i++)
        {
          printf("第%d个问题~下面的数字是否有你所想的:",i+1);
          for(int j=0;j<=3;j++)
          {
            cout<<num[i][j]<<" ";
          }
          char a ;
          cout<<"请输入1(有) 或 0(没有)"<<endl;
          while(1)
          {
            cin>>a;
            if(a!='0'&&a!='1')
            {
              printf("输入非法,请重新输入:\n");
              continue;
            } 
            else
              break;
          }
          if(a =='1')
          {
            sum+=t;
            t*=2;
          }
          else
            t*=2;
        }
        printf("见证奇迹的时刻到啦!你心里想的那个数字是 %d 吧嘿嘿\n",sum);
        return 0;
      }
      else
      {
        cout<<"密码错误!"<<endl;
        continue; 
      }        
    }
    else
    {
      cout<<"用户名错误!"<<endl;
      continue;
    }
  }
  cout<<"抱歉!您已输入错误三次,无法再次进行输入,为确保账号的安全,请在下次打开时进行尝试!"<<endl; 
} 

代码测试:

c01415eb776043eab55830d4638a2229.png我想的确实是7,可恶居然被它猜到了。不信的话你来试试咯!

总结

总的来说,不论是做读心术项目还是其他的一些项目,都是需要有规则的,规则是面向用户的,帮助用户了解如何进行操作,而项目的原理是需要我们通过代码来实现的,而代码本身是我们写出来的,所以原理相当于是把我们所熟知的东西写成代码让计算机能够理解从而去执行。拓展是在原有的基础上加上一些别的功能,增加游戏的可玩性。画出了整个程序的流程图我们就能清楚的知道这个项目的框架,当我们的程序某个部分出现Bug时我们就可以根据流程图快速找到出现问题的那部分从而对症下药。分析代码的过程可以提升我们的框架思维,对项目有一个更好的理解。

相关文章
|
1月前
|
存储 自然语言处理 编译器
【C语言】编译与链接:深入理解程序构建过程
【C语言】编译与链接:深入理解程序构建过程
|
3月前
|
存储 算法 C语言
"揭秘C语言中的王者之树——红黑树:一场数据结构与算法的华丽舞蹈,让你的程序效率飙升,直击性能巅峰!"
【8月更文挑战第20天】红黑树是自平衡二叉查找树,通过旋转和重着色保持平衡,确保高效执行插入、删除和查找操作,时间复杂度为O(log n)。本文介绍红黑树的基本属性、存储结构及其C语言实现。红黑树遵循五项基本规则以保持平衡状态。在C语言中,节点包含数据、颜色、父节点和子节点指针。文章提供了一个示例代码框架,用于创建节点、插入节点并执行必要的修复操作以维护红黑树的特性。
102 1
|
3月前
|
NoSQL 编译器 程序员
【C语言】揭秘GCC:从平凡到卓越的编译艺术,一场代码与效率的激情碰撞,探索那些不为人知的秘密武器,让你的程序瞬间提速百倍!
【8月更文挑战第20天】GCC,GNU Compiler Collection,是GNU项目中的开源编译器集合,支持C、C++等多种语言。作为C语言程序员的重要工具,GCC具备跨平台性、高度可配置性及丰富的优化选项等特点。通过简单示例,如编译“Hello, GCC!”程序 (`gcc -o hello hello.c`),展示了GCC的基础用法及不同优化级别(`-O0`, `-O1`, `-O3`)对性能的影响。GCC还支持生成调试信息(`-g`),便于使用GDB等工具进行调试。尽管有如Microsoft Visual C++、Clang等竞品,GCC仍因其灵活性和强大的功能被广泛采用。
125 1
|
3月前
|
编译器 C语言 计算机视觉
C语言实现的图像处理程序
C语言实现的图像处理程序
155 0
|
6月前
|
存储 C语言
简单c语言程序举例
简单c语言程序举例
81 1
|
1月前
|
存储 文件存储 C语言
深入C语言:文件操作实现局外影响程序
深入C语言:文件操作实现局外影响程序
|
2月前
|
存储 编译器 程序员
C语言程序的基本结构
C语言程序的基本结构包括:1)预处理指令,如 `#include` 和 `#define`;2)主函数 `main()`,程序从这里开始执行;3)函数声明与定义,执行特定任务的代码块;4)变量声明与初始化,用于存储数据;5)语句和表达式,构成程序基本执行单位;6)注释,解释代码功能。示例代码展示了这些组成部分的应用。
95 10
|
3月前
|
自然语言处理 编译器 C语言
C语言程序的编译
C语言程序的编译
65 2
|
4月前
|
前端开发 C语言 C++
C语言03----第一个程序HelloWorld(vs版)
C语言03----第一个程序HelloWorld(vs版)
|
5月前
|
C语言 图形学 C++