说明:可以进行正确和错误的统计;三关,可选,不会自动跳关;
说明:可以进行正确和错误的统计;三关,可选,不会自动跳关;无输赢判断。
但是在字母落下时,如果出现2个及2个以上的同样字母,比如A,我只要
按一下A,所有的A都会消失了,我知道怎么样优化下。高手教下,谢!
以下是我的代码:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>
int i,j,lie,right=0,miss=0,sec=1000,jibie;
char a[10][20];
char input;
void move()
{
extern int i,j;
extern char a[10][20];
for(j=18;j>=2;j--)
{
for(i=1;i<=8;i++)
{
if(a[i][j-1]!=' ')
{
a[i][j]=a[i][j-1];
a[i][j-1]=' ';
}
}
}
}
void star()
{
extern int i;
printf(" |------------------|\n");
printf(" | 打字游戏 |\n");
printf(" |------------------|\n");
star:
printf("\n请选择游戏级别:①②③");
jibie=getch();
if(jibie=='1') sec=3000;
else if (jibie=='2') sec=2000;
else if (jibie=='3') sec=500;
else goto star;
system("cls");
}
main()
{
a[0][0]='*'; //制作框架
a[0][19]='*';
a[9][0]='*';
a[9][19]='*';
for(i=1;i<=8;i++)
{
a[i][0]='-';
}
for(i=1;i<=8;i++)
{
a[i][19]='-';
}
for(j=1;j<=18;j++)
{
a[0][j]='|';
}
for(j=1;j<=18;j++)
{
a[9][j]='|';
}
for(j=1;j<=18;j++)
{
for(i=1;i<=8;i++)
{
a[i][j]=' ';
}
}
star();
srand(time(NULL)); //初始化随机数
while(1)
{
while(!kbhit())
{
lie=1+rand()%8; //随机选择第一行的某一个
a[lie][1]=rand()%26+65; //随机给予一个字母
for(j=0;j<=19;j++) //打印数组
{
printf(" ");
for(i=0;i<=9;i++)
{
printf(" %c",a[i][j]);
}
printf("\n");
}
for(i=1;i<=8;i++) //计算Miss数量
{
if(a[i][18]!=' ')
{
miss++;
a[i][18]=' ';
printf("\a");
}
}
printf("正确:%d\n",right);
printf("Miss:%d\n",miss);
Sleep(sec); //等待()毫秒
system("cls"); //清屏
move();
}
input=getch(); //计算正确数量
for(j=1;j<=18;j++)
{
for(i=1;i<=8;i++)
{
if(a[i][j]==input||a[i][j]+32==input)
{
right+=1;
a[i][j]=' ';
}
}
}
}
}