第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

【九月打卡】第3天 物聯(lián)網(wǎng)/嵌入式工程師 第四周

標(biāo)簽:
C

课程名称: 物联网/嵌入式工程师

课程章节: 第四周 C语言项目实战与阶段笔试

主讲老师: 大白老师

课程内容:

今天主要学习了俄罗斯方块按键的获取。

课程收获:

首先我们要实现通过上下左右来控制俄罗斯方块的变化的话,需要关闭回显。
回显的关闭在这个项目中比较重要。
我们需要学习关于终端的函数。
我们要关闭回显,首先需要引入相关头文件

#include<termios.h>
#include <unistd.h>

然后定义termios结构体
struct terimios tm,tm_old;
首先需要用到tm结构体保存当前用户输入的终端属性。
用tcgetattr()来实现;
以下是需要用到的函数

tcgetattr(0,&tm_old);
        //获取原始输入属性
        cfmakeraw(&tm);
        //设置原始输入属性
        tcsetattr(0,0,&tm);
        //不回显的获取一个字符
        int ch = getchar();
        //恢复正常输入属性
        tcsetattr(0,0,&tm_old);

这里是根据用户输入的上下左右判断

#include <stdio.h>
#include <sys/time.h>
#include <stdlib.h>
#include <signal.h>
#include <termios.h>

//获取一个字符,不回显
int getch()
{
        struct termios tm,tm_old;
        //保存正常  输入属性 到 tm_old
        tcgetattr(0,&tm_old);
        //获取原始输入属性
        cfmakeraw(&tm);
        //设置原始输入属性
        tcsetattr(0,0,&tm);
        //不回显的获取一个字符
        int ch = getchar();
        //恢复正常输入属性
        tcsetattr(0,0,&tm_old);

        return ch;
}

void key_control()
{
    int ch;
    while(1){
            ch = getch();  //^[
            if(ch == 'q' || ch == 'Q'){
                    break;
            }else if(ch == '\r'){//回车键
                    printf("down\n");
            }else if(ch == '\33'){// ^[[A  ^[[B ^[[C ^[[D
                    ch = getch();   //[
                    if(ch == '['){
                        ch = getch();  //A,B,C,D
                        switch(ch){
                        case 'A':  //上
                                printf("up\n");
                                break;
                        case 'B':  //下
                                printf("down\n");
                                break;
                        case 'C':  //右
                                printf("right\n");
                                break;
                        case 'D':  //左
                                printf("left\n");
                                break;
                        default:
                                break;
                        }
                    }
            }
    }
}

int main()
{
        key_control();
        return 0;
}

尤其注意的是,我们输入一个字符串时,getchar重复调用会接着上次调用结束的位置进行读取
设置终端参数的话

#include <termios.h>
#include <unistd.h>
 
int tcsetattr(int fd, int optional_actions,const struct termios *termios_p);
功能:将配置参数写到终端中。
参数:
@fd  终端的文件描述符,0 表示获取输入的信息。
@optional_actions     TCSANOW     配置立即生效
                      TCSADRAIN   配置在所有写入 fd 的输出都传输完毕之后生效
                      TCSAFLUSH   所有已接收但未读取的输入都将在配置生效之前被丢弃
@termios_p  配置参数
返回值:
调用成功时返回 0;失败将返回-1

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
學(xué)生
手記
粉絲
8
獲贊與收藏
12

關(guān)注作者,訂閱最新文章

閱讀免費(fèi)教程

  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消