您的位置:首页 > 运维架构 > Linux

Understanding Unix/Linux Programming-事件驱动编程:编写一个视频游戏

2016-08-26 18:13 357 查看
概念与技巧:

异步事件驱动编程

curses库:目标和使用

警告和间隔计时器

可靠的信号处理

可重入代码、临界区

异步输入

相关的系统调用

alarm、setitimer、getitimer

kill、pause

sigaction、sigprocmask

fcntl、aio_read

视频游戏与操作系统

    通过这个例子呢,作者希望我们了解更多的Unix系统服务,一些基本的原则,和操作系统的设计技术

游戏需求

      考虑两人参与的星际旅行视频游戏,车给你需创立行星、流星、飞船和其他物体的影像,并使他们移动。每个物体有自己的移动速度、方向、动力和其他一些属性。物体之间相互作用,可能碰撞。

      游戏需要同时响应用户输入。玩家通过按键、鼠标、轨迹球在任何时刻生成输入。程序在很短时间内作出响应。这些输入事件可以改变物体的属性。通过按下按钮,用户可以增加速度或者减小质量。飞船的变化会影响它与其他物体的作用方式。

如何构写视频游戏:

空间:在屏幕特定位置画影像,程序如何控制显示?

时间:影像以一个特定的时间改变位置,程序如何获知时间,并且在特定的时间安排事件发生

中断:程序在屏幕上平滑移动物体,用户可在任意时刻产生输入

同时做几件事情:游戏必须保持物体的移动同时还要响应中断

操作系统面临类似的问题:

内核将程序载入内存空间并维护每个程序在内存中所处的位置

在内核的调度下,程序以时间片的间隔方式运行

内核也在特定的时刻运行特定的内部事务

内核必须在很短的时间内响应用户和外设在任何时刻的输入

屏幕管理、时间、信号、共享资源

      为了学习这4个基本主题,我们将编写一个字符终端动画游戏!

      为什么是字符终端动画游戏?因为专注于系统编程啊。

单人弹球游戏

curses库:展示curses程序的基本逻辑

      Opensuse中不自带curses.h,可以安装ncurses-devel,不过好像安装之后,头文件内附带的函数也没有定义,可惜没时间折腾,那就不编游戏了吧,后面有空再说。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐