我有一门关于低级编程的课程,需要期末专题(教学大纲在最后)。它基本上是一个软件,把你学到的东西都用上了。
我有一些想法,比如设计我自己的Roguelike(应该有点像NetHack,只是单人游戏),但是我想听听其他的建议。它可以是任何东西。时间框架是一个半月,我有其他项目,等等,所以它不应该是 * 太 * 耗时实施。
要求:
- 至少使用四个I/O设备,其中一个应为鼠标或串行端口
- 其中一些设备应使用中断,其他设备应使用轮询
- 语言:C和汇编(强制性,否则会受到处罚)
- 实施状态机
我们被讲授的外围设备包括:
- 图形卡-图形模式
- 图形卡-文字模式
- 鼠标
- 键盘
- 真实的计数器
- 板载扬声器(通过定时器0和2)
- 串行端口
这是教学大纲的节略:
输入/输出外设及其操作在进程地址空间中的直接Map以轮询方式和通过中断访问外设IA-32体系结构中的处理器中断和中断控制器用汇编语言和C语言编写中断服务例程学习一些典型的个人计算机外设,如键盘、鼠标、图形卡、真实的时钟、定时器、扬声器和串行口。
C编程语言中的编程:与C++语言的主要区别; C语言的结构化编程。2进程的内存布局。3函数调用:机制、参数传递、局部变量和返回值的存储。2用C语言和IA-32处理器系列汇编语言组合编程。3库的创建和使用。4目标代码的静态链接。
软件开发工具的使用:gcc、make、gdb、ar、配置文件、diff、修补程序和SVN
5条答案
按热度按时间wfsdck301#
一个简单的选择是去玩游戏。他们总是可以使用几种设备,如鼠标,键盘,计时器,显卡和(取决于你做什么)RTC。
另一个选择是使用“音乐 composer ”应用程序。例如,你可以(使用键盘和鼠标)写一首歌(音符频率、持续时间),然后让电脑扬声器播放它。
你也可以使用“时钟/日历应用程序”。它可以在屏幕上画一个时钟(这可能比你在屏幕上画一个模拟时钟看起来要难),然后让用户调整一天中的时间(将更改保存在RTC中)。时钟还可以包括闹钟和一些滴答声。
至于日历,你也可以允许用户在日历中创建“事件”,这“可能"有点像闹钟。
您也可以尝试编写自己的类似“记事本”的应用程序。(书写区、菜单等)。这可以是文本模式或图形模式。您可以检测到键盘被按下以添加字符,手柄盖锁定(给你机会搞乱键盘LED)。你可以使用鼠标位置/点击来改变文本编辑器或触发菜单中的位置。然后在文本编辑器中设置闪烁的插入符号。单击禁用的菜单选项可能会使扬声器发出短促的声音,以指示无效操作。
我建议用C语言编写大部分代码,除了汇编语言中的一些小部分。ISRs是编写汇编代码的好机会。
关于状态机:
1.游戏可以有许多状态(“主菜单”、“玩游戏”、“暂停菜单”、“高分”),状态之间有很好定义的转换。
1.音乐 composer 也可以有一些状态(“停止”、“暂停”、“播放”)
1.时钟应用程序可以具有诸如“显示时钟”、“显示日历”、“报警消息框”、“事件消息框”、“具有未决报警的事件消息框”之类的状态。
1.记事本应用程序可以具有诸如“编辑文本”、“在菜单中”或“在消息框中”的状态)
你提到的大多数设备都可以用中断访问。不幸的是,我想不出轮询的好机会...
ercv8c1e2#
如果你可以通过串行端口连接两台计算机,并在每台计算机上实现相同的代码,那么理论上你可以在你自己和另一台计算机的所有者之间分配编码时间--从而最大限度地减少工作量!(也许可以最大限度地减少设计上的争论!)
我想到的一个项目是在两台计算机之间实现一个简单的点对点文本网络应用程序,您可以在屏幕缓冲区中键入文本,使用鼠标单击目标,这触发了经由串行端口向另一计算机发送消息,该另一计算机在其自己的屏幕上显示该消息,并且使扬声器发出嘟嘟声以告知已经接收到消息。此外,发送计算机可以用不同的音调哔哔声它的扬声器成功传输,传输错误或重试。这涵盖了所有的硬件,你已经介绍了。
为了获得额外的好处,可以将消息传送协议设计为容错或检测接收错误。
无论你做什么,听起来都是一个很棒的项目!但是要小心不要做得太过火。在你的需求中有足够的肉占用你所有的时间,而不需要设计整个游戏。使用吻的原则
shyt4zoc3#
音乐合成器/跟踪器之类的程序?使用键盘来“播放”它,保存/录制歌曲,处理音频和I/O部分。也许使用鼠标作为音调控制器,或者用串行端口连接两台计算机进行合作播放?
nbewdwxp4#
把它分成两个程序。
程序一是一个类似GUI的东西,它显示了一些可点击的图形,用于一组可以执行的测试。一旦点击,就会弹出某种文本框,您可以键入START来开始测试。该命令通过串行端口发送到正在运行程序二的远程计算机。程序2执行测试,并将某种状态返回给程序1。该状态显示为:并且可以点击另一个图形。
程序2侦听串行端口,并从程序1接收命令,执行该命令并发回状态。
当程序1点击退出图标时,它会告诉程序2也关闭。
根据需要添加铃铛和哨子。
6yt4nkrj5#
一款双人Pong游戏,由鼠标控制,通过串行端口进行游戏。