• C语言-贪吃蛇 1.输入控制ncurse


    一、为什么要用nurse

            C语言中的gets()、scanf()、getchar()等函数是在用户输入后需要按下Enter键才能执行代码,而贪吃蛇要求按下按键后立即对蛇的方向进行操作,所以根据贪吃蛇功能的需求引入ncurse,让用户输入后就能让蛇进行对应的行动。

    二、ncurse的使用

    查看ncurse宏定义:

    vi /usr/include/curses.h

     输入/KEY_UP查找上下左右键功能键的函数

     

     

    使用这些功能键时,必须要用keypad设置功能键 

    keypad(stdscr,1);    //stdscr表示从标准屏幕接收功能键,参数1代表是否接收“是”

    char为1个字节最多能表示128,而宏定义中表示功能键的数大于128,所以要用字节更大的int(4字节)

    1. #include
    2. int main(){
    3. int key;
    4. initscr();
    5. keypad(stdscr,1);
    6. while(1){
    7. key= getch();
    8. printw("you input:%c\n",c);
    9. }
    10. endwin();
    11. return 0;
    12. }

    光有这些代码,在输入↑ ↓ ← →这些按键时只会输出上面的数字(0402……),我们可以使用switch函数让其输出更具可读性的提示。

    1. #include
    2. int main(){
    3. int key;
    4. initscr();
    5. keypad(stdscr,1);
    6. while(1){
    7. key= getch();
    8. switch(key){
    9. case 0402:
    10. printw("DOWN");
    11. case 0403:
    12. printw("UP");
    13. case 0404:
    14. printw("LEFT");
    15. case 0405:
    16. printw("RIGHT");
    17. }
    18. }
    19. endwin();
    20. return 0;
    21. }

    也可以用ncurse中的宏定义:

     

    1. #include
    2. int main(){
    3. int key;
    4. initscr();
    5. keypad(stdscr,1);
    6. while(1){
    7. key= getch();
    8. switch(key){
    9. case KEY_DOWN:
    10. printw("DOWN");
    11. case KEY_UP:
    12. printw("UP");
    13. case KEY_LEFT:
    14. printw("LEFT");
    15. case KEY_RIGHT:
    16. printw("RIGHT");
    17. }
    18. }
    19. endwin();
    20. return 0;
    21. }

  • 相关阅读:
    香港服务器减少延迟的几种方法
    11-js事件基础
    LeetCode 每日一题——667. 优美的排列 II
    一维和二维差分
    8.cmake常用命令
    Matlab函数——mapminmax
    jsp汽车销售管理软件Myeclipse开发mysql数据库web结构java编程计算机网页项目
    CodeSys中编程实现串口通讯【基于树莓派4B】
    Eavesdropping(窃听机制)在机器学习中的用法
    Oracle 11G 支持自增主键方法
  • 原文地址:https://blog.csdn.net/m0_58832279/article/details/133774999