尴尬日常

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

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

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

// game001.c
#include <termios.h>
#include <unistd.h>
/***
* 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;
        }
    }

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值