尴尬日常

尴尬日常

      • 2020年6月15日 物联网实训中

2020年6月15日 物联网实训中

哇哈,实训的第一天,按照惯例又是非常水的一天(老师又从C语言入门开始了),然鹅,这又是翻车的一天。

刚开始get了两个小知识
extern关键字和枚举实现bool类型

// game001.c
#include 
#include 
/***
* Linux 无回显和缓存输入
***/
char mygetch()
{
    struct termios oldt, newt;
    char ch;
    tcgetattr( STDIN_FILENO, &oldt );
    newt = oldt;
    newt.c_lflag &= ~( ICANON | ECHO );
    tcsetattr( STDIN_FILENO, TCSANOW, &newt );
    ch = getchar();
    tcsetattr( STDIN_FILENO, TCSANOW, &oldt );
    return ch;
}

//game003.c
extern char mygetch();
typedef enum{false,true} bool;

通过extern关键字可以使用其他.c文件中的变量和函数(函数加不加一样,据说全局函数自带extern声明),听说在编译大型程序的时候能比直接引用头文件要快一些。

枚举类型可以在c中加入bool类型,对于习惯c++的人来说还是不错的选择,也有利于后期修改。
无回显和缓存输入是这次实训比较有价值的一个收获(好长时间没写黑窗口程序了)。

老师的作业也挺简单,判断空格继续,esc退出,其他键不响应,于是乎……我很快就写完了,然后截了个大大的图第一个交上去,老师回了个666,然后我竟然还又发给了好几个同学,然后竟然没人说出错了……

bool restart(void)
{
    while(1)
    {
        if(27 == mygetch())      //esc
        {
            return false;
        }
        if(32 == mygetch()) //空格
        {
            return true;
        }
    }
}

while(1)
    {
        do_game();
        if(!restart())
        {
            break;
        }
    }

哎,晚上看到这个代码真是想撤回,以后绝对要仔细再仔细。

你可能感兴趣的:(尴尬日常)