C语言课程设计—打字游戏(文章内涵全代码)

从屏幕上方从上往下,随机刷新字母,字母为下坠效果,按下一个对应的字母即可加一分,到达分数后通关

按下对应字母

左下角会计分

直接上代码

#include <stdio.h>
#include <locale.h>
#include <cstdlib>
#include <iostream>
#include <ctime>
#include <time.h>
#include <conio.h>
#include <unistd.h>
#include <windows.h>


void dayin();
void zhongwendayin();
void kuang();
void youxiyunxing();
int weizhi[20];
char zimu[20];
void suijiweizhi();
void suijizimu() ;
int stopPrinting = 0; 
int score = 0;
void jeishu();
void jeishu1();
void chongkai();







void jeishu()
{
	
	
	
	system("cls");
	printf("游戏结束!恭喜通关,3秒后退出\n");
				        printf("3...\n");
						sleep(1);
						printf("2...\n");
						sleep(1);
						printf("1...\n");
						exit(0);
/*	printf("输入y加回车重新开始游戏: \n");
char remake;
	scanf("%c",&remake);
	if(remake == 'y'||remake=='Y')
	
	{
		
	chongkai();	

	
		
	}
	*/
	
	
}

void jeishu1()
{
	system("cls");
	printf("游戏结束!恭喜通关,3秒后退出\n");
				        printf("3...\n");
						sleep(1);
						printf("2...\n");
						sleep(1);
						printf("1...\n");
						exit(0);
	
	
	
	
}



void dayin(int x, int y, char text)  // 在指定位置打印字符 dayin(个 ,行,"打印啥玩意")
{
	printf("\033[?25l");  // 隐藏光标
    printf("\033[%d;%dH", y, x);
    printf("%c", text);
}

void zhongwendayin(int x, int y, const char text[50])  // 在指定位置打印字符 dayin(个 ,行,"打印啥玩意")
{
printf("\033[?25l");  // 隐藏光标
printf("\033[%d;%dH", y, x);
printf("%s", text);
}













void suijiweizhi()   //生成随机10个1-100的数存在[]
{
    srand(time(NULL));
    for (int i = 0; i <= 15; ++i) {
        weizhi[i] = rand() % 99+ 2;
    }
}

void suijizimu()  //生成10个26个字母 存在zimu[]
{
    srand(time(NULL));
    
    for (int i = 0; i <= 15; ++i) 
	{
        int suijidezimu = rand() % 26;
        zimu[i] = (char)(suijidezimu + 'A');
    }
}









void kuang()
{	

system("cls");
	for(int i=0;i<102;i++)
	{
	dayin(i, 0, '*');
	}
	
	for(int i=0;i<102;i++)
	{
	dayin(i, 24, '*');
	}
	
	for(int i=1;i<24;i++)
	{
	dayin(0,i , '*');
	}
	
	for(int i=1;i<25;i++)
	{
	dayin(102,i , '*');
	}


}





void anjian() {
    if (_kbhit()) {
        char key = _getch();
        for (int i = 0; i <= 15; ++i) 
		{
            // 将输入的字符和数组中的字符都转换为小写(或大写)
            if (tolower(key) == tolower(zimu[i])) 
			{
                zimu[i] = ' '; // 将匹配的 zimu[] 中的字符变为空格
                score++;   
                if(score < 10)
				{
				dayin(1, 27, (score %10)+'0' );		
                }
                
				else if(score == 10)
				{
								dayin(1, 27, '1' );		
								dayin(2, 27, '0' );		
				}else
				{
				dayin(1, 27, '1' );		
				dayin(2, 27, (score %10)+'0' );		
					
				}	                
                return;
            }
        }
    }
}


void youxiyunxing()
{
	suijiweizhi();
	suijizimu() ;
	int speed = 0;	
	int youxiflag = 1;
	
	while(youxiflag == 1)
	{			
		Sleep(100);//0.001秒刷新一次
		speed++;	
	    anjian();
        int speedflag = (speed / 10) + 1;

				for (int i = 1; i <= 15; ++i) 
				{
					    if ((speedflag <= 22)&&score<10) 
						{
					        dayin(weizhi[i], speedflag, ' ');          // 将第i个位置打印为空格
					        dayin(weizhi[i], speedflag + 1, zimu[i]);  // 将下一行打印为字母
					    } 
						else if((speedflag > 22))
						{
					    youxiflag = 0;
					      					
					    }
					    else if(score>=10)
					    {
							
							
						Sleep(100);
						youxiflag = 3;	
						}
				}	
    }	
	
	
	
	
	
	if(youxiflag == 0)
	{
	jeishu1();//通关失败		
		
	}else if(youxiflag == 3)
	{
	jeishu();//成功	
		
	}
	
	
	
	



	
}
void chongkai()
{
	
kuang();//打印框
zhongwendayin(1, 26, "您的分数是:" );	

youxiyunxing()	;	
	
}
int main ()
{


/*	printf("输入y加回车重新开始游戏: \n");
char remake;
	scanf("%c",&remake);
	if(remake == 'y'||remake=='Y')
	
	{
		
	chongkai();	

	
		
	}
	*/


    system("cls");


	chongkai();
	
	
	
	
	
	
	
	
	
	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值