打字通

C | 2018-02-09 15:54:40 | 227次阅读 | 0评

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include <windows.h>
//定义宏 宏名 宏值
#define WIDTH 30 //宽度
#define HEIGHT 15 //高度
int arr[HEIGHT][WIDTH]; //15行30列的二维数组
//显示字符函数
void ShowChar()
{
int i, j;
system("cls"); //清空屏幕
printf("----------------打字通---------------\n");
for(i = 0; i < HEIGHT; ++i)//++i比i++效率高一点
{
for(j = 0; j < WIDTH; ++j)
{
//表达式1 ? 表达式2 :表达式3;
printf("%c", (arr[i][j] ? arr[i][j] : ' '));
}
printf("\n"); //换行
}
printf("--------------------------------------\n");
}
int main()
{
int row, col;
int ctl = 1;
char ch;
srand(time(0)); //初始化随机种子
while(ctl)
{
//产生字符
row = 0; //第一行
col = rand() % WIDTH; //随机列
arr[row][col] = rand() % 26 + 'a'; //随机字符
while(1)
{
ShowChar();
if(kbhit()) //如果按下了键盘上的某键
{
if((ch = getch()) == 27) //按下了ESC键
{
ctl = 0;
break; //退出当前while循环
}
else if(ch == arr[row][col]);
arr[row][col] = 0; //让字符消失
break; //退出内层 while循环,重新产生一个新字符
}
else
{
if(row >= HEIGHT - 1)//字符掉到了最下面
{
arr[row][col] = 0;
break;
}
arr[row + 1][col] = arr[row][col];
arr[row][col] = 0;
++row;
}
Sleep(80); //睡眠500毫秒
}
}
return 0;
}

博友评论,共0条
最新评论
  • 詹小不点:佩服
  • 陈同志:厉害