打字母游戏

在网上搜游戏都是要用图形库的,自己写了一个不用图形库的

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h> 
#include<windows.h>
#include<conio.h>
char str[27]="abcdefghijklmnopqrstuvwxyz";    
int amount[27];
char game[100][100];
int ranking[20]; 
int duf=1;                    //难度 
int life;					 //生命 
int score;					//分数 
void name();   				//开发人员选项 
void start();				//游戏开始界面 
void gameintroduction();    //游戏介绍 
void choose();				//难度选择 
void gamestart();             //游戏开始 
void rank(int score);          //把分数加入排行榜 
void rankd();                  //排行榜界面 
int main()
{
	//system("mode con cols =90 lines=30");
	system("color b0");      //改变屏幕背景颜色 
	int hand;
	char ch;
	FILE *fp;
	start();				//游戏开始界面 
	while(1)
	{
		life=10;
	    score=0;
		scanf("%d",&hand);
		getchar(); 
		system("CLS"); 				//清屏 
		if(hand==1)
		{
			gamestart();
			while(scanf("%c",&ch),ch!='\n');
			system("CLS");
			start();
		} 
		else if(hand==2)						//难度选择 
		{
			choose();
			scanf("%d",&hand);
			if(hand==2)
				duf=2;
			else if(hand==3)
				duf=3;
			else duf=1; 
			system("CLS"); 				//清屏 
			start();                    //返回开始界面	
		} 
		else if(hand==3)                    //开发人员选项
		{
			name();
			while(scanf("%c",&ch),ch!='\n');
			system("CLS"); 				//清屏 
			start();                    //返回开始界面
		}
		else if(hand==4)                     //游戏介绍 
		{
			gameintroduction();
			while(scanf("%c",&ch),ch!='\n');	
			system("CLS"); 				 //清屏 			
			start();					 //返回开始界面
		}	
		else if(hand==5)                       //结束游戏 
		return 0;			
	}
}
void name()   					//开发人员选项 
{
	printf("**************\n") ;
	printf("**************\n") ;
	printf("**************\n") ;
	printf("**************\n") ;
}
void start()					//游戏开始界面 
{
	printf("				   打字母游戏\n");
	printf("                          *******************************\n");
	printf("			  * 	   游戏开始 1		*\n");
	printf("			  *        难度选择 2           *\n");
	printf("			  *        开发人员 3           *\n");
	printf("			  *        游戏介绍 4           *\n");
	printf("			  *        游戏结束 5		*\n");
	printf("                          *******************************\n");
	printf("\n");
	printf("			   输入对应的数字并回车可进行操作\n");
}
void gameintroduction()          //游戏介绍 
{
	printf("                 这是一个锻炼打字的游戏,在难度选\n");
	printf("		 择里可以选择不同的难度,不同的难\n");
	printf("		 度有不同的速度和下降范围。可以提\n");
	printf("		 高打字能力用键盘打出你看到的字母,\n");
	printf("		 打错了不扣分,打对了加一分。\n");
	printf("\n");
	printf("                       打之前请修改输入法 !\n");
	printf("                       打之前请修改输入法 !\n");
	printf("                       打之前请修改输入法 !\n");
	printf("                           *回车键退出*");
}
void choose()					//难度选择 
{
	printf("			  *************************\n");
	printf("			  *        简单 1	  *\n");
	printf("			  *        一般 2	  *\n");
	printf("		 	  *        困难 3	  *\n");
	printf("			  *************************\n");
	puts("已选择难度: ");
	if(duf==1)
		puts("容易");	
	if(duf==2)
		puts("一般");
	if(duf==3)
		puts("困难");	
} 
void gamestart()            //游戏开始
{	
	int w;                   //屏幕中宽度 
	int h; 					 //屏幕中高度 
	int k;
	char ch;   
	int x;
	int y;
	int i;
	int j; 
	int flag;
	char an;  
	if(duf==1)                  //难度为1       
	{
		k=1000;
		w=30;
		h=20;
	}	
	else if(duf==2)				//难度为2
	{
		k=500;
		w=40;
		h=20;
	}
		
	else if(duf==3)				//难度为3
	{
		k=300;
		w=50;
		h=20;
	}
		
    for(i=0;i<h;i++)               //初始游戏屏幕 
		for(j=0;j<w;j++)
			game[i][j]=' ';
	for(i=0;i<27;i++)               //初始游戏中字母个数 
		amount[i]=0;
		
	srand((unsigned int)time(NULL));    //设置种子 
	while(life)
	{
		
		for(i=h+1 ; i>=1 ; i--)
			for(j=0 ; j< w ; j++)
				game[i][j]=game[i-1][j];    //所有字母下降一格 
		i=h;
		for(j=0 ; j< w ; j++)              //减生命 
			if(game[i][j]!= ' ')
				life--;
		i=h;
		for(j=0;j<w;j++)                 //初始最后一行字母 
		game[i][j]=' ';
		i=0;
		for(j=0;j<w;j++)
			game[i][j]=' ';              //初始第一行字母 
		ch=rand()%26+1;					 //生成随机字母 
		amount[ch]++;					 //记录字母数量 
		x=0;
		y=rand()%w;					 //生成字母出现位置 
		game[x][y]=ch+96;				 //把字母存入数组 
		
		system("CLS"); 				        //清屏 
		for(i=0;i<h;i++)                //输出字母 
		{
			for(j=0;j<w;j++)
				printf("%c",game[i][j]);
			printf("\n");
		}
		for(i=0;i<w;i++)
			printf("-");                    //输出屏幕底部分隔横线 
		printf("\n");  
		printf("生命 : %d\n分数 : %d\n",life,score);
		    Sleep(k);                      //令屏幕睡眠 
		
		if(kbhit())                          //检测是否敲击键盘 
		{
			k--;                            //睡眠时间减少 
			an=getch();                     //把输入字母储存 
			an-=96;
			if(amount[an])                  //如果在屏幕上有输入字母 
			{
				flag=0;
				amount[an]--;
				for(i=h-1;i>=0;i--)
				{
					for(j=w;j>=0;j--)
					{
						if(game[i][j]==an+96)
						{
							game[i][j]=' ';    //清除屏幕上的数字 
							score++;           //分数加一 
							flag=1;
							break;
						}
					}
					if(flag==1)
						break;
				}
			}
		}	
	}      
	system("CLS");	
	printf("分数 : %d\n",score);         //输出分数 
	printf("回车键退出"); 
}
这个是简易版的,还有要用到文件处理操作的:


链接:点击打开链接 密码:lq7m

猜你喜欢

转载自blog.csdn.net/qq_41505957/article/details/80975375