




免费预览已结束,剩余27页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本 科 生 毕 业 论 文 (设 计 ) 基 于 java 的 俄 罗 斯 方 块 的 设 计 与 实 现 姓 名 学 号 专 业 指 导 教 师 2013 年 5 月 30 日 i 摘 要 俄 罗 斯 方 块 作 为 一 款 风 靡 全 球 的 多 样 化 终 端 游 戏 , 经 久 不 衰 。 俄 罗 斯 方 块 简 单 的 基 本 游 戏 规 则 是 旋 转 、 移 动 , 游 戏 自 动 随 机 输 出 7 种 形 状 的 方 块 , 经 旋 转 后 可 形 成 28 种 形 状 , 方 块 堆 叠 在 一 起 , 排 列 成 完 整 的 一 行 或 多 行 消 除 得 分 , 积 分 达 到 一 定 程 度 会 自 动 提 升 级 别 。 该 游 戏 上 手 简 单 、 老 少 皆 宜 、 家 喻 户 晓 。 本 论 文 在 详 尽 分 析 传 统 俄 罗 斯 实 现 的 基 本 原 理 、 基 本 规 则 基 础 上 , 更 深 一 步 地 研 究 俄 罗 斯 方 块 的 创 新 模 式 , 在 经 典 模 式 基 础 上 开 发 出 等 级 可 变 的 模 式 , 以 及 进 一 步 开 发 出 颜 色 可 变 的 模 式 , 如 随 意 改 变 界 面 的 背 景 色 、 前 景 色 等 , 本 文 对 以 上 功 能 给 出 了 实 现 流 程 、 详 尽 描 述 、 和 部 分 源 代 码 。 论 文 阐 述 了 该 游 戏 的 历 史 、 开 发 此 游 戏 的 意 义 和 环 境 并 根 据 软 件 工 程 的 相 关 知 识 , 进 行 系 统 的 需 求 分 析 、 概 要 设 计 、 详 细 设 计 与 实 现 、 调 试 运 行 进 行 描 述 。 此 设 计 是 在 microsoft windows xp 系 统 下 , 以 java 为 开 发 语 言 , 在 myeclipse 开 发 平 台 上 进 行 游 戏 的 设 计 与 实 现 。 关 键 词 : 游 戏 ; 俄 罗 斯 方 块 ; error! reference source not found.软 件 工 程 ; myeclipseerror! reference source not found. ii abstract tetris is a popular global diversification of terminal enduring game.simple basic rules of the game is rotating, moving, automatic random output of 7 kinds of shape square game. it forms 28 kinds of shape, after rotating cube stacked together, forming complete one or more lines to eliminate score. its level automatically rises with the score. the game is easy for young and old, has become a household name. this paper not only give the detailed analysis of the traditional tetris which based on the basic principle and simple rules but also develop the color variable model, such as random change the background color and foreground color and so on. further more, in this paper, the above functions are given the implementation process, the detailed description, and some source code. the paper expounds the history of the game, develops the meaning of the game and the environment of design. according to the relevant knowledge of software engineering, the author reports the demand analysis, outline design, detailed design, planning and execution of the test. this design is under microsoft windows xp system, based on java development language, the myeclipse development platforms to carry on the design and implementation of the game. key words: game, tetris, software engineering, myeclipse iii 目 录 1 引 言 1 2 系 统 的 需 求 分 析 .2 2.1 系 统 需 求 .2 2.2 接 口 控 制 .2 3 系 统 的 概 要 设 计 .4 3.1 软 件 运 行 和 开 发 工 具 .4 3.2 系 统 功 能 设 计 .4 3.2.1 手 工 处 理 业 务 的 基 本 流 程 .4 3.2.2 基 本 流 程 的 功 能 模 块 .5 4 系 统 的 详 细 设 计 与 实 现 .8 4.1 游 戏 主 界 面 显 示 模 块 .8 4.2 画 布 、 方 块 显 示 模 块 .9 4.2.1 背 景 画 布 模 块 设 计 10 4.2.2 预 览 方 块 模 块 设 计 11 4.2.3 方 块 移 动 、 旋 转 设 计 14 4.3 控 制 面 板 模 块 18 4.3.1 菜 单 栏 模 块 设 计 18 4.3.2 控 制 面 板 按 钮 设 计 20 5 系 统 的 调 试 运 行 21 5.1 测 试 的 意 义 及 注 意 事 项 21 5.2 游 戏 代 码 、 算 法 的 测 试 21 5.3 游 戏 界 面 菜 单 选 项 的 功 能 测 试 22 5.4 按 键 事 件 的 功 能 测 试 24 5.5 方 块 堆 砌 与 消 行 测 试 25 5.6 测 试 结 果 分 析 26 6 结 论 27 参 考 文 献 28 致 谢 .29 1 1 引 言 俄 罗 斯 方 块 的 影 响 已 毋 庸 置 疑 , 当 今 世 界 的 电 脑 、 手 机 到 处 都 有 俄 罗 斯 方 块 的 踪 迹 , 同 时 它 更 是 每 个 游 戏 平 台 的 必 备 游 戏 , 相 关 的 复 制 品 不 胜 枚 举 。 这 个 最 早 由 莫 斯 科 的 数 学 家 亚 力 克 西 帕 杰 诺 夫 (alexey pajituov)所 设 计 的 作 品 ,被 公 认 为 有 史 以 来 最 畅 销 的 经 典 游 戏 ,至 今 魅 力 不 减 当 年 。 亚 力 克 西 帕 杰 诺 夫 曾 在 俄 罗 斯 科 学 研 究 院 电 脑 中 心 工 作 , 当 时 他 在 eletronica 60的 旧 型 俄 罗 斯 主 机 上 进 行 开 发 工 作 , 这 种 机 器 不 支 持 图 形 界 面 , 和 pc也 不 兼 容 。 他 尝 试 将 一 种 传 统 的 拼 图 游 戏 pentomino 改 写 成 电 脑 游 戏 。 pentomino 一 共 有 十 二 种 形 状 , 各 以 七 个 方 块 组 合 而 成 。 帕 杰 诺 夫 试 着 写 了 一 个 程 序 , 旋 转 并 移 动 这 十 二 种 不 同 形 状 的 方 块 , 让 它 们 拼 成 一 大 块 。 后 来 几 经 修 改 , 发 展 成 我 们 现 在 所 熟 悉 的 经 典 模 式 。 俄 罗 斯 方 块 曾 经 引 起 的 轰 动 和 制 造 的 经 济 价 值 可 以 说 是 游 戏 史 上 无 可 比 拟 的 。 它 看 似 简 单 但 却 变 化 无 穷 , 令 人 爱 不 释 手 。 俄 罗 斯 方 块 游 戏 是 随 计 算 机 的 发 展 而 发 展 , 并 不 断 推 陈 出 各 种 新 演 变 出 的 类 似 游 戏 , 深 受 广 大 玩 家 喜 爱 。 游 戏 模 式 有 的 简 单 、 有 的 复 杂 , 但 其 根 本 原 理 是 都 是 对 随 机 出 现 的 方 块 进 行 组 合 , 来 训 练 玩 家 的 反 应 能 力 、 逻 辑 思 维 能 力 。 游 戏 软 件 , 大 多 数 人 都 视 其 为 神 妙 莫 测 , 高 不 可 及 的 东 西 。 一 般 来 说 , 游 戏 软 件 也 确 实 具 有 很 高 的 技 术 难 度 , 随 着 开 发 工 具 和 软 件 开 发 方 法 学 的 不 断 发 展 , 自 己 动 手 开 发 游 戏 也 并 非 难 事 。 俄 罗 斯 方 块 游 戏 可 以 上 说 是 一 种 古 老 而 又 有 趣 的 游 戏 。 游 戏 软 件 不 计 其 数 , 网 上 也 有 很 多 关 于 游 戏 实 现 的 复 杂 算 法 和 设 计 , 其 难 度 让 一 般 初 学 者 望 而 却 步 。 本 文 利 用 数 组 作 为 方 块 的 数 据 结 构 , 用 颜 色 变 化 作 为 方 块 下 落 和 移 动 的 标 识 , 提 出 一 种 用 java语 言 实 现 游 戏 的 简 易 方 法 ,在 经 典 模 式 的 基 础 上 实 现 等 级 可 变 , 颜 色 可 变 等 功 能 , 初 学 者 可 仿 此 开 发 类 似 游 戏 , 并 了 解 游 戏 软 件 的 设 计 与 开 发 过 程 。 俄 罗 斯 方 块 游 戏 以 其 益 智 、 简 单 又 不 乏 挑 战 、 创 意 独 特 的 游 戏 模 式 , 吸 引 了 众 多 游 戏 爱 好 者 , 而 且 老 少 皆 宜 。 当 今 社 会 里 , 人 们 的 工 作 压 力 随 着 生 活 节 奏 的 快 速 提 高 而 逐 渐 繁 重 , 随 之 减 少 的 是 可 以 自 由 支 配 的 休 息 时 间 , 人 们 迫 切 地 需 要 一 种 既 简 单 又 节 省 时 间 的 快 速 休 闲 方 式 。 无 可 争 议 , 它 是 永 恒 的 娱 乐 经 典 , 且 它 的 代 码 简 单 , 界 面 简 洁 , 从 最 初 发 行 时 的 单 个 游 戏 机 到 现 在 便 捷 的 安 装 到 电 脑 、 手 机 、 mp4、 电 子 词 典 、 商 务 通 、 ipad、 itouch 等 便 携 设 备 , 俄 罗 斯 方 块 风 靡 世 界 , 经 久 不 衰 。 本 次 课 题 研 究 可 以 说 是 对 游 戏 开 发 的 一 次 尝 试 , 无 论 从 技 术 还 是 社 会 意 义 上 看 都 是 很 有 价 值 的 。 2 2 系 统 的 需 求 分 析 对 系 统 的 需 求 分 析 就 是 用 户 和 开 发 人 员 在 “系 统 必 须 做 什 么 ”这 个 问 题 上 实 现 相 互 理 解 , 达 到 共 识 , 从 而 形 成 双 方 认 可 的 软 件 产 品 的 需 求 规 格 。 这 样 有 利 于 提 高 软 件 开 发 过 程 中 的 能 见 度 , 便 于 对 软 件 开 发 过 程 的 控 制 与 管 理 , 便 于 采 用 工 程 化 的 模 式 开 发 软 件 , 从 而 达 到 提 高 软 件 的 质 量 , 为 开 发 人 员 、 维 护 人 员 、 管 理 人 员 之 间 的 交 流 、 协 作 提 供 便 捷 。 作 为 工 作 成 果 的 原 始 依 据 , 系 统 的 需 求 分 析 可 以 向 潜 在 用 户 传 递 软 件 功 能 、 性 能 的 需 求 , 使 其 能 够 判 断 该 软 件 是 否 符 合 自 己 的 需 求 。 2.1 系 统 需 求 系 统 随 机 产 生 7 中 不 同 形 状 的 方 块 , 旋 转 后 有 28 种 状 态 。 方 块 自 由 下 落 , 玩 家 通 过 键 盘 控 制 方 块 的 移 动 和 旋 转 , 把 方 块 摆 放 在 适 当 的 位 置 。 如 果 方 块 落 下 时 , 有 被 方 块 填 满 的 整 行 , 则 该 行 可 消 去 。 每 消 去 一 行 , 玩 家 得 分 增 加 10 分 , 每 满 100 分 , 玩 家 等 级 增 加 一 级 。 若 由 存 在 空 格 的 方 块 填 满 整 个 窗 口 , 则 游 戏 宣 告 失 败 。 游 戏 功 能 需 求 如 下 : 游 戏 界 面 需 求 : 设 计 良 好 的 游 戏 界 面 可 以 让 玩 家 充 分 感 受 到 游 戏 带 来 的 娱 乐 性 , 游 戏 的 默 认 背 景 色 是 深 绿 色 , 主 界 面 方 块 默 认 用 橘 黄 色 , 预 显 方 块 颜 色 默 认 为 淡 紫 色 。 背 景 色 、 前 景 色 对 比 鲜 明 , 以 达 到 让 玩 家 眼 前 一 亮 的 感 觉 , 并 能 在 游 戏 达 到 高 等 级 状 态 , 方 块 下 落 速 度 渐 高 的 情 况 下 使 玩 家 能 够 清 楚 的 分 辨 出 下 落 方 块 的 形 状 , 增 加 游 戏 的 刺 激 性 。 游 戏 形 状 需 求 : 用 数 组 作 为 存 储 方 块 28 种 状 态 的 数 据 结 构 , 即 长 条 形 、 z 字 形 、 反 z 形 、 田 字 形 、 7 字 形 、 反 7 形 、 t 字 型 一 共 7 种 形 状 的 向 4 个 方 向 的 旋 转 变 形 , 各 个 方 块 要 能 实 现 它 的 任 意 变 形 , 可 设 为 顺 时 针 变 形 或 逆 时 针 变 形 , 一 般 为 逆 时 针 变 形 。 方 块 的 可 否 翻 转 需 要 加 以 判 断 , 以 防 止 其 翻 转 越 界 。 键 盘 处 理 事 件 需 求 : 方 块 下 落 时 , 可 通 过 键 盘 方 向 键 ( 上 键 、 下 键 、 左 键 、 右 键 ) 或 字 母 键 i、 k、 j、 l 对 下 落 方 块 进 行 向 上 ( 旋 转 变 形 ) 、 向 下 ( 加 速 下 落 ) 、 向 左 移 动 、 向 右 移 动 。 鼠 标 处 理 事 件 需 求 : 通 过 点 击 菜 单 栏 中 相 应 的 菜 单 项 或 控 制 面 板 内 的 按 钮 , 可 以 实 现 游 戏 的 开 始 、 结 束 、 暂 停 、 继 续 、 提 高 等 级 、 降 低 等 级 , 预 显 方 块 形 状 的 显 示 , 分 数 、 等 级 的 显 示 , 以 及 游 戏 帮 助 、 颜 色 变 换 等 功 能 。 显 示 需 求 : 当 方 块 填 满 一 行 时 可 以 消 行 , 剩 余 未 填 满 的 行 逐 次 向 下 移 动 并 统 计 分 数 。 当 达 到 一 定 分 数 的 时 候 , 会 增 加 相 应 的 等 级 。 当 方 块 充 满 主 界 面 的 每 一 行 , 方 块 不 能 再 下 落 时 , 提 示 “game over”的 字 样 。 3 非 功 能 性 需 求 : 本 系 统 非 功 能 性 需 求 包 括 游 戏 主 界 面 左 上 角 显 示 图 标 需 求 、 窗 口 尺 寸 可 调 整 性 需 求 、 游 戏 运 行 时 主 界 面 弹 出 位 置 居 中 需 求 等 。 2.2 接 口 控 制 本 游 戏 通 过 键 盘 和 鼠 标 进 行 操 作 , 在 windows 的 操 作 系 统 下 , 利 用 键 盘 的 按 键 对 方 块 进 行 移 动 、 变 形 , 要 使 用 到 键 盘 的 接 口 事 件 。 游 戏 使 用 鼠 标 对 游 戏 进 行 全 程 控 制 , 如 游 戏 的 开 始 、 暂 停 、 继 续 、 查 看 游 戏 帮 助 、 更 改 界 面 颜 色 、 更 改 游 戏 等 级 等 , 通 过 对 鼠 标 单 击 、 按 键 添 加 监 听 事 件 , 编 辑 相 应 代 码 来 实 现 相 应 功 能 。 4 3 系 统 的 概 要 设 计 3.1 软 件 运 行 和 开 发 工 具 操 作 系 统 : microsoft windows xp professional service pack 3 内 存 : 2g 硬 盘 : 320g cpu: 赛 扬 2.8 交 互 工 具 : 键 盘 、 鼠 标 显 示 器 : vga 显 示 器 jdk 版 本 : jdk1.6.0.02 eclipse 版 本 : myeclipse 8.5 sdk-3.4-win32 3.2 系 统 功 能 设 计 3.2.1 手工处理业务的基本流程 本 游 戏 的 设 计 以 娱 乐 为 初 衷 , 以 益 智 为 目 的 , 在 综 合 研 究 以 往 俄 罗 斯 方 块 经 典 游 戏 功 能 的 基 础 上 推 陈 出 新 , 加 之 新 的 功 能 , 赋 以 新 的 生 机 和 活 力 。 图 3-1 为 游 戏 基 本 流 程 图 具 体 阐 述 游 戏 的 基 本 流 程 。 运 行 说 明 : 1运 行 程 序 , 点 击 右 侧 控 制 面 板 内 的 “开 始 ”或 “控 制 ”菜 单 内 的 “开 始 ”按 钮 开 始 游 戏 。 2使 用 上 、 下 、 左 、 右 键 或 i、 k、 j、 l 键 控 制 方 块 的 变 形 、 下 落 、 向 左 和 向 右 移 动 。 3方 块 满 行 消 除 , 分 数 自 动 增 加 , 分 数 每 满 100 等 级 自 动 增 加 一 级 。 4等 级 增 加 、 方 块 下 落 速 度 增 加 , 按 右 侧 控 制 面 板 或 “游 戏 ”菜 单 内 的 “提 高 等 级 ” 、 “降 低 等 级 ”按 钮 , 来 手 动 改 变 游 戏 等 级 。 也 可 点 击 “颜 色 ”菜 单 内 的 选 项 , 更 改 前 景 色 、 背 景 色 。 5按 右 侧 控 制 面 板 或 “控 制 ”菜 单 内 的 “暂 停 ”可 以 控 制 游 戏 暂 停 , 然 后 按 “继 续 ” 可 以 控 制 游 戏 继 续 上 次 游 戏 。 按 “停 止 ”按 钮 , 游 戏 会 彻 底 停 止 正 在 进 行 的 当 局 游 戏 , 再 按 “开 始 ”或 “控 制 ”菜 单 内 的 “重 新 开 始 ”会 开 始 新 游 戏 。 6当 方 块 占 满 整 个 窗 口 , 不 能 再 有 新 方 块 下 落 时 , 游 戏 会 弹 出 “game over”的 对 话 框 提 示 游 戏 结 束 。 5 玩家操作方块 初始化方块 是否到达底部 否 是否满行 是 玩家更改前景色 、 背景色 、 等级等 玩家积分增加 是 积分达到 1 0 0 玩家等级增加 是 是否到达顶部 是 暂停 、 继续 、 停 止 、 重新开始 结束 开始 否 否 显示 g a m e o v e r 游戏结束 图 3-1 游 戏 基 本 流 程 图 3.2.2 基本流程的功能模块 本 系 统 基 于 游 戏 的 各 项 功 能 来 设 计 游 戏 的 各 个 功 能 模 块 。 图 3-2 为 本 游 戏 的 系 统 功 能 模 块 示 意 图 , 如 图 所 示 , 本 游 戏 主 要 有 两 大 模 块 : 游 戏 界 面 区 , 游 戏 控 制 区 。 游 戏 界 6 面 区 分 显 示 玩 家 可 选 操 作 、 显 示 玩 家 操 作 结 果 两 个 部 分 。 游 戏 控 制 区 分 更 改 颜 色 、 开 始 、 暂 停 、 继 续 、 停 止 、 重 新 开 始 、 提 高 等 级 、 降 低 等 级 、 退 出 等 功 能 模 块 。 俄罗斯方块游戏 游戏界面区 游戏控制区 显示玩家可选操作 显示玩家操作结果 开始 暂停 、 继续 提高等级 更改颜色 降低等级 退出 停止 重新开始 图 3-2 系 统 功 能 模 块 示 意 图 图 3-3 为 游 戏 界 面 区 模 块 设 计 示 意 图 , 如 图 所 示 , 游 戏 界 面 区 模 块 可 细 分 为 闯 进 新 游 戏 界 面 、 处 理 玩 家 操 作 、 显 示 玩 家 操 作 结 果 三 个 功 能 模 块 。 7 游戏界面区 创建新游戏界面 处理玩家操作 显示玩家操作结果 图 3-3 界 面 模 块 示 意 图 图 2-4 为 游 戏 控 制 区 设 计 示 意 图 , 如 图 所 示 , 游 戏 控 制 区 模 块 分 为 开 始 、 暂 停 、 继 续 、 初 始 游 戏 级 别 设 置 、 初 始 颜 色 设 置 、 退 出 等 功 能 模 块 。 游戏控制区 开始 暂停 初始级别设置 退出 初始颜色设置 图 3-4 控 制 区 模 块 示 意 图 8 4 系 统 的 详 细 设 计 与 实 现 java 是 一 种 纯 面 向 对 象 ( object-oriented) 的 程 序 语 言 , 它 的 诸 多 优 点 在 此 就 不 作 详 细 论 述 了 。 从 面 向 对 象 的 观 念 出 发 , 本 程 序 主 要 可 分 为 以 下 几 个 模 块 : 游 戏 主 界 面 显 示 模 块 方 块 及 数 据 显 示 模 块 方 块 移 动 控 制 模 块 游 戏 界 面 颜 色 控 制 模 块 游 戏 进 度 、 等 级 控 制 模 块 分 析 对 象 的 技 巧 在 于 它 的 功 能 的 扩 展 性 及 维 护 效 率 。 试 想 , 如 果 因 为 外 部 环 境 或 者 用 户 需 求 的 变 化 需 要 对 程 序 进 行 功 能 扩 展 或 者 维 护 , 就 要 对 代 码 作 大 幅 度 的 更 动 甚 至 重 写 , 这 样 就 失 去 了 面 向 对 象 的 优 势 , 所 以 在 本 程 序 分 析 时 将 独 立 性 高 的 模 块 作 为 一 个 对 象 , 以 提 高 程 序 的 可 扩 展 性 和 可 维 护 性 。 以 下 该 游 戏 中 类 的 设 计 : controlmaingame 类 : 继 承 自 jframe 类 , 作 为 游 戏 的 主 类 , 负 责 对 游 戏 的 主 体 全 局 进 行 控 制 , 连 接 与 指 挥 各 个 类 的 枢 纽 。 controlpanel 类 : 继 承 自 jpanel 类 , 作 为 操 作 面 板 类 , 负 责 安 放 主 游 戏 窗 口 , 积 分 板 , 级 别 控 制 按 钮 等 窗 口 用 以 控 制 游 戏 进 程 。 changeblockcolor 类 : 继 承 自 jpanel 类 , changeblockcolor 线 程 类 动 态 改 变 画 布 类 的 方 格 颜 色 , 画 布 类 通 过 检 查 方 格 颜 色 来 体 现 changeblockcolor 方 块 的 移 动 情 况 与 消 去 状 况 。 blockpaint 类 : 方 格 类 , 组 成 方 块 的 基 本 元 素 , 主 要 表 达 方 式 为 颜 色 。 blockoperation 类 : 继 承 自 thread 类 , 作 为 操 控 方 块 的 类 , 控 制 方 块 的 移 动 , 下 落 以 及 变 形 。 4.1 游 戏 主 界 面 显 示 模 块 一 个 优 秀 的 软 件 系 统 不 仅 体 现 在 核 心 的 功 能 的 多 样 性 和 强 大 上 , 如 果 使 用 者 所 面 对 的 是 枯 燥 的 、 陈 旧 的 界 面 的 话 , 那 么 这 个 的 软 件 系 统 是 不 成 功 的 , 所 以 好 的 、 精 美 的 界 面 设 计 是 极 为 重 要 的 环 节 。 为 玩 家 设 计 制 作 布 局 合 理 、 视 觉 效 果 良 好 的 界 面 的 重 要 性 就 不 言 而 喻 了 。 游 戏 主 界 面 采 用 swing 组 件 开 发 , 并 且 向 其 注 册 监 听 器 , 以 实 现 各 种 控 制 功 能 , 综 合 游 戏 窗 体 的 设 计 , 其 上 至 少 需 要 注 册 三 个 监 听 器 , 分 别 是 动 作 监 听 器 (actionlistener)、 键 盘 监 听 器 (keylistener)、 选 项 监 听 器 (itemlistener)。 9 根 据 初 步 设 计 , 可 以 确 定 客 户 端 上 所 要 用 到 的 swing 组 件 对 象 有 jframe 对 象 、 jpanel 对 象 , jlabel 对 象 、 jbutton 对 象 、 jmenubar 对 象 、 jmenu 对 象 、 jmenuitem 对 象 、 jtextfield 对 象 、 jtextarea 对 象 、 jdialog 对 象 等 , 至 少 十 个 swing 组 件 对 象 。 下 图 4-1 为 游 戏 主 界 面 截 图 。 图 4-1 游 戏 主 界 面 截 图 本 游 戏 主 界 面 设 计 的 初 始 颜 色 搭 配 基 于 对 比 鲜 明 的 原 则 , 默 认 背 景 色 为 深 绿 色 , 左 上 角 设 置 俄 罗 斯 方 块 图 标 , 得 分 初 始 值 为 0, 等 级 初 始 值 为 1, 最 高 分 记 录 初 始 值 为 0。 游 戏 主 窗 体 尺 寸 设 置 为 ( 520, 580) , 方 块 移 动 范 围 窗 格 由 一 个 20 行 、 12 列 的 二 维 数 组 控 制 , 且 左 上 角 图 标 设 置 为 方 块 图 案 , 起 标 识 作 用 。 4.2 画 布 、 方 块 显 示 模 块 10 本 游 戏 中 将 画 布 底 色 默 认 设 计 成 深 绿 色 , 在 方 块 下 落 过 程 中 , 根 据 颜 色 的 变 化 识 别 下 落 的 方 块 。 4.2.1 背景画布模块设计 该 游 戏 的 主 背 景 画 布 是 一 个 20 行 、 12 列 的 二 维 数 组 , 方 块 显 示 是 由 相 应 颜 色 变 化 来 标 识 , 主 窗 体 用 颜 色 填 充 后 可 形 成 呈 现 出 来 背 景 样 式 和 方 块 。 本 游 戏 用 继 承 自 jpanel 的 changeblockcolor 类 控 制 背 景 画 布 的 显 示 , 用 rows 代 表 画 布 的 行 数 , cols 代 表 画 布 的 列 数 , 行 数 和 列 数 决 定 着 画 布 拥 有 方 格 的 数 目 。 背 景 画 布 实 现 代 码 如 下 : /* changeblockcolor 类 画布类的构造函数 rows int, 画布的行数 cols int, 画布的列数 行数和列数决定着画布拥有方格的数目 */ class changeblockcolor extends jpanel private color backcolor = new color(0,51,0) , frontcolor = new color(255,153,0); private int rows, cols, score = 0, scoreforlevelupdate = 0; private blockpaint boxes; private int boxwidth, boxheight; public changeblockcolor(int rows, int cols) this.rows = rows; this.cols = cols; boxes = new blockpaintrowscols; for (int i = 0; i 每次执行首先为随机数产生不同的初值。 style=blockoperation.styles(int)(math.random()*7)(int) (math.random() * 4); 12 s t y l e s 的下标 长条形 t 形 反 z 形 z 形 7 形 反 7 形 方块形 随机数 图 4-2 随 机 产 生 方 块 图 2随机选取一个图形,图 3-1 随机产生方块图具体描述用生成的随机数控制产生 的图形。 3当前图形在其 4*4 网格中的位置信息。 绘 制 4 行 4 列 的 方 块 预 显 方 格 , 随 机 生 成 预 显 示 的 方 块 样 式 。 本 游 戏 用 二 维 数 组 存 储 方 块 的 28 种 样 式 。 public final static int styles = /分别对应对7种模型的28种状态 0x0f00, 0x4444, 0x0f00, 0x4444, / 长条型的四种状态 0x04e0, 0x0464, 0x00e4, 0x04c4, / t型的四种状态 0x4620, 0x6c00, 0x4620, 0x6c00, / 反z 型的四种状态 0x2640, 0xc600, 0x2640, 0xc600, / z型的四种状态 0x6220, 0x1700, 0x2230, 0x0740, / 7型的四种状态 0x6440, 0x0e20, 0x44c0, 0x8e00, / 反7型的四种状态 0x0660, 0x0660, 0x0660, 0x0660, / 方块的四种状态; 13 以 下 为 与 数 组 相 对 应 的 方 块 样 式 截 图 。 长 条 型 的 四 种 状 态 图 4-3 长 条 型 状 态 截 图 t型 的 四 种 状 态 图 4-4 t型 状 态 截 图 反 z型 的 四 种 状 态 图 4-5 反 z型 状 态 截 图 z型 的 四 种 状 态 图 4-6 z型 状 态 截 图 14 7型 的 四 种 状 态 图 4-7 7型 状 态 截 图 反 7型 的 四 种 状 态 图 4-8 反 7型 状 态 截 图 方 块 的 四 种 状 态 图 4-9 方 块 状 态 截 图 4.2.3 方块移动、旋转设计 方 块 的 翻 转 与 移 动 比 较 容 易 实 现 , 方 块 移 动 只 需 要 改 变 方 块 的 横 坐 标 或 纵 坐 标 , 然 后 重 新 绘 制 方 块 即 可 。 方 块 翻 转 也 只 需 要 改 变 背 景 数 组 的 值 , 重 新 绘 制 方 块 即 可 。 本 游 戏 方 块 下 落 时 , 进 行 动 态 绘 制 , 实 现 cloneable 接 口 , 以 指 示 object.clone() 方 法 可 以 合 法 地 对 该 类 实 例 进 行 按 字 段 复 制 。 方 块 的 操 作 类 blockoperation 继 承 thread 类 , 重 写 run()方 法 , 以 实 现 方 块 的 动 态 正 确 下 落 。 当 然 , 在 线 程 中 要 判 定 方 块 是 处 于 moving 状 态 还 是 pausing 状 态 。 public void run() /moving判定方块是否在动态下落 while (moving) 15 try /betweenleveltime指示相邻等级之间相差时间 sleep(betweenleveltime * (controlmaingame.maxlevel - level + flatgene); catch (interruptedexception ie) ie.printstacktrace(); /pausing判定游戏是否处于暂停状态 if (!pausing) moving = (moveto(y + 1, x) /moving是在等待的100毫秒间,moving没被改变 当 然 , 在 游 戏 中 还 要 判 定 方 块 移 动 的 边 界 问 题 , 比 如 , 一 个 方 块 在 它 左 边 正 好 差 一 个 格 子 的 空 间 才 能 够 翻 转 , 但 是 它 的 右 边 恰 好 有 一 个 格 子 的 空 间 , 这 种 情 况 , 如 果 方 块 不 能 够 翻 转 , 就 不 方 便 用 户 操 作 , 如 果 能 够 翻 转 , 就 会 发 生 越 界 , 将 已 经 存 在 的 方 块 挤 占 掉 。 要 想 实 现 翻 转 又 不 发 生 越 界 , 那 么 , 就 应 该 在 方 块 翻 转 后 把 它 往 右 边 移 动 一 个 格 子 , 然 后 再 绘 制 方 块 , 这 样 , 方 块 就 不 会 挤 占 掉 其 它 已 经 固 定 住 的 方 块 了 , 以 下 解 决 越 界 问 题 。 1方 块 翻 转 判 定 在 两 种 情 况 可 能 发 生 越 界 , 一 种 是 方 块 落 下 去 固 定 住 以 后 , 第 二 种 是 周 围 的 空 间 不 允 许 它 进 行 翻 转 。 第 一 种 情 况 只 需 要 参 考 方 块 落 下 去 后 不 能 够 再 移 动 的 判 定 即 可 。 对 于 第 二 种 情 况 , 在 每 次 方 块 翻 转 前 , 必 须 首 先 计 算 出 方 块 周 围 的 空 间 , 如 果 空 间 允 许 则 翻 转 。 否 则 , 不 能 翻 转 。 因 为 七 种 方 块 是 不 规 则 的 , 每 种 方 块 要 求 的 翻 转 空 间 都 是 不 一 样 的 , 甚 至 是 在 它 的 不 同 翻 转 状 态 下 , 所 要 求 的 翻 转 空 间 也 是 不 一 样 的 , 首 先 想 到 的 自 然 就 是 为 每 一 种 方 块 , 方 块 的 每 一 种 状 态 都 写 一 个 判 定 条 件 , 但 是 这 样 做 未 免 过 于 麻 烦 。 根 据 观 察 , 不 难 发 现 , 七 种 形 态 的 方 块 , 长 条 形 的 方 块 如 果 以 横 条 的 形 态 下 落 , 则 只 要 能 够 下 落 , 就 能 翻 转 , 如 果 以 竖 条 的 形 态 下 落 , 那 么 它 翻 转 后 所 处 的 位 置 必 须 要 有 4x1 个 格 子 的 空 间 才 能 够 翻 转 。 对 于 田 字 形 的 方 块 , 只 有 能 够 继 续 下 坠 , 就 一 定 能 够 翻 转 , 所 以 田 字 型 的 方 块 只 要 没 有 落 下 , 就 一 直 能 够 翻 转 。 而 其 它 五 种 形 态 的 方 块 , 又 有 一 个 共 同 点 , 就 是 它 们 都 有 两 种 翻 转 状 态 横 向 占 三 个 格 子 的 空 间 , 竖 直 方 向 占 两 个 空 间 , 另 外 两 种 翻 转 状 态 横 向 占 两 个 格 子 的 空 间 , 竖 直 方 向 占 三 个 格 子 空 间 , 如 果 他 们 是 以 横 向 占 三 个 格 子 的 状 态 下 落 , 那 么 只 要 能 下 落 , 就 一 定 能 够 翻 转 , 如 果 是 以 横 向 两 个 格 子 的 状 态 下 落 , 那 么 在 翻 转 后 , 周 围 必 须 要 有 3x2 个 格 子 的 空 间 。 16 所 以 , 方 块 翻 转 的 判 定 , 要 分 三 种 情 况 , 第 一 种 情 况 是 方 块 落 下 去 后 不 能 翻 转 ; 第 二 种 情 况 是 对 竖 直 状 态 出 现 的 长 条 形 的 方 块 进 行 翻 转 判 定 ; 第 三 种 情 况 是 对 除 长 条 形 和 田 字 形 之 外 的 其 它 五 种 以 横 向 占 两 个 格 子 的 状 态 出 现 的 方 块 进 行 翻 转 判 定 。 何 种 情 况 下 方 块 能 够 翻 转 的 问 题 解 决 了 , 接 下 来 , 我 们 就 应 该 解 决 方 块 翻 转 后 所 处 的 位 置 的 问 题 了 , 因 为 只 有 事 先 知 道 方 块 翻 转 后 所 处 的 位 置 , 才 能 够 对 那 个 位 置 的 空 间 范 围 进 行 判 定 , 判 定 它 是 否 能 够 容 纳 方 块 。 可 以 确 定 的 是 , 无 论 方 块 怎 么 翻 转 , 都 处 在 方 块 数 组 中 , 也 就 是 说 方 块 必 定 是 在 游 戏 地 图 中 某 一 4x4 个 格 子 的 空 间 范 围 内 。 方 块 数 组 在 游 戏 主 界 面 中 的 坐 标 是 确 定 的 , 不 确 定 的 是 方 块 翻 转 后 到 底 处 在 方 块 数 组 的 哪 个 位 置 , 为 了 解 决 这 个 问 题 , 我 们 可 以 限 定 方 块 在 方 块 数 组 中 的 存 储 原 则 是 靠 左 、 靠 上 , 这 样 , 无 论 翻 转 怎 么 翻 转 , 方 块 数 组 中 第 一 行 和 第 一 列 都 是 有 方 块 的 , 这 样 也 就 确 定 了 方 块 在 方 块 数 组 中 的 位 置 , 也 就 可 以 得 知 方 块 翻 转 后 在 游 戏 地 图 中 的 位 置 了 。 假 定 方 块 数 组 的 横 纵 坐 标 是 x 和 y, 那 么 , 这 个 位 置 就 是 , 长 条 形 的 方 块 翻 转 后 所 处 的 那 一 行 是 游 戏 地 图 的 第 y 行 , 所 占 的 列 是 第 x 到 x+3 列 , 长 条 形 和 田 字 形 以 外 的 五 种 方 块 翻 转 后 的 所 占 的 行 数 是 游 戏 地 图 的 第 y 和 第 y+1 行 , 所 占 的 列 是 第 x 到 x+2 列 。 所 以 , 如 果 以 上 空 间 有 空 格 子 , 方 块 就 能 够 翻 转 。 2翻 转 越 界 纠 正 只 要 方 块 翻 转 后 所 处 的 空 间 足 够 , 方 块 就 能 够 翻 转 , 但 是 , 如 果 方 块 翻 转 后 所 处 的 空 间 不 足 够 , 而 在 它 的 另 一 边 却 有 足 够 的 空 间 呢 ? 方 块 在 边 界 处 时 , 翻 转 后 不 仅 可 能 翻 出 地 图 外 , 还 可 能 发 生 数 组 越 界 , 当 然 , 只 需 要 将 地 图 数 组 定 义 得 大 一 些 , 就 能 够 避 免 数 组 越 界 错 误 , 对 于 方 块 越 界 , 如 果 在 它 的 另 一 边 有 足 够 空 间 , 那 么 , 就 应 该 把 方 块 往 另 一 个 方 向 移 动 适 当 的 单 位 , 纠 正 方 块 越 界 错 误 。 如 图 4-10 方 块 翻 转 流 程 图 所 示 , 方 块 翻 转 需 要 经 三 次 判 定 : 是 否 已 经 下 落 到 底 部 、 翻 转 后 是 否 有 足 够 空 间 、 翻 转 后 是 否 越 界 。 开始 接收到翻转信息 方块是否落下 翻转后是否有 足够空间 翻转后是否越 界 翻转越界纠正 结束 否 是 是 不能翻转 不能翻转 直接翻转 是 否 否 4-10 方 块 翻 转 处 理 流 程 图 玩家操作键盘实现方块的移动、旋转,代码引进 controlkeylistener 类继承 keyadapter 类进行键盘监听功能的实现。keyadapter 类继承自 object 类,实现 keylistener 接口,用来接收键盘事件的抽象适配器类。此类中的方法为空。此类存在 的目的是方便创建侦听器对象。扩展此类即可创建 keyevent 侦听器并重写所需事件 的方法,即是 controlkeylistener 类。使用 controlkeylistener 可创建侦听器对象, 然后使用组件的 addkeylistener 方法向该组件注册此侦听器对象。当按下、释放或 17 键入某个键时,将调用该侦听器对象中的相应方法,并将 keyevent 传递给相应的方 法。实现代码如下: private class controlkeylistener extends keyadapter public void keypressed(keyevent ke) if (!game.isplaying() return; blockoperation blockope = game.getcurblock(); switch (ke.getkeycode() case keyevent.vk_down: blockope.movedown(); break; case keyevent.vk_left: blockope.moveleft(); break; case keyevent.vk_right: blockope.moveright(); break; case keyevent.vk_up: blockope.turnnext(); break; default: break; 4.3 控 制 面 板 模 块 4.3.1 菜单栏模块设计 菜 单 栏 中 有 “游 戏 ”、 “背 景 ”、 “控 制 ”、 “帮 助 ”四 个 菜 单 选 项 。 “游 戏 ”选 项 又 分 “新 游 戏 ”、 “提 高 等 级 ”、 “降 低 等 级 ”、 “退 出 ”四 个 选 项 。 “背 景 ”选 项 又 分 “前 景 色 ”、 “背 景 色 ”, 下 分 若 干 种 颜 色 。 “控 制 ”选 项 分 “开 始 ”、 “暂 停 ”、 “重 新 开 始 ”、 “停 止 ”。 “帮 助 ”选 项 分 “游 戏 帮 助 ”、 “关
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 绿色产业链金融-洞察及研究
- 咨询服务生态建设-洞察及研究
- 可降解水凝胶制备-洞察及研究
- 医药供应链并购效应-洞察及研究
- 多材料智能包装-洞察及研究
- 学生校服规定
- 农业与环境保护的关系与平衡
- 北京市水价结构剖析、动态演变及优化策略探究
- 北京ORN公司发展战略研究:基于内外部环境的深度剖析与路径选择
- PSPEO静电纺丝:阶层式多孔二氧化钛制备的创新路径与性能探究
- BCG 中国合成生物学产业白皮书2024
- 三年级数学倍的认识 省赛一等奖
- 大脑动脉血栓形成引起的脑梗死的护理查房
- 人教版小学英语所有语法及人教版小学英语语法大全
- 儿童膳食管理课件
- 《高血压疾病知识》课件
- 村卫生室医保管理制度
- 第一课 社会主义从空想到科学、从理论到实践的发展 思维导图+必背知识点填空+同步练习(含答案)
- 现代文献检索与利用1-图书馆纸质文献资源
- 第七讲 社会主义现代化建设的教育科技人才战略PPT习概论2023优化版教学课件
- 室间质评记录表
评论
0/150
提交评论