Linux Curses编程实现贪吃蛇
2015-10-06 19:21
387 查看
curses库 简单而言,提供UNIX中多种终端 操作光标和显示字符 的接口。我们常见的vi就是使用curses实现的。现在一般都用ncurses库。
Linux下curses函数库 Linux curses库使用 这两篇文章很详细地介绍了curses,在此就不详细介绍了。
1.ubuntu安装curses函数库
$sudo apt-get install ncurses-dev
用curses库,编译程序:
$gcc program.c -o program -lcurses
2.工作原理
curses工作在屏幕,窗口和子窗口之上。屏幕是设备全部可用显示面积(对终端是该窗口内所有可用字符位置),窗口与具体例程有关。如基本的stdscr窗口等。
curses使用两个数据结构映射终端屏幕,stdscr和curscr。stdscr是“标准屏幕”(逻辑屏幕),在curses函数库产生输出时就刷新,是默认输出窗口(用户不会看到该内容)。curscr是“当前屏幕”(物理屏幕),在调用refresh函数是,函数库会将curscr刷新为stdscr的样子。
3.常用函数
View Code
编译:
cc tanchishe.c init_tcs.c -lcurses
运行:
由于curses是面向终端的接口(虚拟终端也包含在内),与图形库无关,所以程序在远程ssh工具上也可以完美运行,就像vim一样。
可以考虑继续添加的特性:多人游戏 路障 吃字母 网络化 存档文件 用户记录 暂停(ctrl+z)
Linux下curses函数库 Linux curses库使用 这两篇文章很详细地介绍了curses,在此就不详细介绍了。
1.ubuntu安装curses函数库
$sudo apt-get install ncurses-dev
用curses库,编译程序:
$gcc program.c -o program -lcurses
2.工作原理
curses工作在屏幕,窗口和子窗口之上。屏幕是设备全部可用显示面积(对终端是该窗口内所有可用字符位置),窗口与具体例程有关。如基本的stdscr窗口等。
curses使用两个数据结构映射终端屏幕,stdscr和curscr。stdscr是“标准屏幕”(逻辑屏幕),在curses函数库产生输出时就刷新,是默认输出窗口(用户不会看到该内容)。curscr是“当前屏幕”(物理屏幕),在调用refresh函数是,函数库会将curscr刷新为stdscr的样子。
3.常用函数
#ifndef TANCHISHE_H #define TANCHISHE_H #include <stdio.h> #include <curses.h> #include <time.h> #include <sys/time.h> //timeval #include <unistd.h> //usleep #include <sys/select.h> #include <signal.h> #include <stdlib.h> #include <string.h> //memset #include <setjmp.h> #define LSBLANK L" " #define BLANK " " #define INIT_NODE_SIZE 5 #define SNAKE_MAX_SIZE 8192 #define LEFT_WALL 1 #define RIGHT_WALL (COLS-2) #define TOP_WALL 0 #define BUTT_WALL (LINES-1) #define NOB L"#"// #define LSFOOD L"O" #define NODE "#"//instead of L"#" #define FOOD "O" #define MAX_LEVEL 100 #define SUB_TIME_EACH_LEVEL 6 #define TIMES_TO_UPGRADE_EACH_LEVEL 6 #define _KEY_UP 'w' #define _KEY_DOWN 's' #define _KEY_LEFT 'a' #define _KEY_RIGHT 'd' #define AGAIN_KEY 'A' #define QUIT_KEY 'Q' struct post{ int row; int col; }; struct snake_s{ int node_num; struct post head; struct post* snake_body; }; //for all extern struct snake_s snake_s1; extern int row; extern int col; //extern struct timeval delay; extern int real_g_forward; extern int g_key_forward; extern int food_row; extern int food_col ; extern int eat_num; extern int score ; extern int ticker ;//ms extern int last_s_node; extern int first_s_node; extern int max_score;//do not init in retry! extern int level; extern int delay_sub_each_level[MAX_LEVEL]; extern int times_to_upgrade_each_level[MAX_LEVEL]; //extern int ticker_for_col; //extern int ticker_for_row; int set_ticker(int n_msecs); void init_tcs(void); #endif
View Code
编译:
cc tanchishe.c init_tcs.c -lcurses
运行:
由于curses是面向终端的接口(虚拟终端也包含在内),与图形库无关,所以程序在远程ssh工具上也可以完美运行,就像vim一样。
可以考虑继续添加的特性:多人游戏 路障 吃字母 网络化 存档文件 用户记录 暂停(ctrl+z)
相关文章推荐
- 用U盘装Windows+linux双系统
- [每天学一点Linux系列]Linux基本概念
- [每天学一点Linux系列]Linux常用的命令
- CentOS 6 RPM安裝python 2.7
- linux中telnet工具的介绍和使用
- Centos6.4 x86_64下MySQL Proxy0.8.5安装测试实现读写分离
- linux c学习笔记----消息队列(ftok,msgget,msgsnd,msgrcv,msgctl)
- 第三周Linux编程实例练习
- Python实现Linux环境下的ls命令
- Linux内核模块指南(第九章===>第十章完)。。。翻译完。。。
- 解决虚拟机克隆CentOS系统后eth0消失,显示eth1的问题
- 【Linux 移植 】——5、移植 u-boot-2012.04.01 之 支持Nor Flash
- centos 6.5 nagios监控安装篇
- Linux块设备驱动之NAND FLASH
- Centos使用yum安装mysql
- linux下的rsync的使用
- linux解压war包的命令
- Linux块设备驱动之内存模拟块设备
- Linux command 汇总(未完待续)
- Linux makefile 教程 非常详细,且易懂