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

来源:互联网 发布:sql回滚语句 编辑:程序博客网 时间:2024/04/28 03:28
  • 概念与技巧:
    • 异步事件驱动编程
    • 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,不过好像安装之后,头文件内附带的函数也没有定义,可惜没时间折腾,那就不编游戏了吧,后面有空再说。

     

    0 0
    原创粉丝点击