事情,并可以在一步一步的执行时可以有一些提示,这样用户可以继续使用。
4.2 功能逻辑设计
在设计这个程序之前,我把这个程序分为多块,它们分别为:
1) 显示登录界面
玩家输入用户名和密码,进入游戏
2) 显示游戏界面
随机产生4个数;
提示输入表达式;
玩家输入表达式,用栈存储起来;
判断输入是否合法,四个数是不是随机产生的四个;
给出结果。
3) 显示游戏界面
用户根据提示,选择进入查看英雄榜;
4.3存储结构
1)人算24点时:使用的是穷举法,对应一组数字,找出有可能的情况。
2)计算机算24点时:采用单链表作为存储结构,使用栈来进行表达式求值的原理实现。
4.4使用说明
例1:显示: 7 7 2 5
则您可以输入表达式: 2*5+7+7.
回车显示: Congratulations
例2.显示: 3 12 2 6
则您可以输入表达式: 2*3+6+12.
回车显示: Congratulations
例3. 显示:10 9 10 10
则您可以输入表达式:?
回车显示:Input any key,hint answer......
附: 1)当玩家不会游戏时,可以输入?,游戏会给出答案;但有的四个数字不能算出24点,所以直接进入下个游戏。
2)游戏存在着许多不足之处,比如没有
注册功能,没有管理员的功能,所以不能进行对用户的管理,修改,添加等操作。
(五).编码
系统主要功能代码
1) /*进入游戏*/
void game()/*进入游戏*/
{ int i,j,k,t,again,res,flag;
char c;
float num[4];
again=1;
clock_t start, finish;
double duration,n;
while(again==1)
{
system("cls");
printf("\t\t ***************************************\n");
printf("\t\t * *\n");
printf("\t\t * 24game *\n");
printf("\t\t * *\n");
printf("\t\t ***************************************\n");
printf("\n\n\t\t ");
srand(time(0)); /*获取随机种子使得每次随机的值不同*/
for(i=0;i<4;i++)
num[i]=(float)(rand()%13); /*获取13以内的随机数值*/
for(i=0;i<4;i++)
printf("%2.0f\t",num[i]); /*输出4个随机数值*/
printf("\n\n");
start = clock();
self();/*自己算*/
finish = clock();
duration = (double)(finish - start) / CLOCKS_PER_SEC;
if(result==24)
{
printf("\t\t Congratulations!The correct answer......\n\n");
if(J<10)
{
strcpy(heros[J].name ,temp1.name);
strcpy(heros[J].sex ,temp1.sex);
heros[J].time =duration;
J++;
}
else
{
n=heros[0].time;
for(i=0;i<10;i++)
{
if(heros[i].time>n)
{ heros[i].time=n;
j=i;
}
}
strcpy(heros[j].name ,temp1.name);
strcpy(heros[j].sex ,temp1.sex);
heros[j].time =duration;
}
input_hero(); /*向英雄榜文件里写入信息*/
}
else
{
printf("\t\t Input any key,Hint answer......\n\n");
c=getch();
if(c)
{ for (i=0;i<4;i++)
for (j=0;j<4;j++)
if (j!=i)
for (k=0;k<4;k++)
if (k!=j && k!=i)
for (t=0;t<4;t++)
if (t!=i && t!=j && t!=k)
{ res=treat(num[i],num[j],num[k],num[t]);
} /*确保每次经排列后传递的数不可能相同*/
if (res==0)
printf ("\t\t No answer !\n");
}
}
printf ("\n\t\t 1: go on\t\t2: exit\n");
printf ("\n\t\t Please select (1 or 2):\n");
c=getchar();
c=getchar();
switch(c)
{ case '1': again=1;break;
case '2': c=getchar();users();break;
}
}
}
2) /*将表达式压入栈中*/
void calculate(char *p,s &s1)
{
int i=strlen(p),m,n;
while(i>=0)
{
if(p[i]>='0'&&p[i]<='9')push(s1,p[i]-'0');
else
{
swi