65.9K
CodeProject 正在变化。 阅读更多。
Home

DirectX 教程第二部分:在弹球游戏中使用的 CDirectXDialog 类

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.37/5 (7投票s)

2006年5月19日

3分钟阅读

viewsIcon

48714

downloadIcon

1906

CDirectXDialog 是一个用于对话框类的基类,您可以在其中使用 DirectX。此示例深入描述了该类的特性。

引言

本教程的第二部分是使用 CDirectXDialog 引入的特性的一个工作示例。 1999 年,我参加了波鸿鲁尔大学软件工程系举办的年度编程竞赛。我和我的一个同事一起设计了这个游戏,并实现了编辑碰撞地图和游戏本身所需的所有工具。原始版本完全使用 Java 和 AWT 框架实现。 这是一个巨大的惊喜,当这个游戏在比赛结束时获得第一名时,我们非常高兴。 我决定使用我的 CDirectXDialog 类用 C++ 重写这个游戏,以便为其他您可以使用此类的项目提供一个良好的起点。 当我有更多空闲时间时,我希望发布用于设计其他弹球关卡的编辑器。

  • DirectX 教程第一部分:DirectX 对话框模板
  • DirectX 教程第二部分:在弹球游戏中,使用 CDirectXDialog
  • DirectX 教程第三部分:基本 3D 数学
  • DirectX 教程第四部分:在 Vectorballs 滚屏中使用 Vector
  • DirectX 教程第五部分:从头开始实现 Lambert 和 Gouraud 多边形填充
  • DirectX 教程第六部分:用 Direct3D 的方式...

弹球关卡结构

由于其起源,此游戏的架构和设计旨在减少关卡数据中的冗余。 例如,关卡图形数据文件仅包含可以从中构建整个关卡的那些基本元素。 对于此创建过程,我们构建了自己的关卡编辑器。 为关卡创建的数据结构可以与一个数据立方体进行比较,其中前维度对应于关卡的宽度和高度,由此,实际的关卡由 8x8 像素的方框栅格化。 对于前维度(x 轴和 y 轴)中的每个方框,关卡编辑器在数据立方体的 z 轴中存储无限量的附加信息。 例如,前两个重要的信息是关卡图形数据文件中图形元素的 x 和 y 偏移量,可以在上图中找到。

不幸的是,关卡编辑器的 GUI 标签完全是德语。 但是,如果您查看名为 "Kästcheninformationen" 的对话框,可以在以下截图找到,您会注意到计算碰撞和调用相应方法所需的所有信息,当球击中关卡中的某些元素时。 属性 "KAttribut", "OrtsVX" 和 "OrtsVY" 用于定义可以定义元素边界的基于矢量的线条或圆形。 最后,为了优化碰撞检测代码,我们只查看与球的当前位置最近的那些方框。 其余计算可以总结为动量守恒和能量定理的应用。

结论

如果您想开始一个新游戏,请按鼠标右键并单击“新游戏”。 然后,您必须按住向下光标键来压缩弹簧。 松开它时,球被推入游戏中。

在此示例中,我只是想解释一下,CDirectXDialog 类不仅可以用于访问 DirectX 表面内存,还可以作为其他基于 DirectX 的开发的良好起点。 如果您对原始的 Java 版本感兴趣,请与我联系。 您可以在此 页面上找到 Java Applet。

© . All rights reserved.