一天练习一个小C/C++程序(一) 控制台版“金山打字”游戏
 发布时间 
 阅读量: 
 阅读量 
今天练习了一个C语言小程序,控制台版的简易“金山打字”小游戏。
效果图:

代码:
 #include<stdio.h>
    
 #include<stdlib.h>
    
 #include<windows.h>
    
 #include <conio.h>
    
  
    
 void printfSpace(int num){
    
 	for(int i=0;i<num;i++){
    
 		printf(" ");
    
 	}
    
 }
    
  
    
 void printfColumn(int num){
    
 	for(int i=0;i<num;i++){
    
 		printf("\r\n");
    
 	}
    
 }
    
  
    
 void printfRow(int num){
    
 	for(int i=0;i<num;i++){
    
 		printf("-");
    
 	}
    
 }
    
  
    
 void printfHead(int level,int score){
    
 	printfSpace(20);
    
 	printf("levels:%d",level);
    
 	printfSpace(10);
    
 	printf("score:%d",score);
    
 	//换行
    
 	printfColumn(1);
    
 	printfSpace(20);
    
 	printf("1--pause");
    
 	printfSpace(10);
    
 	printf("0--exit");
    
 	//换行
    
 	printfColumn(1);
    
 	//输出横线
    
 	printfRow(80);
    
 }
    
  
    
 int main(){
    
  
    
 	printfColumn(10);
    
 	printfSpace(25);
    
 	printf("press anykey to start");
    
 	//阻塞等待输入
    
 	getchar();
    
 	//清屏幕
    
 	system("cls");
    
  
    
 	//C语言必须进行初始化
    
 	int level=0,score=0,random = 0;
    
 	//初始化头
    
 	printfHead(level,score);
    
  
    
 	//生成字母
    
 	char firstC = 'A';
    
 	while(true){
    
 		//每一次循环先清屏,重新生成头布局
    
 		system("cls");
    
 		printfHead(level,score);
    
  
    
 		//每次掉的时候先生成一个字母
    
 		random = rand() % 26;
    
 		char word = firstC + random;
    
 		//生成显示在第几列(字母显示在第几列)
    
 		int rowCount = rand() % 80;
    
 		int limit = 20,i;
    
 		//开始掉
    
 		for(i = 0;i<limit;i++){
    
 			printfSpace(rowCount);
    
 			printf("%c",word);
    
 			Sleep(200);
    
 			//回吃掉字母并且在当前行下移一行
    
 			printf("\b \n");
    
  
    
 			//使用kbhit来监听键盘敲击,防止使用getchar造成阻塞
    
 			if(kbhit()){
    
 				//使用getch会读取一个字符,如果使用getchar会读取输入的所有内容
    
 				char answer = getch();
    
 				if(answer == word){
    
 					score += 10;
    
 					break;
    
 				}else if(answer == '1'){
    
 					//暂停函数,按任意键之后会再继续执行程序
    
 					system("pause");
    
 				}else if(answer == '0'){
    
 					//退出程序
    
 					exit(0);
    
 				}
    
 			}
    
 		}
    
 	
    
 		
    
 		//能走到这说明直到底都没有消除,所以减十分
    
 		if(i == limit){
    
 		score -= 10;
    
 			if(score <= -30){
    
 				system("cls");
    
 				printfColumn(10);
    
 				printfSpace(25);
    
 				printf("game over!");
    
 				break;
    
 			}
    
 		}
    
  
    
 	}
    
  
    
 	return 0;
    
 }
    
    
    
    
        很好玩,对于java基础好的童鞋,写这些没什么逻辑问题,最主要的就是找一找功能函数,还有C语言是不支持在for循环中定义变量的,这里用的C++编译器,OK的。所以看到如此代码,不要疑惑。
全部评论 (0)
 还没有任何评论哟~ 
