猜数字游戏c语言编程代码记录前十名用次最少的玩家(猜数游戏 c语
C语言写猜数字小游戏记录游戏时间并根据时间排名显示前10位怎么搞哦?
游戏的话跟并根据自己的排名进行显示,怎么搞这的话根据他排名的话进行素质的人编写,然后按照c语言的一个Python电信一些编写。
猜数字游戏: 要c语言的代码
#includestdio.h
#includestdlib.h
#includetime.h
#define menu printf("1:开始游戏!2:查看积分榜!3:输出帮助信息!4:系统设置!0:退出程序!\n")
void sort(int *start, int *end)
{
int *key, *i , *j, temp;
key = start; i = start; j = end;
if(start=end) return;
while(i != j)
{
while(*j = *key j i) j--; {temp = *j; *j = *key; *key = temp; key = j; }
while(i j *i = *key) i++; {temp = *i; *i = *key; *key = temp; key = i; }
}
sort(start, key-1);
sort(key+1, end);
}
void game(int count, int times)
{
int i, j, f, f1, a[10], b[10], f2, score=100;
FILE *fp;
printf("输入%d个1至9之间不重复的数 中间用空格隔开\n", count);
srand((unsigned)time(NULL));
for(i=0; icount; i++)
{ a[i]=rand()%10;
while(1)
{
for(j=0, f=1; ji; j++)
if(a[i]==a[j]) {a[i]=rand()%10; f=0; break;}
if(f) break;
}
}
printf("产生随机数为:");
for(i=0; icount; i++) printf("%d ", a[i]); printf("\n");
while(times)
{
printf("你还有%d次机会\n", times);
f=0, f1=0, f2=1;
for(i=0; icount; i++)
if(scanf("%d", b[i])!=1) { printf("输入格式不正确..你浪费了一次机会\n\n"); f2=0; break;}
if(f2)
for(i=0; icount; i++)
{ if(f2==0) break;
for(j=i+1; jcount; j++)
if(b[i]==b[j]) { printf("输入有重复..你浪费了一次机会\n\n"); f2=0; break;}
}
if(f2)
{
for(i=0; icount; i++)
for(j=0; jcount; j++)
if(a[i]==b[j])
if(i==j) f++;
else f1++;
if(f==count) {printf("你蒙对了!!!\n\n"); ; break;}
printf("有%d个数数值和位置都相同! 有%d个数数值相同,但位置不同\n\n", f, f1);
}
times--; score-=10;
fflush(stdin);
}
if(score0)
{
fp=fopen("dat.txt", "r");
fread(a,sizeof(int),7,fp);
a[7] = score;
sort(a+2, a+7);
for(i=7; i2; i--) b[9-i]=a[i]; b[0]=a[0]; b[1]=a[1];
fclose(fp);
fp=fopen("dat.txt", "w");
fwrite(b,sizeof(int),7,fp);
fclose(fp);
}
}
void viewrecord()
{
FILE *fp;
int a[7], i;
if((fp=fopen("dat.txt", "r"))==NULL) printf("无记录");
else fread(a,sizeof(int),7,fp);
for(i=2; i7; i++)
printf("第%d名 %d分\n", i-1, a[i]);
printf("按任意键键退出积分榜\n\n");
fclose(fp);
getchar();
}
void set()
{
int a[7], i;
FILE *fp;
fp=fopen("dat.txt", "r");
fread(a,sizeof(int),7,fp);
printf("修改数字个数\n");
scanf("%d", a[0]);
printf("修改尝试次数\n");
scanf("%d", a[1]);
fp=fopen("dat.txt", "w");
i=fwrite(a,sizeof(int),7,fp);
if(i==7) printf("修改成功!\n");
else printf("修改失败\n");
printf("按任意键键回主菜单\n\n");
fclose(fp);
getchar();
}
void main()
{
int a[7], i;
FILE *fp;
char ch;
if((fp=fopen("dat.txt", "r"))==NULL)
{
fp=fopen("dat.txt", "w");
for(i=2; i7; i++)
a[i]=0; a[0]=4; a[1]=4;
fwrite(a,sizeof(int),7,fp);
fclose(fp);
}
else
fread(a,sizeof(int),7,fp);
printf("1:开始游戏!2:查看积分榜!3:输出帮助信息! 4:系统设置!0:退出程序!\n");
while((ch=getchar())!='0')
switch(ch)
{
case '1' : fp=fopen("dat.txt", "r"); fread(a,sizeof(int),7,fp); fclose(fp); game(a[0], a[1]); menu; break;
case '2' : viewrecord();menu;break;
case '3' : printf("帮助\n"); getchar(); break;
case '4' : set(); menu; break;
default : ;
}
}
C语言编程题(设计一个猜数字的小游戏)满意再加200分!!!!
我看了楼上几个的答案,功能均不是很完善,所以我决定来试一试
,应该是今天最迟是明天可以贴出来了.希望不要那么快就结贴....
哈哈.....经过了几个小时的奋战.. 终于搞出来了!!!!!!!!!!!!!!!!!!! 你题目要求的功能几乎全部实现.希望你认真调试一下!!!!!!
调试环境.vc++ 6.0. 支持中文编译的编译器都可以调试运行的.
注意事项:如果编译器是不支持中文显示的就会出现乱码的,所以最好是在支持中文显示的编译器上面编译运行.例如:vc++ 6.0以上的版本!!!!
#include stdlib.h
#include stdio.h
#include time.h
#includewindows.h
#includestring.h
#define MAX 5
struct record
{
char name[10];
int sorce;
}rec[MAX],Rec;
int n; //记录行数
int num; //输入的数字
void display(); //开始界面
void xuanze(); //选择函数
void sys(int a); //操作函数
void newgame(); //新游戏
void vdisplay(); //浏览记录界面
void vxuanze(); //浏览选择函数
void help(); //帮助说明
void vsys(int a); //浏览操作函数
void viewsorce(); //按记录的顺序浏览
void viewname(); //按记录的姓名浏览
void viewsname(); //按记录和姓名浏览
void delrec(); //删除记录
int qushu(); //取数函数
int tishi(int aa); //提示函数
void addrec(int a); //判断并且增加记录
void recread(); //读取记录文件
void recwrite(); //写入记录文件
///////////////////////////////////////////////////////////////////////////////////////////////
////////////////////函数定义//////////////
void display() //开始界面
{
system("cls"); //清屏
printf(" ============================================\n");
printf(" ================数字竞猜游戏================\n");
printf(" ============================================\n");
printf("\n");
printf(" 1: 新游戏\n");
printf("\n");
printf(" 2: 浏览记录\n");
printf("\n");
printf(" 3: 帮助说明\n");
printf("\n");
printf(" 4: 清除记录\n");
printf("\n");
printf(" 5: 退出\n");
printf("\n");
printf(" ============================================\n");
xuanze();
}
void xuanze() //选择函数
{
int a;
printf("请输入你所选择的操作数:\n");
scanf("%d",a);
if(a==1||a==2||a==3||a==4||a==5)
{
sys(a);
}//选择相应的操作数执行函数
else
{
printf("错误的操作数!\n");;
printf("\n");
printf("请按任意键继续...\n");
getchar();
getchar();
display();
}
}
void sys(int a) //操作函数
{
switch(a)
{
case 1:newgame();break;
case 2:vdisplay();break;
case 3:help();break;
case 4:delrec();break;
case 5:exit(0);break; //退出
}
}
void newgame() //新游戏
{
recread();
system("cls"); //清屏
printf("\n");
printf("记录列表显示如下:\n");
printf("\n");
for(int i=0;iMAX;i++)
{
if(rec[i].sorce==0)printf(" ---空记录---\n");
else
printf(" 第 %d 名: 姓名: %s 分数 %d\n",i+1,rec[i].name,rec[i].sorce);
}
printf("\n");
printf("请按任意键继续...\n");
getchar();
getchar();//////////////上面列出记录文件中的记录
/////////////////////////////////////////////////////////////////////////////
int snum; //输入的数字
int sn=10; //机会次数
num=qushu(); //取数
L: system("cls"); //清屏
printf(" ============================================\n");
printf(" ================数字竞猜游戏================\n");
printf(" ============================================\n");
printf("\n");
printf(" 1: 显示答案\n");
printf(" ============================================\n");
printf("\n");
printf("请输入你猜想的四个数字(格式为9999样式)你还有 %d 次机会:\n",sn);
scanf("%d",snum);
if(snum10000 snum1000 || snum==1)
{
if(snum==1)
{
printf("你放弃了本局游戏!该四个数字是: %d\n",num);
printf("\n");
printf("请按任意键继续...\n");
getchar();
getchar();
display();
}
else
{
int flag=tishi(snum);
if(flag!=0 sn!=0)
{
sn--;
if(sn==0)
{
printf("真是遗憾!十次机会没有了!没有关系!下次继续!\n");
printf("\n");
printf("请按任意键继续...\n");
getchar();
getchar();
display();
}
printf("请按任意键继续猜...\n");
getchar();
getchar();
goto L;
}
else
{
if(sn!=0)addrec(sn);
else
{
printf("请按任意键继续...\n");
getchar();
getchar();
display();
}
}
}
}
else
{
printf("错误的操作数!\n");;
printf("\n");
printf("请按任意键继续...\n");
getchar();
getchar();
goto L;
}
}
void help() //帮助说明
{
system("cls"); //清屏
printf(" ============================================\n");
printf(" ==============数字竞猜游戏帮助==============\n");
printf(" ============================================\n");
printf("\n");
printf("1.新游戏中,你可以输入四位数,来竞猜系统自动生成的四个数字!,只有十次的机会,\n");
printf(" 每次机会都有相对应的提示,十次的机会利用完了还没有猜对的话就算失败!四个数字的\n");
printf(" 相应格式在游戏中会有提示!当成功猜出系统给定的数字时候,就会统计你的成绩.当你的\n");
printf(" 成绩比记录文件中的记录好的时候就会提示你是否把记录记录到记录文件中,当你选择是\n");
printf(" 的时候就会接着提示你输入你的名字.再按回车.没有意外就会提示保存成功!\n");
printf(" 还有要说明的是记录中的分数是越低就代表成绩越好!\n");
printf("2.浏览记录有三种方式!第一种只是列出记录中的姓名;第二种是列出记录中的成绩次序\n");
printf(" 第三种是姓名跟成绩一起列出来!\n");
printf("3.清除记录就是把记录文件初始化.即是让记录文件为空!\n");
printf("\n");
printf("请按任意键继续...\n");
getchar();
getchar();
display();
}
void vdisplay() //浏览记录界面
{
system("cls"); //清屏
printf(" ============================================\n");
printf(" ================数字竞猜游戏================\n");
printf(" ============================================\n");
printf("\n");
printf(" 1: 按记录的顺序浏览\n");
printf("\n");
printf(" 2: 按记录的姓名浏览\n");
printf("\n");
printf(" 3: 姓名记录全部浏览\n");
printf("\n");
printf(" 4: 返回上级\n");
printf("\n");
printf(" ============================================\n");
vxuanze();
}
void vxuanze() //浏览选择函数
{
int a;
printf("请输入你所选择的操作数:\n");
scanf("%d",a);
if(a==1||a==2||a==3||a==4)
{
vsys(a);
}//选择相应的操作数执行函数
else
{
printf("错误的操作数!\n");;
printf("\n");
printf("请按任意键继续...\n");
getchar();
getchar();
vdisplay();
}
}
void vsys(int a) //浏览操作函数
{
switch(a)
{
case 1:viewsorce();break;
case 2:viewname();break;
case 3:viewsname();break;
case 4:display();break; //返回上级
}
}
void viewname() //按记录的顺序浏览
{
recread();
system("cls"); //清屏
printf("\n");
printf("记录列表显示如下:\n");
printf("\n");
for(int i=0;iMAX;i++)
{
if(rec[i].sorce==0)printf(" ---空记录---\n");
else
printf(" 第 %d 名: 姓名: %s\n",i+1,rec[i].name);
}
printf("\n");
printf("请按任意键继续...\n");
getchar();
getchar();
vdisplay();
}
void viewsorce() //按记录的姓名浏览
{
recread();
system("cls"); //清屏
printf("\n");
printf("记录列表显示如下:\n");
printf("\n");
for(int i=0;iMAX;i++)
{
if(rec[i].sorce==0)printf(" ---空记录---\n");
else
printf(" 第 %d 名: 分数 %d\n",i+1,rec[i].sorce);
}
printf("\n");
printf("请按任意键继续...\n");
getchar();
getchar();
vdisplay();
}
void viewsname() //按姓名和记录浏览
{
recread();
system("cls"); //清屏
printf("\n");
printf("记录列表显示如下:\n");
printf("\n");
for(int i=0;iMAX;i++)
{
if(rec[i].sorce==0)printf(" ---空记录---\n");
else
printf(" 第 %d 名: 姓名: %s 分数 %d\n",i+1,rec[i].name,rec[i].sorce);
}
printf("\n");
printf("请按任意键继续...\n");
getchar();
getchar();
vdisplay();
}
void delrec() //删除记录
{
recread();
for(int i=0;iMAX;i++)
{
rec[i].sorce=0;
}
recwrite();
printf("删除成功!\n");
printf("\n");
printf("请按任意键继续...\n");
getchar();
getchar();
display();
}
int qushu() //取数函数
{
int a=0;
int i=0;
srand( (unsigned)time( NULL ) ); //随机数种子设置
while(i==0)
{
i=rand(); //这样做就是为了增加随机性
i=i%100;
}
L: for(int j=0;ji;j++)
{
a=a+rand(); //判断随机数是否是四位数 如果不是继续取数
}
a=(a/i+rand())%10000;
if(a1000)goto L;
return(a);
}
int tishi(int aa) //提示函数
{
int a,b,c,d;
int af,bf,cf,df;
if(aa==num)
{
printf("恭喜!你猜对了!四个数就是:%d\n",num);
return(0);
}
else
{
a=(num-num%1000)/1000;
b=(num%1000-(num%1000)%100)/100;
c=((num%1000)%100-((num%1000)%100)%10)/10; //获取默认四个数字
d=((num%1000)%100)%10;
af=(aa-aa%1000)/1000;
bf=(aa%1000-(aa%1000)%100)/100;
cf=((aa%1000)%100-((aa%1000)%100)%10)/10; //获取输入的四个数字
df=((aa%1000)%100)%10;
if(afa)printf("\n第一个数应该比 %d 小一点!\n",af);
if(af==a)printf("恭喜!第一个数字对了!应该是: %d\n",af); //数字比较
if(afa)printf("第一个数应该比 %d 大一点!\n",af);
if(bfb)printf("第二个数应该比 %d 小一点!\n",bf);
if(bf==b)printf("恭喜!第二个数字对了!就是: %d\n",bf); //数字比较
if(bfb)printf("第二个数应该比 %d 大一点!\n",bf);
if(cfc)printf("第三个数应该比 %d 小一点!\n",cf);
if(cf==c)printf("恭喜!第三个数字对了!就是: %d\n",cf); //数字比较
if(cfc)printf("第三个数应该比 %d 大一点!\n",cf);
if(dfd)printf("第四个数应该比 %d 小一点!\n",df);
if(df==d)printf("恭喜!第四个数字对了!就是: %d\n",df); //数字比较
if(dfd)printf("第四个数应该比 %d 大一点!\n\n",df);
return(1);
}
}
void addrec(int a) //判断并且增加记录
{
char c;
int flag=0; //标志位
a=11-a;
recread();
for(int i=0;iMAX;i++)
{
if(arec[i].sorce || rec[i].sorce==0)
{
if(i==4 || rec[i].sorce==0)
{
printf("\n");
printf("恭喜!你的成绩 %d 分已经达到了前五名!\n",a);
printf("确认要保存记录请按'y',任意键返回...!\n");
scanf("%s",c);
if(c!='y')display();
rec[i+1].sorce=rec[i].sorce; //记录后移
strcpy(rec[i+1].name,rec[i].name);
printf("请输入你的名字\n");
scanf("%s",rec[i].name);
rec[i].sorce=a;
recwrite(); //写入
printf("恭喜!添加成功!\n",a);
flag++;
printf("\n");
printf("请按任意键继续...\n");
getchar();
getchar();
display();
}
else
{
printf("\n");
printf("恭喜!你的成绩 %d 分已经达到了前五名!\n",a);
printf("确认要保存记录请按'y',任意键返回...!\n");
scanf("%s",c);
if(c!='y')display();
for(int j=i;jMAX-1;j++)
{
rec[j+1].sorce=rec[j].sorce; //记录后移
strcpy(rec[j+1].name,rec[j].name);
if(rec[j+2].sorce==0)break;
}
printf("\n");
printf("请输入你的名字\n");
scanf("%s",rec[i].name);
rec[i].sorce=a;
recwrite(); //写入
printf("恭喜!添加成功!\n",a);
flag++;
printf("\n");
printf("请按任意键继续...\n");
getchar();
getchar();
display();
}
}
}
if(flag==0)
{
printf("\n");
printf("请按任意键继续...\n");
getchar();
getchar();
display();
}
}
void recread() //读取记录文件
{
FILE *fp;
L: fp=fopen("E:\\rec.rec","rb");
if(fp==NULL)
{
recwrite();
goto L; //初始化
}
if(fread(rec,sizeof(record),MAX,fp)==MAX)
{
}
else
{
printf("文件读取失败!");
}
fclose(fp);
}
void recwrite() //写入记录文件
{
FILE *fp;
fp=fopen("E:\\rec.rec","wb");
if(fp==NULL)
printf("写入失败!\n");
fwrite(rec,sizeof(record),MAX,fp);
fclose(fp);
}
void main()
{
display();
}
////////////////////////////////
C语言 猜数字游戏代码
#includestdio.h
#includestdlib.h
#includetime.h
int EachDiff(int a[],int n)
{
int i,j;
for(i=0;in;i++)
for(j=i+1;jn;j++)
if(a[i]==a[j])
return 0;
else
return 1;
}
int JudgeA(int a[],int b[],int n)
{
int i,result=0;
for(i=0;in;i++)
{
if(a[i]==b[i]) result++;
}
return result;
}
int JudgeB(int a[],int b[],int n)
{
int i,j,result=0;
for(i=0;in;i++)
for(j=0;jn;j++)
if(a[i]==b[j]i!=j){result++;break;}
return result;
}
void CreateNum(int a[],int n)
{
int i;
srand(time(0));
do
{
for(i=0;in;i++)a[i]=rand()%10;
}while(!EachDiff(a,n));
}
int JudgeInput(int a[],int n)
{
int i;
if(!EachDiff(a,n))
return 0;
else
for(i=0;in;i++)
if(a[i]9||a[i]0)
return 0;
else
return 1;
}
int main()
{
//system();
int a[4],b[4],i;
int fth=1;
printf("作者 Dante -- 谢煜东");
printf("\t\t 欢迎来到猜数字游戏\n\n");
printf(" 计算机想好了一个4位无重复数字,首位可以为零。\n 例如:0913是可以的,3502也是可以的,6787不可以。\n");
printf(" 现在您想办法把这个数字猜出来。\n\n");
printf(" 每猜一个数字,计算机会根据这个数字给出几A几B:\n 其中A前面的数字表示位置正确的数的个数,\n 而B前的数字表示数字正确而位置不对的数的个数。\n\n");
//printf(" 如正确答案为5234,而猜的人猜5346,则是1A2B。\n 其中有一个5的位置对了,记为1A;\n 而3和4这两个数字对了,而位置没对,因此记为2B;\n 合起来就是1A2B。\n\n");
printf(" 记住!1:你共有8次机会,2:输入的数字不能重复。\n\n");
printf(" 当出现\"第几次:\"字样并等待的时候,您就可以输入你要猜测的四位数字,\n 输入完之后回车确认。祝您开心\n\n 明白之后任意键游戏正式开始!");
getchar();
CreateNum(a,4);
system("cls");
printf("\t\t现在可以输入你要猜的四位数字了,输入之后回车确认。\n");
while(fth=8)
{
int t=1000;
printf("第%d次: ",fth);
scanf("%d",amp;b[0]);
for(i=0;i3;i++)
{
b[i+1]=b[i]%t;
b[i]=b[i]/t;
t/=10;
}
for(i=0;i4;i++){printf("%d",b[i]);}
if(JudgeInput(b,4)==0)
{
printf("您的输入有问题,请重新输入\n");
continue;
}
if(JudgeA(a,b,4)==4)
{
printf("\t结果: 答对了!好聪明!");
system("pause");
//return;
}
printf("\t结果:您有%d个数字和位置都对了,有%d个数字对了而位置没对\n",JudgeA(a,b,4),JudgeB(a,b,4));
fth++;
}
printf("\n很遗憾。正确答案是:");
for(i=0;i4;i++)
printf("%d",a[i]);
printf("下次再玩吧!88\n");
system("pause");
return 0;
}
C语言中的一个小游戏的排行榜系统...
我把你的代码改了一下,我已经运行过了,你看看
#includestdlib.h
#includestdio.h
#includetime.h
int play(int suiji);
void paihangbang(struct p a[100],int r);
struct p
{
char name[20];
int cishu;
}chengji[100];
void main()
{
int i,suiji, xuanze;
i=0;
/*i=猜测了多少次,suiji=产生的随机数字,xuanze=游戏者选择开始游戏还是结束游戏*/
printf("**************猜数字游戏***************\n");
printf("* 1.start *\n");
printf("* 0.exit *\n");
do
{
//记录玩家人次
i++;
srand((unsigned)time(NULL));
suiji=rand()%10;
//在此函数中进行判断,并返回记录次数
chengji[i].cishu=play(suiji);
printf("\n恭喜您,请输入您的名字:"); //记录玩家姓名
fflush(stdin);
gets(chengji[i].name);
printf("---------------------------------------\n");
printf("\n请作出您的选择(1:继续.0:结束): ");
scanf("%d", xuanze);
}while(xuanze!=0);
paihangbang(chengji,i);
printf("\n\n**************** 英 雄 榜 *****************");
printf("\n\tLv\tplayer\tScore");
for(i=1;i=10;i++) //取前十名输出
printf("\n\t%d\t%s\t%d",i,chengji[i].name,chengji[i].cishu);
printf("\n");
}
int play(int suiji)
{
int i=0,c=0, caice;
/*caice=游戏者猜测的数字*/
for(i=0; i=50; i++)
{
printf("\n请输入您猜测的数字:\n ");
scanf("%d", caice);
c++;
if(caicesuiji)
printf("您所猜测的数字过大\n");
else if(caicesuiji)
printf("您所猜测的数字过小\n");
else if(caice==suiji)
{printf("您所猜测的数字正确\n");
break; }
}
return c; //返回猜测的次数
}
void paihangbang(struct p a[100],int r)
{
int i,j;
struct p t;
for(i=0;ir;i++)
{
for(j=0;jr-i;j++)
{
if(a[j].cishua[j+1].cishu)
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
}
求用C++编写猜数字游戏的代码,环境是visual studio 6.0
#includeiostream.h
#includestdlib.h
#includetime.h
void main()
{cout"游戏说明:\n";
cout"输入四个不重复的数,之后屏幕将显示m A n B,(0=m=4,0=n=4),"
"表示输入的数中有m个猜中且位置正确,有n个猜中但位置错误,根据提示"
"输入数字,若猜十次仍得不到正确结果,则游戏结束。每次输入后都可"
"以选择继续或查看答案并退出。\n";
int A,B,C,D;
srand(time(0));
int i=0;
while (i1)
{
A=rand()%10;
B=rand()%10;
C=rand()%10;
D=rand()%10;
if((A!=B)(A!=C)(A!=D)(B!=C)(B!=D)(C!=D))
i++;
}
cout"请输入四个不重复的数:\n";
for(int j=1;j=10;j++)
{
int a,b,c,d;
cinabcd;
if((a==A)(b==B)(c==C)(d==D))
{cout"You are so clever!\n";}
else
{
int m,n;
char choice;
m=(a==A)+(b==B)+(c==C)+(d==D);
n=((a==B)||(a==C)||(a==D))+((b==A)||(b==C)||(b==D))+((c==A)||(c==B)||(c==D))+((d==A)||(d==B)||(d==C));
coutm"A"n"B"endl;
cout"Print "'\"'"c"'\"'" to continue and print "'\"'"e"'\"'" to exit.\n";
cinchoice;
if(choice=='e')
break;
}
}
cout"The correct answer is:\n";
coutA'\t'B'\t'C'\t'Dendl;
}