IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> Linux环境下,基于Ncurse图形库贪吃蛇小游戏(上) -> 正文阅读

[游戏开发]Linux环境下,基于Ncurse图形库贪吃蛇小游戏(上)

Linux环境下基于Ncurse图形库的贪吃蛇小游戏

这个小游戏的意义?

这个小游戏对C语言基础、数据结构链表基础、C变量、流程控制、函数、指针、结构体等有一个很好的知识汇总学习。也是对Linux基础操作的一个简单学习。
linux环境下代码如何编写,如何编译,如何运行,如何简单的创建程序和文件夹。有利于后续的Linux系统编程的学习

这个小游戏是对C语言基础和Linux系统编程的学习起到一个承上启下的作用。

为什么要基于Ncurse图形库?
因为Ncurses有可以快速获取键盘的输入,用于控制蛇身的移动,按键响应快速。


Ncurses的使用方法:
#include <curses.h>     //头文件


        initscr();        //ncurse界面初始化
        printw("Hello  Ncurses\n");       //ncurse下的printf
        getch();          //等待用户输入,如果没有这句话,程序就退出,看不到运行结果
        endwin();       //程序退出,调用函数来恢复Shell终端的显示
        move();		  //改变光标的位置
        refresh();     	//刷新

Ncurses对键盘上下左右的获取

#include <curses.h>
int main()
{
        int key;
        initscr();
        keypad(stdscr,1);

        while(1){
                key = getch();
                switch(key){
                        case KEY_DOWN:
                                printw("DOWN\n");
                                break;
                        case KEY_UP:
                                printw("UP\n");
                                break;
                        case KEY_LEFT:
                                printw("LEFT\n");
                                break;
                        case KEY_RIGHT:
                                printw("RIGHT\n");
                                break;
        }
        }
        endwin();
        return 0;
}

curse界面的运行结果
快速捕获键盘上下左右键。
在这里插入图片描述


贪吃蛇的制作

1.地图规划

设置一个20x20的地图
地图上下边界用 –
地图左右边界用 |


地图代码:
#include <curses.h>

void initNcurse()
{

        initscr();
        keypad(stdscr,1);
}
void gamePic()
{
        int hang;
        int lie;
        for(hang=0;hang<20;hang++){
                if(hang == 0){
                for(lie=0;lie<20;lie++){
                        printw("--");
                        }
                printw("\n");
        }
                if(hang>=0 && hang<=19){
                        for(lie=0;lie<=20;lie++){
                        if(lie == 0 || lie == 20){
                                printw("|");
                        }else{
                                printw("  ");
                        }

                }
                }printw("\n");

                if(hang == 19){
                        for(lie=0;lie<20;lie++){
                                printw("--");
                        }
                        printw("\n");
                        printw("by Chengzi!");
                }
        }
}
int main()
{
        initNcurse();
        gamePic();
        getch();
        endwin();
        return 0;
}



地图效果图:

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-07-17 12:15:58  更:2021-07-17 12:16:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 13:42:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码