/************************************
终端控制和键盘输入部分
************************************/
#ifndef __KEYBOARD_H_
#define __KEYBOARD_H_
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <termios.h>
#include <unistd.h>
//非阻塞无回显输入
int readch(void);
//光标移动至指定位置
void gotoxy(int x,int y);
//移动至指定位置并输出字符
void gotoxy_putc(int x,int y,char c);
//移动至指定位置并输出字符串
void gotoxy_puts(int x,int y,char* c);
//初始化键盘输入和终端
void initkey();
//恢复键盘输入和终端属性
void relaykey();
//清屏
void clrter();
void clrter()
{
system("clear");
}
int readch(void)
{
struct termios tm, tm_old;
int fd = STDIN_FILENO, c=0;
fd_set rfds;
struct timeval tv;
int retval;
if(tcgetattr(fd, &tm) < 0)
return -1;
tm_old = tm;
cfmakeraw(&tm);
FD_ZERO(&rfds);
FD_SET(0, &rfds);
tv.tv_sec = 0;
tv.tv_usec = 10;
if(tcsetattr(fd, TCSANOW, &tm) < 0)
c = 0;
retval = select(1, &rfds, NULL, NULL, &tv);
if (retval == -1) {
c = 0;
} else if (retval)