对对碰设计报告_第1页
对对碰设计报告_第2页
对对碰设计报告_第3页
对对碰设计报告_第4页
对对碰设计报告_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机科学与工程学院课程设计报告 题目全称 题目全称 C C 对对碰对对碰 题目难度等级 题目难度等级 1 1 指导老师 指导老师 职称 职称 教授 学生姓名 学号 201 6 班号 2014 09 平时 上机 平时 上机 1010 分 分 计算机使用计算机使用 技能 技能 1010 分 分 课程设计报告课程设计报告 2020 分 分 计算机专业计算机专业 技能 技能 6060 分 分 加分项 不超加分项 不超 过过 5 5 分 分 总分总分 备注 如参加答辩 请答辩老师给出计算机专业技能 备注 如参加答辩 请答辩老师给出计算机专业技能 6060 分 的分数 请指导教分 的分数 请指导教 师给出除计算机专业技能 师给出除计算机专业技能 6060 分 以外的其他分数 分 以外的其他分数 如参加答辩 请答辩老师签字 如参加答辩 请答辩老师签字 主要任务 主要任务 消除相邻的消除相邻的 3 3 个及以上的相同图形个及以上的相同图形 详细功能描述 详细功能描述 界面中的图形 如果相邻的三个 横界面中的图形 如果相邻的三个 横 竖竖 及以上的图形相同 则自动消除 及以上的图形相同 则自动消除 消除后上方图形下移 然后生成随机图形填满界面 用户可以点击消除后上方图形下移 然后生成随机图形填满界面 用户可以点击 2 2 个图形交换 个图形交换 使得交换后的图形满足消除条件 要求在计时时间内完成每次消除 如果计时到使得交换后的图形满足消除条件 要求在计时时间内完成每次消除 如果计时到 没有进行消除操作 则游戏结束 没有进行消除操作 则游戏结束 预期成果或目标 预期成果或目标 软件代码 课程设计报告 软件代码 课程设计报告 指导老师评语 指导老师评语 指导教师签字 指导教师签字 摘 要 对对碰是一款经典的消除类小游戏 不论在 pc 还是在移动端都有着很高的 人气 他的简单操作 美观画面 过关得分都是吸引人的重要手段 而对于这样 一直活跃在人们视线当中的经典游戏 他的核心玩法确实很吸引人 所以我们想 深度发掘这一类对对碰消除游戏的算法与设计思路完成自己对这类游戏基于 C 的 编写与运行 本次的研究对象是基于 C 的对对碰游戏 探讨一个游戏的设计思想和各阶段 制作流程 运用 VS2010 完成这次课程设计 其中需要完成游戏界面的显示 消 除方块的算法 随机图形的产生 自动识别死锁并重置图案 音效开关等功能 关键词 对对碰 关键词 对对碰 C 算法 算法 目 录 目 录 第 1 章 任务完成情况 1 第 2 章 对对碰游戏介绍 2 第 3 章 对对碰 的设计思路与流程 2 第 4 章 对对碰 实验代码 5 第 5 章 对对碰 程序运行截 图 13 第 6 章 结束 语 16 第 7 章 参考文 献 18 第 6 章 参考文献 第 1 章 任务完成情况 本文的核心任务是基于 C 完成对对碰小游戏的编程 以及完成之后的相关测 试 经测试后基本完成游戏图形的生成显示 交换方块操作 方块的消除 生成 随机图形填补等功能 除了游戏本体 还带有生命条显示 即消耗时间 完成一 次消除后增加时间 生命条为 0 时游戏结束 结束之后显示分数 除此之外还有 音效的开关 更换皮肤 刷新 帮助菜单 第 6 章 参考文献 第 2 章 对对碰游戏介绍 对对碰是一款经典的消除类游戏 玩家只要通过点击砖块来使砖块之间互相 还位 连成 3 个以上的砖块来消除得分 在编写对对碰游戏时 最重要的是完成 检测是否有 3 块及以上的砖块以及消除后新增随机砖块 砖块的位置变化等算法 第 3 章 对对碰 的设计流程 选题时因为曾经做过之类的消除类小游戏 希望通过用新的语言 C 完成熟悉 的编程任务加深对这类小游戏的理解和 C 的使用 游戏由堆列的小方格组成 玩家需要连续点击相邻的方块交换位置 如果交 换后横排或竖排有 3 块或 3 块以上的方块相同图案则消去并加分 游戏的界面由 10 10 个小方块组成的 里面储存方块 绘制方块 这里选择 8 种不同的图案 用 Block 定义一个图案 用一个二维数组给不同图案的编号 1 8 编号相同即消除 生命条在每次消除后增加生命 并在得分栏改变分数 生 命条为 0 时结束游戏 显示结束画面 所以这个对对碰游戏需要满足的功能基本包括 开始界面 游戏界面 生命 条 时间 小方块 得分 除此之外 为了有更好的游戏体验 选中 消除的 音效 得分榜 运用 XML 皮肤外观 选中方块的高亮显示 这些都是后面基 本完成后考虑的功能 后面结束之后的再来一局按钮 首先很容易想到利用二维数组储存每个方块和每个方块的图案 像前面所 说的用 1 8 表示 8 种不同的方块图形 当方块消去之后 则 number 数组的值标 记为 0 在整个游戏中 重要的算法实现中包括选择两块图形后的 exchange 算法 检测是否存在 3 块及 3 块以上的方块在同一行或同一列的 check 算法 随机图 形填充的 fill 算法 在进行 exchange 后调用 check 算法 检测是否有符合 规则的方块 在消除方块的最上方产生随机图案 同列的图案依次下移 生命条 增加 积分增加 同时需要判断形成的新的图案是否有可消除的砖块 同时判断 是否有可以消除的砖块 若没有 需要重置图案 因此该游戏分为以下几个类 1 方块图案 Block 类 获取图案 绘制图案 确定每个方块的坐标 图案 绘制选中的图案的轮廓线 2 游戏场景类 GameField 类 用于随机生成并绘制所有游戏场景中的方块图 案 交换方块 检测是否存可消去的方块 方块的消除填充等 3 游戏窗体 Start 类 包括游戏开始界面 游戏面板 一个定时器 帮助菜 单 音效控制等以及后面新加的换主题功能 添加 picturebox 控件分别 作为游戏的开始界面 游戏界面 游戏类图如下 第 6 章 参考文献 第 6 章 参考文献 开始写时 就是按照正常游戏顺序开始写 开始游戏界面之后 确定自己 游戏要完成的功能 生命条 音效开关 以及各种图片素材 除了游戏方 块图案用的小色块 其他图形都从网上搜索 其中重点要说的是否有死锁的算法分析 下面拿行消除举例 1 4 2 X X 6 3 5 第一种情况即上图所示 存在相邻两块相同的图案 则需要检测 1 6 六的 位置的图案是否存在消除的可能性 1 X X 2 第二种情况则是间隔的两块相同图案 检测 1 2 位置的图案是否存在消除 第 6 章 参考文献 的可能性 这种算法同样适用于游戏新加的提示功能 游戏的工作流程图 Y N Y N Y 设计环境 系统 Windows10 编译环境 VS2010 第 4 章 对对碰 关键算法代码 public int check 检测是否同行或列有超过3个一样 for int i 0 i 10 i for int j 0 j 3 该位置之前rowsames个格子的物体都要消 除 for int n 1 n 3 该位置之前rowsames个格子的物体都要消除 for int n 1 n 3 该位置之上的columsames个格子的物体要 消除 第 6 章 参考文献 for int n 1 n 3 该位置之前rowsames个格子的物体都要消除 for int n 1 n ColumSames n rectan2 10 n i 0 for内结束 RowSames 1 ColumSames 1 检测每列有多少个空格 int temp 0 int result 0 总和 for int i 0 i 10 i for int j 0 j 10 j if rectan2 j i 0 temp empty i temp result temp temp 0 reDraw return result 生成填补 public void fill Random rand new Random for int j 0 j 0 for int i 0 i 0 空格之后的所有图片向下移一位 for int n i 1 n 0 n down n j 填充最顶上一格方块 Block tb new Block rand Next 8 1 j 50 0 blocks 0 j tb rectan 0 j tb ImageType rectan2 0 j tb ImageType PlaySound AddScore 重画一下 reDraw 下移某方块对象 参数x y为矩阵坐标 public void down int x int y 7 7 add if x 9 方块下移50像素 blocks x y Location Y 50 int px blocks x y Location X int py blocks x y Location Y blocks x y Location new Point px py 50 blocks x 1 y blocks x y 第 6 章 参考文献 rectan x 1 y rectan x y 7 06 rectan2 x 1 y rectan2 x y 播放声音 public void PlaySound string soundstr if soundSwitch return if sound Stream null 声音同步 return switch soundstr case AddScore 消除一片的声音 sound Stream Resources folder break case Exchange 交换方块的声音 sound Stream Resources exchange break sound Play sound Stream null 重画场景中所有对象 public void reDraw 重画背景 Graphics g Graphics FromImage bufferImage Bitmap bg Resources bg GameField g DrawImage bg 0 0 500 500 画物体 for int i 0 i 10 i for int j 0 j 0 myProcessbar1 Value else gameover 5分钟刷新一次 if timeAll 来模拟 C 代码时 就会发现这 是一个不可能的任务 很多人都有这种感受 直接使用 IDE 自带的功能开发 做起来非常轻松 但 一旦有一种自主的想法时 就很难实现 比如修改软件主题 没有考虑代码量这种问题之所以会出现 是因为微软人多 人家不在乎 在 C 中 文档注释需求书写 xml 但是文档注释却是不能继承的 用户必须手 动为每个函数和重载添加注释 C 的很多常用的工具类因为其使用的局限性 如 菜鸟用了就会出错 而不被公开 而这次的课程设计实际上是有点难度的 所以我查阅了很多资料 从各种 C 编写的小游戏入手 比如扫雷 俄罗斯方块等小游戏 在这个漫长的课程设计过程中 我遇到几个问题 第 6 章 参考文献 1 游戏算法的问题 鼠标选择之后 要确定是否有满足消除的砖块 若没有 则取消交换 若有 则进行 fill 算法 我一开始没有注意 下落的砖块填满消 除砖块的位置 这时也会进行消除 2 用户界面的效果 原先的图案我是直接色块填充 游戏体验就是两种相同 图案就连在一起 产生不好的效果 后来改成在色块旁边加一层边 其次呢 是 在鼠标选择一个图案之后给图案加了个选中的效果 这些都是在编程完成之后进 行游戏体验进行的改进 3 游戏死锁的可能 当生成的随机图案在几轮消除后 可能会产生死锁的情 况 所以需要有算法分析存在死锁的情况并重置图案 这个我觉得是其中比较难 的点 之前的 check 和 fill 算法虽然关键且重要 但是熟悉代码结合循环语句还 是比较容易的 而检查死锁的算法 则需要分为好几种情况 检测好几个位置的 图案 实际上 每一次消除都要进行这个算法 作为计算机专业的学生 这次课设做下来感觉到自己在编程任务的实践中 能力有着些许不足 编几十行经常有各种 bug 编程思路也不是很明确 经常是 做完之后才发现什么地方需要再补些什么 自己在设计方面也应当加把力 努力 思考做出来的产品用户的各方面的需求 如果只是自己考虑的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论