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时我们就可以根据流程图快速找到出现问题的那部分从而对症下药。分析代码的过程可以提升我们的框架思维,对项目有一个更好的理解。

相关文章
|
6天前
|
编译器 开发工具 C语言
【C语言】第一回(源(.c)文件怎么生成可执程序(.exe)文件)
【C语言】第一回(源(.c)文件怎么生成可执程序(.exe)文件)
|
6天前
|
存储 编译器 C语言
深入探索C语言动态内存分配:释放你的程序潜力
深入探索C语言动态内存分配:释放你的程序潜力
29 1
|
6天前
|
存储 自然语言处理 小程序
最简单的c语言程序
最简单的c语言程序
20 6
|
6天前
|
C语言
最简单的C语言程序示例
最简单的C语言程序示例
23 0
|
6天前
|
Serverless C语言
C语言程序通常具有以下基本结构
C语言程序通常具有以下基本结构
12 0
|
6天前
|
存储 编译器 C语言
深入探索C语言动态内存分配:释放你的程序潜力
深入探索C语言动态内存分配:释放你的程序潜力
32 0
|
6天前
|
C语言
第一章 C语言知识点(程序)
第一章 C语言知识点(程序)
19 0
|
6天前
|
存储 自然语言处理 编译器
“ Hello world ”中的秘密之【C语言程序编译和链接】
作为C语言最经典的代码,大家都可以轻易写出。但是代码的运行过程却很少有人清楚,接下来我将介绍代码运行的奥秘。
17 0
|
6天前
|
自然语言处理 编译器 C语言
C语言程序编译和链接
在ANSI C的任何⼀种实现中,存在两个不同的环境。 第1种是翻译环境,在这个环境中源代码被转换为可执⾏的机器指令(⼆进制指令)。 第2种是执⾏环境,它⽤于实际执⾏代码。
|
6天前
|
网络协议 物联网 数据处理
【C 言专栏】C 语言实现网络通信程序
【5月更文挑战第4天】本文探讨了使用C语言实现网络通信程序的方法,包括理解网络通信基本概念如协议和套接字,以及TCP/UDP通信的实现步骤。通过创建套接字、绑定端口、监听连接、数据传输和错误处理等关键环节,阐述了C语言在网络通信中的优势。文中还提到了实际应用案例、程序优化策略及未来发展趋势,旨在帮助读者掌握C语言在网络通信领域的应用技巧。
【C 言专栏】C 语言实现网络通信程序