linux下zebra之vtysh命令行编程入门,linux下用编写纯命令行贪吃蛇

在linux下用curses库编写贪吃蛇,黑白界面显示

这个程序的起因是因为我俱乐部的安小弟要编一个命令行下面的贪吃蛇,那时候他们正好在学c语言。我就是顺带着说了一下c语言可以编ui,但是会很蛋 疼。我当时也就那么一说,没想到还真有小弟去尝试。他遇到一个问题就是getch会阻塞的问题。我知道这肯定对于一个刚接触c语言的人来说是一个很大的难 点,于是就教他怎么做……

1-285-png_6_0_0_135_225_594_320_893.25_1263.375-528-0-1268-528.jpg

开发环境为linux+gcc+netbeans

本来我喜欢gvim但是实在不会调试c语言。于是转战netbeans,能很方便地调试,就是爽。 首先要说一下思路。就是多线程,一个线程负责逻辑和画图,一个线程监听按键。看一下线程创建的代码。为什么这里要用多线程呢?因为我要监听一个按键 的时间,在c里面,最方便的就是getch方法了,但是这个函数会进行io的阻塞,知道按下了一个键,在这之前这个线程会被阻塞住,蛇也就不会移动了。所 以需要开两个线程,一个线程是专门画图的,每隔多长的时间刷一下,另外一个线程是专门负责监听键盘事件的,就算会阻塞也只是影响到的本线程,画图线程不会 被阻塞。并且两个线程是通过一个全部的变量input来进行通信的,这个input存储的是按键的键值ascii。

这里我要提到一个初中的时候文曲星下的编程,原来我在用gvbasic的时候,如果要实现又是一边画图又是一边监听键盘事件的话,就会用到一个 peek函数,貌似文曲星里还有一个poke函数不知道用来干嘛的。这个peek函数会接受一个数字,比如说是peek(100),100就表示一个特定 的调用例程。比如这里的100就是检测键盘的缓冲区有没有按下一个键并且键值是多少,这个是不会阻塞的。虽然这个peek调用看上比较丑陋,但是却可以实 现单线程监听按键不阻塞的功能。

言归正传,还是考虑在linux下怎么用c编程吧!

首先看一下如果创建一个额外的线程,也就是监听键盘事件的线程。

void * waitForKey(void *para) {

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值