⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1.cpp

📁 一个自己做的简单的猜数字游戏
💻 CPP
字号:
#include<stdio.h>
#include<stdlib.h> 
#include<time.h>
#include<conio.h>
#include<string.h>
int A,B;
void get(char num[])//由游戏自动获取所猜数字
{
	int x; 
	int i,j;
	srand(unsigned(time(0))); 
	for(i=0;i<4;i++) 
	{ 
leap:x=rand()%10; 
	 for(j=0;j<i;j++) 
	 { 
		 if(num[j]==x) 
			 goto leap;  	 
	 }
	 num[i]=x;
	}
}
int check(char gus_num[])//检查输入是否合法
{
	int i,j;
	bool flage=false;
	int len;
	len=strlen(gus_num);
	if(len!=4)
		return 1;
	else
	{
		for(i=1;i<4;i++)
		{
leap:if(flage) break;
	 for(j=0;j<i;j++)
	 {
		 if(gus_num[j]==gus_num[i])
		 {
			 flage=true;
			 return 1;
			 goto leap;
		 }
	 }
		}
	}
	return 0;
}
void guess(char gus_num[],char num[],int *flag)//比较输入数字和所猜数字
{
	A=0; B=0;
	for(int i=0;i<4;i++)
	{
		if(gus_num[i]==num[i])
			A++;
		else
		{
			for(int j=0;j<4;j++)
			{
				if(i!=j&&gus_num[i]==num[j])
					B++;
			}
		}
	}
	if(A==4) *flag=1;
	else *flag=0;
}
int main()
{	
	printf("****************************************************\n");   
	printf("类似文曲星的猜游戏数字\n");   
	printf("共有8次机会。\n");   
	printf("每猜一次程序提示A:x B:y (A:次序数字都对  B:仅数字对)\n");   
	printf("该程序由08xx2 1队编写\n");   
	printf("****************************************************\n");
	printf("有以下两种方式可供选择:\n");
	printf("    1.游戏系统随机选择\n");
	printf("    2.由其他玩家选择\n");
	int n; 
	char num[10];
	int i;	
	while(1)   
	{  
		int flage=0;
		while(!flage)
		{	
			printf("请选择输入数字的方式: ");	
			scanf("%d",&n);			
			if(n==1)
			{
				get(num);
				flage=1;
			}
			else if(n==2)//类似密码保护的输入所猜数字
			{
				printf("请另一玩家输入所猜数字: ");
				for(i=0;i<4;i++)       
				{       
					num[i]=getch()-48;      
					putchar('*');
				}
				printf("\n");
				flage=1;
			}
			else printf("请重新选择\n");
		}
		time_t time, start, end;
		start=clock();
		int flag=0;
		int count=0; 
		char gus_num[10];
		while(1)   
		{  
			printf("请输入不重复的数字(4位)\n");
			while(1)
			{
				scanf("%s",gus_num);
				fflush(stdin);
				//fflush(stdin)的作用就是清空输入缓冲区,避免缓冲区内残存读取函数无法取走的内容!
				if(check(gus_num))
					printf("输入非法,请重新输入\n");
				else break;
			}
			for(i=0;i<4;i++)
			{
				gus_num[i]=gus_num[i]-48;
			}
			guess(gus_num,num,&flag);
			count++;
			if(flag==1&&count<=8)   
			{   
				end=clock();
				time=end-start;
				printf("你真聪明!!猜对了!!\n"); 
				printf("此次猜数字时间: %dms\n",time);  
				break;   
			} 
			else if(flag==0&&count<8)
			{
				printf("该次信息:A:%d   B:%d\n",A,B);
				printf("你还有%d次机会\n",8-count);
			}
			else if(count==8)   
			{   
				printf("可惜!!次数有限!!\n");
				printf("正确答案是: ");
				for(i=0;i<4;i++)
				{
					printf("%d",num[i]);
				}
				printf(" 哦^_^~");
				printf("\n");
				break;   
			}   
		} 
		printf("还想玩么?[y/n]\n"); 
		char t;
		scanf("%c",&t); 
		if(t=='n'||t=='N')   
			break;   
		else   
			continue;   
	}   
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -