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