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,不过好像安装之后,头文件内附带的函数也没有定义,可惜没时间折腾,那就不编游戏了吧,后面有空再说。
异步事件驱动编程
curses库:目标和使用
警告和间隔计时器
可靠的信号处理
可重入代码、临界区
异步输入
相关的系统调用
alarm、setitimer、getitimer
kill、pause
sigaction、sigprocmask
fcntl、aio_read
视频游戏与操作系统
通过这个例子呢,作者希望我们了解更多的Unix系统服务,一些基本的原则,和操作系统的设计技术
游戏需求
考虑两人参与的星际旅行视频游戏,车给你需创立行星、流星、飞船和其他物体的影像,并使他们移动。每个物体有自己的移动速度、方向、动力和其他一些属性。物体之间相互作用,可能碰撞。
游戏需要同时响应用户输入。玩家通过按键、鼠标、轨迹球在任何时刻生成输入。程序在很短时间内作出响应。这些输入事件可以改变物体的属性。通过按下按钮,用户可以增加速度或者减小质量。飞船的变化会影响它与其他物体的作用方式。
如何构写视频游戏:
空间:在屏幕特定位置画影像,程序如何控制显示?
时间:影像以一个特定的时间改变位置,程序如何获知时间,并且在特定的时间安排事件发生
中断:程序在屏幕上平滑移动物体,用户可在任意时刻产生输入
同时做几件事情:游戏必须保持物体的移动同时还要响应中断
操作系统面临类似的问题:
内核将程序载入内存空间并维护每个程序在内存中所处的位置
在内核的调度下,程序以时间片的间隔方式运行
内核也在特定的时刻运行特定的内部事务
内核必须在很短的时间内响应用户和外设在任何时刻的输入
屏幕管理、时间、信号、共享资源
为了学习这4个基本主题,我们将编写一个字符终端动画游戏!
为什么是字符终端动画游戏?因为专注于系统编程啊。
单人弹球游戏
curses库:展示curses程序的基本逻辑
Opensuse中不自带curses.h,可以安装ncurses-devel,不过好像安装之后,头文件内附带的函数也没有定义,可惜没时间折腾,那就不编游戏了吧,后面有空再说。
相关文章推荐
- Understanding Unix/Linux Programming 笔记:chapter 7:事件驱动编程:编写一个视频游戏
- 三. 学习Unix/Linux编程之事件驱动编程:编写一个视频游戏
- 《unix/linux编程实践教程》学习笔记:第七章 事件驱动编程:编写一个视频游戏
- 第7章 事件驱动编程:编写一个视频游戏
- Understanding Unix/Linux Programming 笔记:chapter 13:基于数据报(Datagram)的编程:编写许可证服务器
- Understanding Unix/Linux Programming 笔记:chapter 12:连接和协议:编写Web服务器
- Understanding Unix/Linux Programming note:chapter 6:为用户编程:终端控制和信号
- Understanding Unix/Linux Programming 笔记:chapter 8:进程和程序:编写命令解释器sh
- Understanding Unix/Linux Programming-时钟编程:Alarms
- Understanding Unix/Linux Programming 笔记:chapter 9:可编程的shell、shell变量和环境; chapter 10:I/O重定向和管道
- 基于Linux的v4l2视频架构驱动编写
- 基于Linux视频驱动接口V4L2视频采集编程
- Understanding Unix/Linux Programming note:chapter 1:执行可执行文件时的参数传递
- 基于Linux的v4l2视频架构驱动编写
- 基于Linux的v4l2视频架构驱动编写
- 基于Linux的v4l2视频架构驱动编写(一)
- UNIX-LINUX编程实践教程->第八章->实例代码注解->写一个简单的shell->在shell中启动另一个程序
- Understanding Unix/Linux Programming note:chapter 1:more函数的流程图
- 基于Linux的v4l2视频架构驱动编写
- 基于Linux视频驱动接口V4L2视频采集编程