如果注定要分离,我希望你离开后更快乐,这样我的成全才有价值。我将学着在心痛中微笑,让祝福成为我爱你唯一的方式。
【软件介绍】:
面对心仪已久的MM或GG,是否想知道你们将来如何?梦幻情缘可以帮你测试一下你们的缘分。是一款娱乐性很强的测试游戏,软件充分体现了健康游戏的宗旨。软件提供了强大的测试功能,还有对测试结果的分析。相信你会喜欢的。^_^
【使用说明】:
测试时,分别输入男生和女生的全名的拼音,输入时姓与名的每个字都要分开,这可是测试的关键哟!记住男生在左边,女生在右边。也可以只输入名字的各个字的首字母,以回车结束输入。
比如测试 令狐冲 和 任盈盈 的缘分,可以输入 ling hu chong ren ying ying
也可以输入
l h ch r y y 或者 L H C R Y Y 或者 L h C r Y Y
即字母的大小写随便,但要保证每个人姓与名的每个字的首字母分开。
【软件原理】:
本软件测试的原理如图
把a~z共26个字母按顺序标上序号
a b c d e f g h i j k l m
75 76 77 78 79 80 81 82 83 84 85 86 87
n o p q r s t u v w x y z
88 89 90 91 92 93 94 95 96 97 98 99 100
按照输入的两个人的名字拼音,每个字取首字母,并换算成对应的数字
如测试令狐冲和任盈盈的缘分,输入 ling hu chong ren ying ying
则软件自动取这两个名字的首字母并换算成对应的数字,如下所示:
l h c r y y
86 82 77 92 99 99
然后按照下面的流程计算令狐冲和任盈盈的缘分:
先把这几个数字排成一列,然后拿第一个数和第二个数相加,如果它们的和小于10,则直接在第二行写出这个和数,如果大于等于10,则把这个和数减去10写在第二行第一个数后面(即大于10的数只写个位),然后拿第二个数和第三个数相加...,依次类推,第一轮做完后,换行继续,直到最后只剩下两个数字,如80,则两个人的缘分即为80%。
以测试令狐冲和任盈盈的缘分为例。先取他们名字各个字的首字母对应的数字,排成一列。,然后计算如下:
868277929999
44094611888
8493072966
232379152
55506067
0056663
051229
56341
1975
062
68
即令狐冲和任盈盈的缘分为68%,怪不得两个人历经重重磨难最终还是走到了一起。呵呵. ^_^
【软件备注】:
本软件仅供娱乐,请大家不必过于在意测试结果。^_^
【特别说明】:
梦幻情缘系列软件从最初的1.0到现在的5.0一路走来,从1.0的英文版到3.0的中文版再到5.0的稳定版,编译器从TC到VC++ 2005,其间经历了一个多月的时间。此间软件经过几次大规模代码重写,不断修正bug,不断完善。梦幻情缘1.0到4.0我都发在了电脑爱好者论坛(http://bbs.cfan.com.cn),这次5.0的最终稳定版就发到了优快云和朋友们分享。希望朋友们喜欢。
另外不足之处还请朋友们多提意见,非常感谢朋友们支持!
小雨(alxen)
E-mail:alxen@126.com
http://alxen.blogbus.com
2006年12月5日
下载梦幻情缘5.0及全部源码:梦幻情缘5.0
【梦幻情缘5.0 界面预览】:
【梦幻情缘5.0 源码分享】:
#include<ctype.h>
#include<stdlib.h>
#include<conio.h>
#include<iostream>
#include<string>
#define NULL 0
void head(void);
char *love1();
void love2();
using namespace std;
void head(void)
{
cout<<"/t/t☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<<endl;
cout<<"/t/t☆☆☆ 梦 幻 情 缘 --------> 5.0 ☆☆☆"<<endl;
cout<<"/t/t☆☆☆ By 小雨(alxen) 2006.12.01 ☆☆☆"<<endl;
cout<<"/t/t☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<<endl<<endl;
}
string lovewrong2(string &s) //字符合法性检查函数,检查是否只按下回车
{
while(s[0]=='/0')
{
system("cls");
head();
cout<<"梦幻情缘缘分测试/n请在下面输入你们的名字拼音,用空格分开。/n如测试郭靖和黄蓉的缘分输入:guo jing huang rong"<<endl<<endl;
cout<<"输入错误!你只输入了回车。你是在测试我么?呵呵.../n再来一遍。请输入两个人名字的拼音,用空格分隔:"<<endl;
getline(cin,s);
if (cin.fail())
{
cin.clear();
}
}
return s;
}
string lovewrong(string &s) //字符合法性检查函数
{ int nitem;
C: s=lovewrong2(s);
for(nitem=0;s[nitem]!='/0';nitem++)
while(!(isalpha(s[nitem]))&&s[nitem]!=' ') //字符合法性检查,只接受字母和空格
{
system("cls");
head();
cout<<"梦幻情缘缘分测试/n请在下面输入你们的名字拼音,用空格分开。/n如测试郭靖和黄蓉的缘分输入:guo jing huang rong"<<endl<<endl;
cout<<s<<endl;
cout<<"输入错误!你可能输入了非法字符。请输入名字的拼音,用空格分隔。/n再来一遍。请输入两个人名字的拼音:"<<endl;
getline(cin,s);
goto C;
}
return s;
}
char *love1() //取首字母函数
{
string Name;
char Hchar[9],*q=Hchar; //用字符串Name存放输入的全部字符,按中国人名字最长4个字计算。Hchar[9]存放提取出来的各个字拼音的首字母。
int spanum,nitem; //变量spanum用于计算规范后的字符串中的空格数,nitem用于引用Name字符串元素
head(); //head()
cout<<"梦幻情缘缘分测试/n请在下面输入你们的名字拼音,用空格分开。/n如测试郭靖和黄蓉的缘分输入:guo jing huang rong"<<endl;
getline(cin,Name);
A: Name=lovewrong(Name);
while(Name[0]==' ') strcpy(&Name[0],&Name[1]); //去掉首部空格(如果有的话)
nitem=1;
while(Name[nitem]!='/0')
{ while((Name[nitem]==' '&&Name[nitem+1]==' ')||(Name[nitem]==' '&&Name[nitem+1]=='/0'))
strcpy(&Name[nitem],&Name[nitem+1]);nitem++;
} //去掉输入姓名中间及尾部多余空格,使各个字之间只有一个空格,方便取首字符
spanum=0;
for(nitem=0;Name[nitem]!='/0';nitem++)
if(Name[nitem]==' ')
{ spanum++; }
if(spanum>7||spanum<3)
{
system("cls");
head();
cout<<"梦幻情缘缘分测试/n请在下面输入你们的名字拼音,用空格分开。/n如测试郭靖和黄蓉的缘分输入:guo jing huang rong"<<endl<<endl;
cout<<Name<<endl;
cout<<"输入错误!可能你输入的字符个数不够,或者字符太多。/n再来一遍。请输入两个人名字的拼音:"<<endl;
getline(cin,Name);
goto A;
} //输入字母个数有效性检查,按中国人名字最短两个字,最长4个字,取的首字母个数最少应为4个,最多为8个。如果规范输入后的空格多于7个或少于3个,则说明首字母多于8个或少于4个。不合法,返回重新输入
*q=islower(Name[0]) ? Name[0]:Name[0]+32; //把Name[50]数组中第一个字母变为小写,方便后面对应字母取数字
q++;
for(nitem=1;Name[nitem]!='/0';nitem++)
{if(Name[nitem-1]==' ') //把Name[50]数组中每个拼音的首字母变为小写
{
*q=islower(Name[nitem]) ? Name[nitem]:Name[nitem]+32;
q++;
}
}
*q='/0'; //取首字母结束,Hchar[9]数组尾部置空
q=Hchar;
cout<<q;
system("cls");
head();
cout<<"/n你输入的名字为: **** ";
cout<<Name;
cout<<" ****";
return(q);
}
void love2() //计算函数
{
int a[9],b[28],*r=a,*s=b,i=0,j=0,k; //a[9]存放各个首字母对应的图1中的数字
char c[9],*q=c,*p;
p=love1(); //c[9]存放提取出来的首字母
while(*p!='/0')
{
*q=*p;
p++;q++;i++;
} //把由love1函数传过来的b[9]中的首字母赋给c[9]
*q='/0';
q=c;
while(*q!='/0')
{
*r=(*q-0-22); //求出c[9]中的字母对应的图1中的数字放入a[9]中
q++;r++;
}
cout.put('/n');
r=a;
for(k=0;k<i;k++) //这个for语句把a[9]中的数字分别拆开,一位一位放入b[28]数组中
{
if(*r<100)
{
*s=*r/10;j++;
*(s+1)=*r%10;j++;
s+=2;r++;
}
else
{
*s=1;j++;
*(s+1)=0;j++;
*(s+2)=0;j++;
s+=3;r++;
}
}
r=a;
s=b;
while(j>2) //前面进行了一大堆,计算却这么短,经过运算,缘分就出来了
{
for(k=0;k<j;k++)
{
if((b[k]+b[k+1])<10) b[k]=b[k]+b[k+1];
else b[k]=b[k]+b[k+1]-10;
}
j--;
}
putchar('/n');
cout<<"/t/t/t ***************************"<<endl;
cout<<"/t/t/t ***************************"<<endl;
cout<<"/t/t/t ** **"<<endl;
cout<<"/t/t/t ** 你们的缘分为 ";
cout<<b[0]<<b[1]<<"% **"<<endl;
cout<<"/t/t/t ** **"<<endl;
cout<<"/t/t/t ***************************"<<endl;
cout<<"/t/t/t ***************************"<<endl<<endl;
if(b[0]==9)
cout<<"☆☆☆☆好高的缘分呀!真是羡慕!呵呵!☆☆☆☆"<<endl;
if(b[0]==8)
cout<<"☆☆☆☆太棒了,快请我吃饭了!恭喜恭喜!☆☆☆☆"<<endl;
if(b[0]==7)
cout<<"☆☆☆☆很不错啦,好好把握机会啦!☆☆☆☆"<<endl;
if(b[0]==6)
cout<<"☆☆☆☆还好了,好好发展。祝你们天下有情人终成眷属!☆☆☆☆"<<endl;
else if(b[0]<6)
cout<<"☆☆☆☆不要灰心,相信自己!☆☆☆☆"<<endl;
}
void main(void)
{
char m;
system("color 0b");
FILE *fp;
char c;
int flag=1;
if((fp=fopen("help.dll","r"))==NULL)
{flag=0;goto B;}
while(!feof(fp))
{c=fgetc(fp);
c=c-8;
putchar(c);
}
fclose(fp);
if(flag)
{
cout<<"/n/n按任意键开始梦幻测试...";
c=_getch();
system("cls");
}
B: love2();
putchar('/n');
cout<<"/t/t/t/t/t梦幻情缘(R) 版权所有 小雨/n/t/t/t/t/t/t"<<endl;
cout<<"/n还要测试么?"<<endl; //提供循环测试
cout<<"按 n 退出,按其他键继续。"<<endl;
m=_getch();fflush(stdin);
while(m!='n'&&m!='N')
{
system("cls");
goto B;
}
exit(0);
_getch();
}
下载梦幻情缘5.0及全部源码:梦幻情缘5.0