收藏 分享(赏)

二d赛车游戏的设计与实现毕业设计.doc

上传人:无敌 文档编号:691246 上传时间:2018-04-18 格式:DOC 页数:47 大小:627KB
下载 相关 举报
二d赛车游戏的设计与实现毕业设计.doc_第1页
第1页 / 共47页
二d赛车游戏的设计与实现毕业设计.doc_第2页
第2页 / 共47页
二d赛车游戏的设计与实现毕业设计.doc_第3页
第3页 / 共47页
二d赛车游戏的设计与实现毕业设计.doc_第4页
第4页 / 共47页
二d赛车游戏的设计与实现毕业设计.doc_第5页
第5页 / 共47页
点击查看更多>>
资源描述

1、2D 赛 车 游 戏 的 设 计 与 实 现摘 要随 着 电 脑 的 普 及 , 游 戏 已 成 为 大 多 数 年 青 人 的 主 要 休 闲 方 式 , 赛 车 价 格 比 较 昂 贵 ,而 赛 车 游 戏 则 可 以 让 那 些 想 玩 赛 车 却 没 法 玩 的 人 体 验 一 把 。 爱 好 赛 车 竞 速 游 戏 的 玩 家们 以 体 验 比 赛 中 的 刺 激 为 乐 趣 , 玩 家 唯 一 的 真 实 目 的 就 是 “最 快 ”。本 设 计 所 实 现 的 赛 车 游 戏 是 基 于 C 语 言 设 计 开 发 的 , 所 选 用 的 游 戏 引 擎 是 基 于Directx

2、8.0 编 写 的 。 能 进 行 赛 车 、 赛 道 以 及 各 种 图 片 的 绘 制 , 实 现 各 种 游 戏 音 效 , 获取 键 盘 输 入 , 单 人 游 戏 时 , 可 与 电 脑 控 制 的 赛 车 竞 速 , 多 人 游 戏 时 可 与 其 他 玩 家 或 电脑 AI 竞 速 。与 其 他 类 似 游 戏 相 比 , 本 设 计 所 采 用 的 碰 撞 检 测 算 法 , 像 边 界 矩 形 盒 算 法 和 颜 色 识别 算 法 , 不 仅 速 度 快 , 而 且 检 测 灵 敏 。 多 人 游 戏 的 实 现 是 靠 socket 网 络 编 程 与 多 线程 的 联 用

3、 , socket 提 供 C/S 模 式 下 数 据 的 可 靠 传 输 , 多 线 程 解 决 了 socket 等 待 问 题 ,两 者 结 合 使 得 在 局 域 网 内 的 多 人 游 戏 运 行 比 较 流 畅 。关 键 词 : 2D, DirectX, 赛 车 , 游 戏AbstractDesign and Implementation of 2D Racing GameAbstractWith the popularity of computer games has become a major leisure activity for most young people ,

4、cars are expensive , and racing games for those who want to play can play racing who had no opportunity to experience one. Hobby car racing game players to experience the game for fun stimulation , players only real purpose is the “ fastest .“This design is realized racing game based on the C langua

5、ge design and development , the choice of the game engine is based on Directx8.0 written . Capable of racing, track and draw various pictures , sound effects to achieve a variety of games to get keyboard input, single- player game, with computer-controlled car racing , multiplayer games with other p

6、layers or computer AI racing .Compared with other similar games , collision detection algorithms used in the design , like the bounding rectangle box algorithm and color recognition algorithm , not only fast, but also detection sensitivity . Multiplayer is achieved by the socket network programming

7、and multi-threaded MS , socket provides reliable data transmission under C / S mode , multi-threaded socket waiting to solve the problem , a combination that makes the LAN multiplayer games run more smooth.Keywords : 2D, DirectX, racing, game计 算 机 信 息 工 程 学 院 毕 业 设 计 说 明 书I目 录第 一 章 绪 论 .11.1 研 究 背 景

8、 及 意 义 .11.2 赛 车 游 戏 开 发 环 境 和 语 言 .11.3 赛 车 游 戏 的 主 要 功 能 .11.4 赛 车 游 戏 开 发 的 主 要 步 骤 .2第 二 章 DIRECTX、 游 戏 引 擎 和 游 戏 结 构 .32.1 DIRECTX 概 述 .32.2 游 戏 引 擎 .32.2.1 选 用 的 游 戏 引 擎 结 构 .42.3 游 戏 结 构 .52.4 本 章 小 结 .6第 三 章 游 戏 逻 辑 .83.1 游 戏 主 逻 辑 .83.2 单 人 游 戏 逻 辑 .93.3 多 人 游 戏 逻 辑 .133.3.1 多 人 游 戏 服 务 器 端

9、 逻 辑 .133.3.2 多 人 游 戏 客 户 端 逻 辑 .153.4 显 示 游 戏 胜 利 .153.5 本 章 小 结 .16第 四 章 赛 车 碰 撞 检 测 技 术 .174.1 边 界 矩 形 盒 方 法 .174.2 颜 色 识 别 算 法 .194.3 本 章 小 结 .24第 五 章 SOCKET 网 络 通 信 实 现 多 人 游 戏 .255.1 SOCKET 简 介 .255.1.1 什 么 是 Socket.25计 算 机 信 息 工 程 学 院 毕 业 设 计 说 明 书II5.1.2 Windows Socket 编 程 模 型 .255.1.3 游 戏 所

10、 使 用 的 Socket 模 型 .315.2 粘 包 问 题 .325.2.1 粘 包 出 现 的 原 因 .325.2.2 粘 包 问 题 解 决 办 法 .335.2.3 关 闭 优 化 算 法 .345.3 多 线 程 与 SOCKET 组 合 实 现 多 人 游 戏 .345.3.1 多 线 程 的 使 用 .345.3.2 多 线 程 与 socket 的 联 用 .365.4 本 章 小 结 .39第 六 章 游 戏 调 试 及 运 行 .406.1 游 戏 程 序 的 环 境 .406.2 游 戏 运 行 界 面 .40结 论 .42致 谢 .43参 考 文 献 .44计 算

11、 机 信 息 工 程 学 院 毕 业 设 计 说 明 书1第 一 章 绪 论1.1 研 究 背 景 及 意 义游 戏 可 以 锻 炼 我 们 的 大 脑 , 提 高 大 脑 思 维 的 敏 捷 性 和 灵 活 性 , 让 我 们 暂 时 抛 开 自己 的 烦 恼 , 缓 解 现 实 生 活 给 予 我 们 的 压 力 。 玩 游 戏 可 以 让 我 们 适 当 的 放 松 , 缓 解 精 神疲 劳 。中 国 的 游 戏 产 业 在 多 年 里 迅 猛 的 发 展 。 一 开 始 主 要 依 靠 国 外 代 理 , 而 现 在 自 主 研发 的 游 戏 已 经 占 了 大 部 分 的 市 场 份

12、 额 , 现 在 的 游 戏 产 业 , 在 中 国 的 经 济 发 展 中 发 挥 着不 可 替 代 的 作 用 。随 着 国 际 国 内 的 游 戏 产 业 的 发 展 , 三 维 游 戏 逐 渐 成 为 游 戏 市 场 中 的 主 要 形 式 , 但2D 游 戏 因 为 自 己 的 独 特 的 优 点 并 没 有 退 出 人 们 的 视 野 , 反 而 在 网 页 游 戏 、 娱 乐 休 闲 游戏 等 领 域 快 速 的 发 展 。 和 欧 美 、 日 韩 游 戏 产 业 发 展 比 较 成 熟 的 国 家 相 比 , 中 国 的 3D技 术 并 不 成 熟 , 很 多 游 戏 公 司

13、的 精 力 主 要 放 在 技 术 方 面 的 处 理 , 想 尽 量 模 仿 国 外 优 秀游 戏 的 处 理 技 术 , 而 且 3D 游 戏 的 投 资 比 较 大 , 只 有 一 小 部 分 大 型 公 司 有 实 力 进 行 开 发 。与 此 相 对 的 是 , 因 为 2D 游 戏 的 技 术 处 理 难 度 比 较 低 , 游 戏 公 司 不 仅 可 以 将 精 力 放 在 技术 处 理 方 面 , 还 可 以 多 花 些 精 力 在 游 戏 策 划 方 面 , 以 丰 富 游 戏 的 内 容 , 它 的 整 体 开 发周 期 短 , 投 入 的 资 金 少 得 多 , 这 些

14、优 点 使 得 2D 游 戏 非 常 适 合 在 中 国 发 展 。从 中 国 游 戏 玩 家 的 反 应 来 看 , 3D 游 戏 的 吸 引 力 比 2D 游 戏 强 的 多 , 玩 家 都 更 加 喜欢 画 面 质 量 优 秀 的 游 戏 。 大 多 数 2D 游 戏 通 常 比 较 轻 松 、 休 闲 、 操 作 难 度 低 , 并 且 对 硬件 和 系 统 没 什 么 要 求 , 非 常 适 合 那 些 喜 欢 休 闲 娱 乐 、 交 友 的 人 。 现 在 的 2D 游 戏 中 也利 用 不 少 的 3D 处 理 技 术 来 优 化 游 戏 画 面 , 如 粒 子 系 统 、 水

15、波 特 效 、 爆 炸 特 效 等 。 所 以 ,中 国 的 2D 游 戏 还 是 有 比 较 好 的 发 展 前 途 的 , 尤 其 是 在 手 机 游 戏 中 , 在 电 脑 游 戏 里 也 不会 被 取 代 , 因 此 , 2D 游 戏 的 开 发 是 我 们 值 得 关 注 和 研 究 的 问 题 。1.2 赛 车 游 戏 开 发 环 境 和 语 言本 设 计 所 用 的 语 言 是 C语 言 实 现 的 , 软 件 使 用 的 是 VC+6.0, 还 要 Directx8.0。DirectX是 微 软 公 司 开 发 的 基 于 Windows系 统 的 多 媒 体 编 程 接 口

16、, 编 写 的 语 言 是C+,并 且 遵 循 COM。 它 可 以 提 高 在 window平 台 运 行 的 游 戏 或 者 多 媒 体 程 序 的 运 行 速 度 ,有 很 强 的 3D图 像 处 理 能 力 , 并 且 支 持 2D 3D图 形 加 速 。 使 得 开 发 人 员 在 创 建 3D场 景 时不 需 要 考 虑 硬 件 的 类 型 , 只 需 要 通 过 Direct3D调 用 设 备 接 口 就 可 以 操 作 图 形 设 备 , 简化 了 游 戏 开 发 难 度 。1.3 赛 车 游 戏 的 主 要 功 能本 设 计 可 实 现 较 真 实 的 游 戏 音 效 、 键

17、 盘 接 口 、 局 域 网 内 通 信 等 功 能 。 所 设 计 的 游戏 可 以 进 行 两 种 类 型 的 游 戏 即 单 人 和 多 人 游 戏 , 游 戏 包 括 赛 车 创 建 、 赛 道 载 入 、 碰 撞检 测 、 控 制 在 跑 赛 车 、 赛 车 数 据 处 理 。 单 人 游 戏 中 有 电 脑 控 制 的 赛 车 可 以 与 玩 家 进 行计 算 机 信 息 工 程 学 院 毕 业 设 计 说 明 书2赛 车 , 多 人 游 戏 是 可 以 各 自 控 制 赛 车 , 在 不 同 的 赛 道 上 有 不 同 的 速 度 , 第 一 个 到 终 点胜 利 。 编 译 通

18、 过 或 找 出 查 出 的 问 题 , 进 行 最 终 调 试 , 完 成 游 戏 。1.4 赛 车 游 戏 开 发 的 主 要 步 骤本 游 戏 利 用 现 在 比 较 常 用 的 Visual C+ 6.0 工 具 , 基 于 DirectX 8.0, 用 C 语 言实 现 , 进 行 系 统 的 分 析 , 从 玩 家 的 角 度 去 思 考 , 怎 么 实 现 开 赛 车 时 的 快 感 与 激 情 。实 现 赛 车 的 控 制 、 赛 道 载 入 、 碰 撞 检 测 、 赛 车 数 据 处 理 和 多 人 游 戏 等 。 主 要 步 骤为 :( 1) 设 计 并 画 游 戏 的 场

19、 景 ;( 2) 设 计 界 面 ;( 3) 游 戏 逻 辑 的 设 计 与 实 现 ;( 4) 游 戏 功 能 模 块 设 计 与 实 现 ;( 5) 游 戏 测 试 ;计 算 机 信 息 工 程 学 院 毕 业 设 计 说 明 书3第 二 章 DirectX、 游 戏 引 擎 和 游 戏 结 构DirectX 是 PC 平 台 上 开 发 游 戏 的 事 实 上 的 标 准 , 而 游 戏 引 擎 能 使 开 发 游 戏 的 工 作量 大 大 的 减 少 , 本 毕 业 设 计 所 使 用 的 游 戏 引 擎 是 在 Directx8.0 上 编 写 的 。 下 面 是Directx8.0

20、、 游 戏 引 擎 的 一 些 介 绍 。2.1 DirectX 概 述Microsoft 公 司 的 DirectX 是 一 个 多 媒 体 应 用 编 程 接 口 , 它 实 际 上 是 一 种 软 件 系统 , 抽 象 出 音 频 、 输 入 、 视 频 、 网 络 以 及 安 装 等 内 容 , 由 C+语 言 实 现 , 遵 循COM( 组 件 对 象 模 型 ) 。 你 可 以 使 用 相 同 的 代 码 , 而 不 管 计 算 机 的 具 体 硬 件 配 置 怎 么 样 。另 外 , DirectX 比 Windows 系 统 自 带 的 GDI 要 快 很 多 , 而 且 系

21、统 更 稳 定 。DirectX 的 主 要 组 件 有DirectDraw、 DirectGraphic、 DirectInput、 DirectPlay、 DirectMusic 和DirectSound。 不 同 的 API 负 责 完 成 DirectX 内 核 中 不 同 的 功 能 。 DirectX 中 的 每 个API 都 可 以 通 过 硬 件 加 速 。 这 意 味 着 只 要 是 DirectX 支 持 的 硬 件 , 都 可 以 用 程 序 访 问到 , 而 不 用 关 心 它 的 具 体 实 现 。 下 面 是 它 的 主 要 组 件 和 功 能 :DirectDra

22、w: 主 要 负 责 2D 图 像 加 速 , 所 有 图 像 的 绘 制 都 要 用 到 它 , 因 此 它 是 十 分重 要 的 。 在 8.0 之 后 的 版 本 已 没 有 了 。DirectGraphic: 主 要 负 责 向 屏 幕 上 渲 染 二 维 图 形 和 三 维 图 形 。 它 实 际 是DirectDraw 和 Direct3D 合 并 起 来 的 。DirectInput: 它 可 以 直 接 使 用 所 有 与 计 算 机 关 联 的 输 入 设 备 。 这 些 设 备 包 括 键 盘 、鼠 标 、 游 戏 控 制 杆 、 操 作 杆 、 空 间 定 位 球 等 设

23、 备 。 重 要 的 是 , DirectInput 可 以 和 所有 现 在 的 或 将 来 的 输 入 设 备 对 话 。DirectPlay: 可 以 通 过 因 特 网 、 调 制 解 调 器 或 直 接 连 接 来 建 立 抽 象 的 连 接 。DirectMusic: 支 持 MIDI。DirectSound: 声 音 组 件 , 支 持 数 字 化 声 音 ( WAV) , 但 不 支 持 MIDI。DirectX 目 前 已 经 发 展 到 到 DirectX12, 一 开 始 , DirectX 1 很 不 成 功 , 当 到 了DirectX 8 时 , 它 引 发 了 显

24、 卡 革 命 , 引 入 像 素 渲 染 概 念 。 DirectX 11 增 加 了 新 的 计 算shader 技 术 , 它 允 许 GPU 从 事 更 多 的 计 算 工 作 , 而 不 仅 是 3D 运 算 , 这 可 以 将 GPU 作为 并 行 处 理 器 使 用 。 DirectX 11 还 支 持 tessellation 镶 嵌 化 技 术 , 这 有 助 于 开 发 人员 创 建 更 为 细 腻 流 畅 的 模 型 , 实 现 高 质 量 实 时 渲 染 和 预 渲 染 场 景 。 DirectX 11 另 外 一大 亮 点 是 可 以 更 好 地 利 用 多 线 程 资

25、 源 , 从 而 使 游 戏 更 有 效 地 利 用 多 核 处 理 器 。 目 前 ,已 更 新 到 DirectX12, 毫 无 疑 问 DirectX 给 游 戏 业 带 来 了 巨 大 的 发 展 。 2.2 游 戏 引 擎游 戏 引 擎 是 游 戏 中 与 游 戏 具 体 实 现 无 关 的 核 心 技 术 部 分 , 可 以 说 是 游 戏 的 心 脏 ,计 算 机 信 息 工 程 学 院 毕 业 设 计 说 明 书4而 游 戏 的 部 分 就 是 场 景 模 型 、 角 色 模 型 、 动 画 、 声 音 等 其 他 控 制 部 分 。 经 过 几 十 年 不断 的 发 展 ,

26、现 在 的 游 戏 引 擎 已 经 发 展 成 一 个 由 多 个 子 系 统 共 同 构 成 的 复 杂 系 统 。 游 戏引 擎 就 是 为 了 降 低 游 戏 开 发 者 们 重 复 劳 动 , 节 省 开 发 时 间 和 开 发 费 用 而 诞 生 的 , 它 封装 了 很 多 在 游 戏 制 作 中 常 用 的 功 能 , 让 我 们 能 直 接 调 用 这 些 功 能 而 不 用 再 从 头 编 写 。下 面 是 游 戏 引 擎 主 要 的 结 构 。2.2.1 选 用 的 游 戏 引 擎 结 构毕 业 设 计 所 设 计 的 赛 车 游 戏 中 所 使 用 的 的 游 戏 引 擎

27、 由 3 个 库 函 数 组 成 :T3DLIB1、 T3DLIB2、 T3DLIB3。1、 T3DLIB1: 这 是 一 个 相 当 简 单 的 二 维 8/16 位 色 , 并 具 有 后 备 缓 冲 的 Directx引 擎 , 支 持 任 何 分 辨 率 , 并 且 不 在 意 是 否 为 窗 口 模 式 。 主 要 包 含 :( 1) Direct 接 口 函 数 如 :DDraw_Init(int width, int height, int bpp, int windowed=0): 启 动 并 初 始化 DirectDraw, 可 以 选 择 任 何 分 辨 率 和 颜 色 色

28、 深 , windowed 为 0 表 示 全 屏 , 若 想 为窗 口 模 式 , 应 置 1, 并 且 不 可 选 择 分 辨 率 和 颜 色 深 度 。DDraw_Shutdown(void): 关 闭 Directdraw 并 释 放 所 有 接 口 。DDraw_Attach_Clipper()给 发 送 的 表 面 关 联 一 个 裁 剪 器 等 等 。( 2) 2D 多 边 形 函 数包 含 点 、 线 、 多 边 形 的 绘 制 以 及 绘 制 GDI 文 字 等 。(3)数 学 和 误 差 函 数包 含 计 算 两 点 间 的 距 离 、 打 开 误 差 文 件 等 。( 4

29、) 位 图 函 数包 括 加 载 位 图 函 数 、 释 放 位 图 函 数 、 创 建 内 存 位 图 、 绘 制 位 图 等( 5) 调 色 板 函 数这 些 函 数 只 用 于 256 色 , 即 8 位 模 式 , 包 含 读 取 调 色 板 函 数 、 更 新 调 色 板 、 保 存调 色 板 等 。( 6) 实 用 工 具 函 数如 Get_Clock()、 Start_Clock()等 时 间 函 数 以 及 矩 形 碰 撞 检 测 和 颜 色 检 测 函 数 。( 7) BOB 对 象 ( 类 似 精 灵 ) 及 其 处 理 函 数包 含 对 BOB 操 作 的 各 种 函 数

30、 。2、 T3DLIB2:输 入 系 统 。 此 系 统 比 较 简 单 主 要 功 能 如 下 :( 1) 初 始 化 DirectInput 系 统 。( 2) 设 置 并 获 取 键 盘 、 鼠 标 、 游 戏 杆 。( 3) 从 输 入 设 备 中 读 取 数 据 。( 4) 关 闭 设 备 。计 算 机 信 息 工 程 学 院 毕 业 设 计 说 明 书53、 T3DLIB3: 声 音 控 制 。 包 含 DirectSound 和 DirectMusic:( 1) DirectSound 实 现 .wav 格 式 的 波 形 声 音 数 据 的 播 放 控 制 , 它 的 API

31、封 装 功能 如 下 :DirectSound 的 初 始 化 及 关 闭 。用 11kHz、 8 声 道 载 入 .WAV 文 件 。播 放 加 载 的 声 音 文 件 。停 止 播 放 。检 测 声 音 的 播 放 状 态 。改 变 音 量 、 回 放 速 率 或 立 体 声 的 声 道 平 衡 。删 除 声 音 数 据 。( 2) DirectMusic 实 现 MIDI 文 件 的 播 放 控 制 , 其 API 封 装 功 能 如 下 :DirectMusic 的 初 始 化 及 关 闭 。加 载 MIDI 文 件 。播 放 MIDI 文 件 。停 止 正 在 播 放 的 MIDI

32、文 件 。检 测 声 音 播 放 状 态 。如 果 DirectSound 已 被 初 始 化 , 则 自 动 连 接 DirectSound。删 除 MIDI。2.3 游 戏 结 构所 有 的 游 戏 本 质 上 是 一 个 持 续 不 断 的 while循 环 , 它 执 行 逻 辑 并 在 屏 幕 上 不 间 断 的绘 制 更 新 图 像 , 通 常 以 3060帧 每 秒 速 度 不 断 的 绘 制 , 本 设 计 所 实 现 的 赛 车 游 戏 也 是 如此 , 但 图 像 是 以 30帧 每 秒 的 速 度 绘 制 。 本 设 计 所 实 现 的 赛 车 游 戏 流 程 如 图 2

33、-1, 下 面是 游 戏 的 每 个 子 流 程 的 说 明 。计 算 机 信 息 工 程 学 院 毕 业 设 计 说 明 书6WinMian()CreateWindow();GameInit();主 事 件 循 环Game_Shutdown();GameInit()WinProc()Process MessagesGame_mian()Game_Shutdown()Game_main()输 入人 工 智 能 和 逻 辑.渲 染图 2-1 游 戏 程 序 流 程 图( 1) Game_Init()初 始 化在 这 一 部 分 中 , 游 戏 执 行 初 始 化 操 作 , 此 赛 车 游 戏

34、主 要 的 初 始 化 工 作 有 对 三 角 函数 、 DirectDraw、 DirectSound、 DirectInput的 初 始 化 、 键 盘 的 初 始 化 、 声 音 的 载 入 、创 建 裁 剪 器 、 游 戏 开 始 画 面 载 入 与 绘 制 、 各 个 位 图 ( 包 括 赛 车 、 终 点 、 赛 道 、 指 示 灯 、菜 单 画 面 ) 的 载 入 。( 2) Game_main()这 一 部 分 是 游 戏 的 主 要 部 分 , 包 括 获 取 玩 家 的 输 入 信 息 、 执 行 人 工 智 能 、 游 戏 逻辑 、 绘 制 。( 3) Game_Shut

35、down ()此 部 分 是 在 退 出 游 戏 循 环 后 执 行 的 , 用 来 释 放 资 源 。 先 释 放 各 种 位 图 资 源 ( 如 赛车 、 终 点 、 指 示 灯 等 ) , 再 将 DirectDraw对 象 释 放 掉 , 这 两 个 的 顺 序 不 能 搞 错 , 删 除 所有 声 音 , 释 放 DirectSound对 象 , 释 放 键 盘 设 备 。2.4 本 章 小 结本 章 主 要 介 绍 了 DirectX8.0、 游 戏 引 擎 和 游 戏 基 本 结 构 。 在 列 举 的 Directx8.0的 主 要 组 件 中 , DirectDraw、 DirectInput、 DirectMusic 和 DirectSound 是 和 本 毕 业设 计 所 设 计 的 游 戏 相 关 的 , 并 且 是 选 用 的 游 戏 引 擎 的 基 础 。 所 列 出 的 游 戏 引 擎 中 的 功能 模 块 是 本 毕 业 设 计 主 要 用 到 的 , 是 实 际 编 写 过 程 中 必 须 要 调 用 的 部 分 。 本 设 计 的 游

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 学术论文 > 毕业论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报