小游戏C语言程序
设计一个小游戏,随机抽取一个数,然后从电脑键盘中随机输入一个数,相同则游戏结束,不同则判断其大了还是小了,能计算游戏时间和游戏排行榜。...
设计一个小游戏,随机抽取一个数,然后从电脑键盘中随机输入一个数,相同则游戏结束,不同则判断其大了还是小了,能计算游戏时间和游戏排行榜。
展开
展开全部
呵呵~~查了库函数,我知道怎么编了,等我下,抓紧编程中....
哎,编了一天,终于大功告成!!!有疑问之处qq我:281754179
#include <stdio.h>
#include <time.h>//用来计算时间差
#include <stdlib.h>//rand(),srand()函数所需头文件
#include <conio.h>//getch()所需函数
#include <string.h>
int i=0;
int*down_i,*up_i;
time_t first_time, end_time;//time_t在time.h中被定义为long型
int main()
{
void pai_hang_bang(FILE*,char**,double*,time_t);//排行榜
int j;
int rand_i,guess;
char **nickname;
double *time_sum;
FILE*fp;
if((fp=fopen("d:/游戏排行榜.txt","a+"))==NULL)//防错处理
{
puts("error!");
exit(1);//异常退出
}
//下面为申请动态数组
nickname=(char**)malloc(1*sizeof(char*));
nickname[0]=(char*)malloc(555*sizeof(char));
down_i=(int*)malloc(1*sizeof(int));
up_i=(int*)malloc(1*sizeof(int));
time_sum=(double*)malloc(1*sizeof(double));
restart://goto的标记
puts("输入你的昵称:");
fflush(stdin);//清空输入流,避免gets函数受到空格等因素影响
gets(nickname[i]);
puts("你想猜的数字范围是?(用空格分开):");
while((scanf("%d%d",&down_i[i],&up_i[i])==0)||down_i[i]>up_i[i])//如果输入有误,scanf函数将返回0
{
printf("输入错误,请重新输入(按任意键继续):");
getch();
printf("\r \r");//清除上面这一句话
fflush(stdin);//清空输入流,避免getch()、及scanf()函数受到空格等因素影响
}
rand_i=rand()%(up_i[i]-down_i[i]+1)+down_i[i];//生成down_i~up_i之间的随机数
printf("按任意键开始(按下后即进行游戏计时):");
getch();
printf("\r \r");//清除上面这一句话
first_time=time(NULL);//记录游戏开始时间
printf("请输入一个数(%d~%d):\n",down_i[i],up_i[i]);
while(1)
{
scanf("%d",&guess);
if(guess>rand_i)
puts("大了");
else if(guess<rand_i)
puts("小了");
else
{
puts("恭喜你,答对了!(按Esc键退出,其他键继续)");
break;
}
}
end_time=time(NULL);//记录游戏结束时间
time_sum[i]=difftime(end_time,first_time);//difftime()函数用来得到时间差
printf("本轮游戏时间为: %.0Lf seconds",time_sum[i]);
if('\x1b'==getch())//注意这里有getch()
{
pai_hang_bang(fp,nickname,time_sum,end_time);
return 0;
}
system("cls");//清除当前屏幕
i++;
//下面为动态扩充数组
nickname=(char**)realloc(nickname,(i+1)*sizeof(char*));
nickname[i]=(char*)malloc(555*sizeof(char));
down_i=(int*)realloc(down_i,(i+1)*sizeof(int));
up_i=(int*)realloc(up_i,(i+1)*sizeof(int));
time_sum=(double*)realloc(time_sum,(i+1)*sizeof(double));
goto restart;
getch();
fclose(fp);
//下面为释放动态内存
for(j=0;j<=i;j++)
free(nickname[j]);
free(nickname);
free(down_i);
free(up_i);
free(time_sum);
return 0;
}
void pai_hang_bang(FILE*fp,char**nickname,double*time_sum,time_t end_time)
{
void deal_rank(char**,double*);//生成排行榜(rank)
int j;
system("cls");//清除当前屏幕
deal_rank(nickname,time_sum);
puts("已将游戏结果将保存在d:/游戏排行榜.txt\n");
printf("本轮排行榜为:\n\n保存时间:%s\n\n",ctime(&end_time));
puts("时间格式:星期,月,日,小时:分:秒,年\n");
puts("排名 成绩 范围 昵称 ");
fprintf(fp,"\n&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\n");
fprintf(fp,"\n本轮排行榜为:\n保存时间:%s",ctime(&end_time));
fputs("时间格式:星期,月,日,小时:分:秒,年\n",fp);
for(j=0;j<=i;j++)
{
printf("\n%-2d %.0LfS %d~%d %s \n",j+1,time_sum[j],down_i[j],up_i[j],nickname[j]);
fputs("*******************************************************************",fp);
fprintf(fp,"\n排名:%-2d",j+1);
fprintf(fp,"\n成绩:%.0LfS",time_sum[j]);
fprintf(fp,"\n范围:%d~%d",down_i[j],up_i[j]);
fprintf(fp,"\n昵称:%s\n",nickname[j]);
}
}
void deal_rank(char**nickname,double*time_sum)//插入排序法
{
double t_time;
int t_up,t_down;
char t_name[555];
int dai_cha,bi_jiao,hou_yi;//待插,比较,后移
if(time_sum[0]>time_sum[1])
{
t_time=time_sum[0],time_sum[0]=time_sum[1],time_sum[1]=t_time;
}
for(dai_cha=2;dai_cha<=i;dai_cha++)
for(bi_jiao=0;bi_jiao<dai_cha;bi_jiao++)
if(time_sum[dai_cha]<time_sum[bi_jiao])
{
t_time=time_sum[dai_cha];
t_down=down_i[dai_cha];
t_up=up_i[dai_cha];
strcpy(t_name,nickname[dai_cha]);
for(hou_yi=dai_cha;hou_yi>bi_jiao;hou_yi--)
{
time_sum[hou_yi]=time_sum[hou_yi-1];
down_i[hou_yi]=down_i[hou_yi-1];
up_i[hou_yi]=up_i[hou_yi-1];
strcpy(nickname[hou_yi],nickname[hou_yi-1]);
}
time_sum[bi_jiao]=t_time;
down_i[bi_jiao]=t_down;
up_i[bi_jiao]=t_up;
strcpy(nickname[bi_jiao],t_name);
}
}
哎,编了一天,终于大功告成!!!有疑问之处qq我:281754179
#include <stdio.h>
#include <time.h>//用来计算时间差
#include <stdlib.h>//rand(),srand()函数所需头文件
#include <conio.h>//getch()所需函数
#include <string.h>
int i=0;
int*down_i,*up_i;
time_t first_time, end_time;//time_t在time.h中被定义为long型
int main()
{
void pai_hang_bang(FILE*,char**,double*,time_t);//排行榜
int j;
int rand_i,guess;
char **nickname;
double *time_sum;
FILE*fp;
if((fp=fopen("d:/游戏排行榜.txt","a+"))==NULL)//防错处理
{
puts("error!");
exit(1);//异常退出
}
//下面为申请动态数组
nickname=(char**)malloc(1*sizeof(char*));
nickname[0]=(char*)malloc(555*sizeof(char));
down_i=(int*)malloc(1*sizeof(int));
up_i=(int*)malloc(1*sizeof(int));
time_sum=(double*)malloc(1*sizeof(double));
restart://goto的标记
puts("输入你的昵称:");
fflush(stdin);//清空输入流,避免gets函数受到空格等因素影响
gets(nickname[i]);
puts("你想猜的数字范围是?(用空格分开):");
while((scanf("%d%d",&down_i[i],&up_i[i])==0)||down_i[i]>up_i[i])//如果输入有误,scanf函数将返回0
{
printf("输入错误,请重新输入(按任意键继续):");
getch();
printf("\r \r");//清除上面这一句话
fflush(stdin);//清空输入流,避免getch()、及scanf()函数受到空格等因素影响
}
rand_i=rand()%(up_i[i]-down_i[i]+1)+down_i[i];//生成down_i~up_i之间的随机数
printf("按任意键开始(按下后即进行游戏计时):");
getch();
printf("\r \r");//清除上面这一句话
first_time=time(NULL);//记录游戏开始时间
printf("请输入一个数(%d~%d):\n",down_i[i],up_i[i]);
while(1)
{
scanf("%d",&guess);
if(guess>rand_i)
puts("大了");
else if(guess<rand_i)
puts("小了");
else
{
puts("恭喜你,答对了!(按Esc键退出,其他键继续)");
break;
}
}
end_time=time(NULL);//记录游戏结束时间
time_sum[i]=difftime(end_time,first_time);//difftime()函数用来得到时间差
printf("本轮游戏时间为: %.0Lf seconds",time_sum[i]);
if('\x1b'==getch())//注意这里有getch()
{
pai_hang_bang(fp,nickname,time_sum,end_time);
return 0;
}
system("cls");//清除当前屏幕
i++;
//下面为动态扩充数组
nickname=(char**)realloc(nickname,(i+1)*sizeof(char*));
nickname[i]=(char*)malloc(555*sizeof(char));
down_i=(int*)realloc(down_i,(i+1)*sizeof(int));
up_i=(int*)realloc(up_i,(i+1)*sizeof(int));
time_sum=(double*)realloc(time_sum,(i+1)*sizeof(double));
goto restart;
getch();
fclose(fp);
//下面为释放动态内存
for(j=0;j<=i;j++)
free(nickname[j]);
free(nickname);
free(down_i);
free(up_i);
free(time_sum);
return 0;
}
void pai_hang_bang(FILE*fp,char**nickname,double*time_sum,time_t end_time)
{
void deal_rank(char**,double*);//生成排行榜(rank)
int j;
system("cls");//清除当前屏幕
deal_rank(nickname,time_sum);
puts("已将游戏结果将保存在d:/游戏排行榜.txt\n");
printf("本轮排行榜为:\n\n保存时间:%s\n\n",ctime(&end_time));
puts("时间格式:星期,月,日,小时:分:秒,年\n");
puts("排名 成绩 范围 昵称 ");
fprintf(fp,"\n&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\n");
fprintf(fp,"\n本轮排行榜为:\n保存时间:%s",ctime(&end_time));
fputs("时间格式:星期,月,日,小时:分:秒,年\n",fp);
for(j=0;j<=i;j++)
{
printf("\n%-2d %.0LfS %d~%d %s \n",j+1,time_sum[j],down_i[j],up_i[j],nickname[j]);
fputs("*******************************************************************",fp);
fprintf(fp,"\n排名:%-2d",j+1);
fprintf(fp,"\n成绩:%.0LfS",time_sum[j]);
fprintf(fp,"\n范围:%d~%d",down_i[j],up_i[j]);
fprintf(fp,"\n昵称:%s\n",nickname[j]);
}
}
void deal_rank(char**nickname,double*time_sum)//插入排序法
{
double t_time;
int t_up,t_down;
char t_name[555];
int dai_cha,bi_jiao,hou_yi;//待插,比较,后移
if(time_sum[0]>time_sum[1])
{
t_time=time_sum[0],time_sum[0]=time_sum[1],time_sum[1]=t_time;
}
for(dai_cha=2;dai_cha<=i;dai_cha++)
for(bi_jiao=0;bi_jiao<dai_cha;bi_jiao++)
if(time_sum[dai_cha]<time_sum[bi_jiao])
{
t_time=time_sum[dai_cha];
t_down=down_i[dai_cha];
t_up=up_i[dai_cha];
strcpy(t_name,nickname[dai_cha]);
for(hou_yi=dai_cha;hou_yi>bi_jiao;hou_yi--)
{
time_sum[hou_yi]=time_sum[hou_yi-1];
down_i[hou_yi]=down_i[hou_yi-1];
up_i[hou_yi]=up_i[hou_yi-1];
strcpy(nickname[hou_yi],nickname[hou_yi-1]);
}
time_sum[bi_jiao]=t_time;
down_i[bi_jiao]=t_down;
up_i[bi_jiao]=t_up;
strcpy(nickname[bi_jiao],t_name);
}
}
展开全部
游戏时间? 游戏次数吧,你要知道,time也可以翻译为次数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
178小游戏挺多的 可能有你要的资料
“178小游戏专区游戏多多,乐趣多多,参与活动,还有大量钻石点卡送给你!”
“178小游戏专区游戏多多,乐趣多多,参与活动,还有大量钻石点卡送给你!”
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询