学习UE4 C++之前的复习,用了很多没啥用的小技巧.也没什么深度好讲的,有兴趣的小伙伴拉走编译就行了:
#include <iostream>
#include <ctime>
using namespace std;
#define random(x) (rand()%x)
int main(){
srand((int)time(0));
std::cout<<"欢迎参加本次试炼游戏,在本次试炼中,你必须与时间赛跑,找出谜题中的数字:"<<std::endl;
std::cout<<"你需要找到符合条件的数字(数字不会为0),输入'0'结束游戏:"<<std::endl;
bool isWin=true;
bool Wyou=false;
int level=3;
do
{
int num[10];
int sum=1;
int pro=0;
int les=0;
int did=0;
for (size_t i = 0; i < level; i++)
{
num[i]=random(9)+1;
sum*=num[i];
pro+=num[i];
les=num[i]-num[i-1];
did=num[0]+num[i];
}
cout<<"\n\n现在,你进入了第 ["<<(level-2)<<"] 关!"<<endl;
cout<<"有 ["<<level<<"] 个数字作为密码!"<<endl;
cout<<"A : 它们相乘等于 = "<<(sum)<<endl;
cout<<"B : 它们相加等于 = "<<(pro)<<endl;
cout<<"C : 最后一个数字减前一个数字 = "<<(les)<<endl;
cout<<"D : 第一个加最后一个数字等于 = "<<(did)<<endl;
int x=127; // 0111 1111
for (size_t i = 0; i < level-3; i++)
{
switch (rand()%(level))
{
case 0:
if ((x & 1) ==1)
{
cout<<"A-D再减去第一个数字 = "<<((sum)-(did)-num[0])<<endl;
x=x&1; //0111 1111 & 0000 0001
}
case 1:
if ((x & 2) ==2)
{
cout<<"A*C再加第3个数字 = "<<((sum)*(les)+num[2])<<endl;
x=x&2;
}
case 2:
if ((x & 4) ==4)
{
cout<<"B+D再乘第2个数字 = "<<(((pro)+(did))*num[1])<<endl;
x=x&4;
}
case 3:
if ((x & 8) ==8)
{
cout<<"B*本关对应的数字 = "<<((pro)*num[level-3])<<endl;
x=x&8;
}
case 4:
if ((x & 16) ==16)
{
cout<<"C-本关对应的数字 = "<<((les)-num[level-3])<<endl;
x=x&16;
}
case 5:
if ((x & 32) ==32)
{
cout<<"第二个数字加本关对应的数字 = "<<(num[1]+num[level-3])<<endl;
x=x&32;
}
case 6:
if ((x & 64) ==64)
{
cout<<"C-B再乘上本关对应的数字 = "<<((les-pro)*num[level-3])<<endl;
x=x&64;
}
break;
default:
cout<<"本关对应的数字 = "<<(num[level-3])<<endl;
break;
}
x=127^x;
}
cout<<endl;
cout<<endl;
// for (size_t i = 0; i < level; i++)
// {
// cout<<"a = "<<num[i]<<endl;
// }
int iput[10];
int Psum=1;
int Ppro=0;
int Ples=0;
int Pdid=0;
for (size_t i = 0; i < level; i++)
{
cout<<"还剩下 ["<<(level-i)<<"] 个数字需要你输入."<<endl;
cout<<"输入你的第 ["<<(i+1)<<"] 个数字 : ";
bool isNum=true;
cin>>iput[i];
while (!cin)
{
char ch;
if ((ch=getchar())!='\n')
{
continue;
}
cout<<"你没有输入数字呢,请重新输入 : ";
cin.clear();
cin.sync();
cin>>iput[i];
}
Psum*=iput[i];
Ppro+=iput[i];
Ples=iput[i]-iput[i-1];
Pdid=iput[0]+iput[i];
if (Psum==0)
{
isWin=false;
system("cls");
cout<<"你输入了0结束了游戏."<<endl;
break;
}
}
if (Psum==sum && Ppro==pro && Ples==les && Pdid==did)
{
system("cls");
cout<<"看来我低估你了,你通过了第 ["<<level-2<<"] 关."<<endl;
level++;
if (level==8)
{
isWin=false;
Wyou=true;
}
}
else
{
system("cls");
cout<<"看来你还没做好准备,洗洗睡吧."<<endl;
isWin=false;
}
} while (isWin);
if (Wyou)
{
system("cls");
cout<<"你竟然通过了全部关卡?这不可能! 不过,你真的很强!!!"<<endl;
}
system("pause");
return 0;
}