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

  • 概念与技巧:
    • 异步事件驱动编程
    • curses库:目标和使用
    • 警告和间隔计时器
    • 可靠的信号处理
    • 可重入代码、临界区
    • 异步输入
  • 相关的系统调用
    • alarm、setitimer、getitimer
    • kill、pause
    • sigaction、sigprocmask
    • fcntl、aio_read
  • 视频游戏与操作系统

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

    • 游戏需求

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

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

    • 如何构写视频游戏:
    1. 空间:在屏幕特定位置画影像,程序如何控制显示?
    2. 时间:影像以一个特定的时间改变位置,程序如何获知时间,并且在特定的时间安排事件发生
    3. 中断:程序在屏幕上平滑移动物体,用户可在任意时刻产生输入
    4. 同时做几件事情:游戏必须保持物体的移动同时还要响应中断
    • 操作系统面临类似的问题:
    1. 内核将程序载入内存空间并维护每个程序在内存中所处的位置
    2. 在内核的调度下,程序以时间片的间隔方式运行
    3. 内核也在特定的时刻运行特定的内部事务
    4. 内核必须在很短的时间内响应用户和外设在任何时刻的输入
    • 屏幕管理、时间、信号、共享资源

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

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

  • 单人弹球游戏
    • curses库:展示curses程序的基本逻辑

      Opensuse中不自带curses.h,可以安装ncurses-devel,不过好像安装之后,头文件内附带的函数也没有定义,可惜没时间折腾,那就不编游戏了吧,后面有空再说。

 

posted on 2016-03-23 13:12  H.D  阅读(422)  评论(0编辑  收藏  举报

导航