#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#include<conio.h>
#include<windows.h>
int total_num=0;//总分
int num=0;//分数
int abc1;
int x_1,y_1;
int level;
char abcd[52]=
{'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
void CreateWindows();
void gotoxy(int x,int y);//坐标获取
void update_score();
void abc_xy(int level);
void abc_down();
void shoot();
void login();
void lv(int ii);
int main(void)
{
srand((unsigned)time(NULL));
login();
return 0;
}
void login()
{
char i;
gotoxy(23,10);
printf("请选择难度:1,菜鸟 2,高手 :");
while(1)
{
scanf("%s",&i);
switch(i)
{
case '1': lv(26); break;
case '2': lv(52); break;
default:printf("输入错误,请选1-4:");
}
}
}
void lv(int ii)
{
level=ii;
CreateWindows();//创建窗口
update_score();//分数初始化
abc_xy(level);//字符初始化
while(1)
{
shoot();//射击
abc_down();//字符下落
abc_xy(level);//新建字符
}
}
void shoot()
{
while(kbhit()!=0)
{
kbhit();
if(abcd[abc1]==getch())
{
gotoxy(x_1,y_1);
printf(" ");
abc_xy(level);
num=num+1;
update_score();
}
}
}
void abc_down()
{
for(y_1;y_1<23;y_1++,Sleep(150))
{
gotoxy(x_1,y_1);
printf("%c",abcd[abc1]);
gotoxy(x_1,y_1-1);
printf(" ");
shoot();
}
total_num=total_num+1;
update_score();
gotoxy(x_1,y_1 - 1);
// printf(" ");
}
void abc_xy(int level)
{
x_1=rand()%76+2;
y_1=rand()%6+4;
abc1=rand()%level;
gotoxy(x_1,y_1);
printf("%c",abcd[abc1]);
}
void CreateWindows()//X=39*2 Y=23*2 X_min=1 X_max=38 Y_min=3 Y_max=22
{
gotoxy(0,0);
printf("╔═══════════════════╦══════════════════╗");
printf("║ ║ ║");
printf("╠═══════════════════╩══════════════════╣");
printf("║ ║");
printf("║ ║");
printf("║ ║");
printf("║ ║");
printf("║ ║");
printf("║ ║");
printf("║ ║");
printf("║ ║");
printf("║ ║");
printf("║ ║");
printf("║ ║");
printf("║ ║");
printf("║ ║");
printf("║ ║");
printf("║ ║");
printf("║ ║");
printf("║ ║");
printf("║ ║");
printf("║ ║");
printf("║ ║");
printf("╚══════════════════════════════════════╝");
}
void gotoxy(int x,int y)//坐标获取
{
COORD pos={x,y};
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hOut, pos);
}
void update_score()
{
gotoxy(2,1);
printf("我的分数:%d",num);
gotoxy(42,1);
printf("总个数:%d",total_num+num);
}
打字游戏,功能没问题 VC6.0直接运行, 你自己把代码优化一下,随手练的比较乱。。。准确说是惨不忍睹。。