分析:
先产生一个随机数N。
然后输入数I,如果A大于N,则提示大于信息。
如果I小于N,则提示小于信息。
直到I==N,则输出成功信息。
这是我用C语言写的。
环境:
WIN-C
,TORBO
C,如果是C++环境把倒数第二排getch();删掉!
已经调试成功:
main()
{
int
i=0,n;
srand(time(0));
n=rand()%100+1;
while(i!=n)
{printf("please
input
a
number:\n");
scanf("%d",&i);
if(i>n)printf("this
number
is
too
big!\n");
if(i number is too smaller!\n"); } if(i==n) printf("PASS!%3d",n); getch(); } 提示: srand(time(0)); n=rand()%100+1; 是用来生成一个1~100以内的随机数,如果你改,把100改成50或者200。如(n=rand()%50+1; ) #include #include #include #include #include void c_input(char*str) { int i,j; input:for(i=0;i<4;i++) { str[i]=getch(); putchar(str[i]); } putchar('\n'); for(i=0;i<4;i++) { if(str[i]<'0'||str[i]>'9') { printf("无效输入,请重新输入:"); goto input; } for(j=0;j { if(str[i]==str[j]) { printf("无效输入,请重新输入:"); goto input; } } } } void c_game(const char*temp) { int i,j,ci; char in[4]; char out[5]="0A0B"; for(ci=0;ci<8;ci++) { printf("第%d次输入:",ci+1); c_input(in); for(i=0;i<4;i++) { if(in[i]==temp[i]) { out[0]++; } else { for(j=0;j<4;j++) { if(in[i]==temp[j]) { out[2]++; } } } } printf("%s\n",out); if(strcmp(out,"4A0B")==0) { printf("游戏成功,按下任意键返回主菜单。。"); getch(); return; } out[0]='0'; out[2]='0'; } printf("游戏失败,按下任意键返回主菜单。。"); getch(); } void c_rand() { int i,j; char data[]="0123456789"; char temp[4]; system("cls"); printf("**随机模式**\n\n"); for(i=0;i<4;i++) { j=rand()%(10-i); temp[i]=data[j]; data[j]=data[10-i-1]; } c_game(temp); } void c_printf() { char temp[4]; system("cls"); printf("**用户输入模式**\n\n"); printf("请输入测试数据:"); c_input(temp); system("cls"); printf("**用户输入模式**\n\n"); c_game(temp); } void main() { srand(time(NULL)); while(1) { system("cls"); printf("(1)随机产生数据\n"); printf("(2)用户输入数据\n"); printf("(3)退出游戏\n"); printf("choice:"); switch(getch()) { case'1':c_rand();break; case'2':c_printf();break; case'3':exit(1); } } } 在VC6下编译通过,但因为没有用C++特征,也可在其它C的编译器上试试 加了得分榜,没写排序,没时间了。自己加一下就OK #include #include #include #include int score=0; void SELECT(int); void Guess(int,int); void Select(); void letsgo(); void NB(int);//以上的是函数原型 struct PLAYER { char name[10]; int plscore; }; void save() { printf("您的得分是%i",score); PLAYER player; printf("请输入姓名:"); scanf("%s",player.name); player.plscore=score; FILE*fp; if((fp=fopen("record.txt","ab"))==NULL) { printf("不能打开文件!"); exit(0); } fwrite(&player,sizeof(PLAYER),1,fp); printf("记录保存完毕!"); fclose(fp); } void print() { printf("分数榜:"); FILE*fp; if((fp=fopen("record.txt","rb"))==NULL) { printf("不能打开文件!"); exit(0); } PLAYER player; while(fread(&player,sizeof(PLAYER),1,fp)==1) { printf("\n姓名:%s\n",player.name); printf("分数:%i\n",player.plscore); } fclose(fp); } void main() { char end; printf("\t\t欢迎光临!!\n\t在这里我将来测试你的运气!\n"); printf("请你猜下数字,但机会就只有三次!!\n"); printf("\n 1、开始游戏^__^\n 2、我是倒霉鬼,我不玩\n 3、查看分数榜"); printf("请选择1或2\n"); Select(); printf("\n按任意键退出"); fflush(stdin); end=getchar(); if(score>0) save(); printf("Thanks For Playing\2 886\n"); } void Select() { int s; static int lihai=0; fflush(stdin); scanf("%d",&s); switch(s) { case 1: letsgo();break; case 2: printf("唉,你不想玩,我就不逼你咯\n");exit(0); case 3:print(); break; default: lihai++; if(lihai==3||lihai==5) { NB(lihai); break; } printf("你输入的是什么啊!重新输入< 1或 2>\n"); Select(); } } void letsgo() { int select; printf("请你选择猜数字的难度\n"); printf("1、简单->猜测 0到 9的数字\n"); printf("2、一般->猜测 0到 99的数字\n"); printf("3、困难->猜测 0到 999的数字\n"); printf("<请不要乱选!!>\n"); scanf("%d",&select); switch(select) { case 1:SELECT(10);break; case 2:SELECT(100);break; case 3:SELECT(1000);break; case 4:print(); default: { printf("请不要乱选!!\n"); letsgo(); } } } void NB(int l) { char a[20]; static int jihui=0; printf("\n老大!我服了你,%d次都输入错误。\n",l); printf("\n<可能你在捣乱~~>\n"); printf("(如果不想结束,请输入[sorry]<中括号内的>否则结束游戏)\n"); fflush(stdin); gets(a); if(strcmp(a,"sorry")==0||strcmp(a,"SORRY")==0) { jihui++; if(jihui==2) { printf("\n死性不改。道歉也没有用了!\n"); goto end; } printf("好吧。给你次机会<请输入 1或 2>\n"); Select(); } end: printf(""); } void SELECT(int n) { int num; srand((unsigned)time(NULL)); num=rand()%n; if(n==10) { n=3; printf("\n你有%d次猜测的机会\n",n); } if(n==100) { n=5; printf("\n你有%d次猜测的机会\n",n); } if(n==1000) { n=7; printf("\n你有%d次猜测的机会\n",n); } Guess(num,n); } void Guess(int num,int n) { int search,k,o; static int i=1; char ans; if(n==3) k=10; if(n==5) k=100; if(n==7) k=1000; o=(num-k/1)%k; if(o<0) o=0; printf("\n请猜这个数是多少(在<%d>到<%d>):",o,(k/5+num)%k); fflush(stdin); scanf("%d",&search); if(num>search) printf("\n小了\n"); if(num printf("\n大了\n"); if(num==search) { printf("\n恭喜您了!你在第%d次猜对了\n",i); score+=10; printf("是否继续 fflush(stdin); ans=getchar(); if(ans=='y'||ans=='Y') { i=1; letsgo(); } } else { i++; if(i<=n) Guess(num,n); else { printf("\n你的%d次机会已经没有了!!,答案是%d\n",i-1,num); printf("是否继续 fflush(stdin); ans=getchar(); if(ans=='y'||ans=='Y') { i=1; letsgo(); } } } } 满意请采纳。二、c语言题 猜数字游戏
三、c语言:猜数字游戏代码
上一篇:c语言编游戏要用到哪些知识
下一篇:c语言简单迷宫游戏知识点