




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C 语语言言课课程程设设计计 报报告告 设计题目 设计题目 俄罗斯方块游戏设计 院院 系 系 班班 级 级 学学 号 号 姓姓 名 名 指导教师 指导教师 设计地点 设计地点 开课时间 开课时间 4 学学生生姓姓名名 成成绩绩 评评语语 指指导导教教师师 签名 签名 年年 月月 日日 5 目目录录 1 1 设设计计目目的的和和任任务务 1 1 11 1 目的目的 1 1 21 2 任务 任务 1 2 2 开开发发环环境境 1 2 2 1 1 硬硬件件环环境境 1 2 2 2 2 软软件件环环境境 1 3 3 设计题目设计题目 2 3 3 1 1 题题目目名名称称 2 3 3 2 2 题题目目详详细细描描述述 2 3 3 3 3 功功能能要要求求 2 4 4 相关技术以及知识点相关技术以及知识点 3 4 14 1 编写编写 BLOCKBLOCK 类 类 3 4 4 2 2 P PA AT TH HG GR RA AD DI IE EN NT TB BR RU US SH H 类类 3 4 4 3 3 R RA AN ND DO OM M 类类 3 4 4 4 4 G GD DI I 图图形形处处理理 3 5 设设计计与与实实现现 4 5 5 1 1 设设计计流流程程图图 4 5 5 2 2 游游戏戏主主体体界界面面 4 5 5 3 3 游游戏戏图图形形界界面面 11 5 5 4 4 图图形形的的移移动动与与消消行行 13 5 5 5 5 得得分分的的实实现现 15 6 6 总总结结 16 7 7 参参考考资资料料 16 移动计算技术与应用 课程设计报告 1 1 1 设设计计目目的的和和任任务务 1 1 目的 在现今电子信息高速发展的时代 电子游戏已深入人们的日常生活 成为老少皆宜的娱乐方 式 俄罗斯方块 是一款风靡全球的游戏 最初是由苏联人制作的 规则简单 容易上手 且游 戏过程变化无穷 可以让玩家充分感受游戏中的乐趣 在游戏设计方面 俄罗斯方块是游戏编程的入门项目 因为它可以检验编辑人员对开发 语言 环境和基本数据结构知识熟练程度 1 2 任务 使用 C C 语言编写一个俄罗斯方块游戏系统 要求程序运行后有一个图形用户界面 并具备下 面几个功能 1 实现各种方块的生产 包括形状和颜色等信息 2 实现各个方块的上下左右移动和旋转的功能 3 实现消行的功能 4 实现开始 暂停 结束等功能 2 2 开开发发环环境境 2 1 硬件环境 服务器 CPU PIII 500 以上 内存 256M 客户机 CPU P200MMX 以上 内存 32M 以上 2 2 软件环境 Visual Studio2005 net 2 0 以上以上 2 3 3 设计题目设计题目 3 1 题目名称 俄罗斯方块游戏系统 3 2 题目详细描述 使用 C C 语言编写一个俄罗斯方块游戏系统 要求程序运行后有一个图形用户界面 实现各种 方块的生产 包括形状和颜色等信息 完成左右下旋转的功能 在消行的同时分数加 1 在点击 暂停或者按下空格的时候暂停或开始游戏 最后结束游戏 3 3 功能要求 功能 1 实现各种方块的生产 包括形状和颜色等信息 2 实现各个方块的上下左右移动和旋转的功能 3 实现消行的功能 4 实现时间和得分的统计功能 5 实现开始 暂停 结束等功能 要求 1 编写程序要严格按照 C C 编程规范进行代码编写 2 必须按照个体软件的过程 编写有关的文档 3 按照老师的要求 每个人必须独立完成 4 按照实训的时间安排进行实训 实训结束后提交有关的表格与文档 3 4 4 相关技术以及知识点相关技术以及知识点 4 1 编写 Block 类 在游戏项目规范说明书所创建的类图中定义了 Block 类 现在可以把它编写为最终的类接口 形式 包括属性的数据类型以及方法所使用参数的数据类型 每个确定的方块都与正方形的某种特定排列方式相对应 因此可以考虑 Block 类的 3 个新成 员 BlockType 属性 方块类型的枚举集合 构造函数 用以在期望的位置 使用期望的色彩创建 每个正方形 为了给玩家一个清楚的视觉提示 每种类型的方块颜色应该是固定的 因此创建一 个数组来保存每种类型方块的前景色和背景色是一种较好的想法 4 2 PathGradientBrush 类 封装 Brush 对象 它通过渐变填充 GraphicsPath 对象的内部 彩色渐变是从路径的中点到路径的外边界边缘的平滑的彩色渐变 混合因子 位置和样式影 响渐变起始和结束的位置 并且影响渐变变化的速度 路径渐变画笔不遵循用于执行绘制操作的 Graphics 对象的 SmoothingMode 属性 无论是否 用平滑模式 用 PathGradientBrush 对象填充的区域都以同样的方式呈现 4 3 Random 类 伪随机数是以相同的概率从一组有限的数字中选取的 所选数字并不具有完全的随机性 因 为它们是用一种确定的数学算法选择的 但是从实用的角度而言 其随机程度已足够了 Random 类的当前实现基于 Donald E Knuth 的减法随机数生成器算法 随机数的生成是从种子值开始 如果反复使用同一个种子 就会生成相同的数字系列 产生 不同序列的一种方法是使种子值与时间相关 从而对于 Random 的每个新实例 都会产生不同的 系列 默认情况下 Random 类的无参数构造函数使用系统时钟生成其种子值 而参数化构造函数 可根据当前时间的计时周期数采用 Int32 值 但是 因为时钟的分辨率有限 所以 如果使用无 参数构造函数连续创建不同的 Random 对象 就会创建生成相同随机数序列的随机数生成器 通过创建单个而不是多个 Random 对象可以避免此问题 若要提高性能 请创建一个随时间推移能生成多个随机数的 Random 对象 而不要反复新建 会生成同一个随机数的 Random 对象 4 4 GDI 图形处理 GDI 提供了一个抽象层 隐藏了不同视频卡之间的区别 这样就可以调用 Windows API 函数 完成指定的任务了 GDI 还在内部指出在运行特定的代码时 如果让客户机的视频卡完成要绘制 的图形 GDI 还可以完成其他任务 大多数计算机都有多个显示设备 监视器 打印机 GDI 成 功的使应用程序所使用的打印机看起来与屏幕一样 如果要打印某些东西 而不是显示他们 只 需告诉系统输出设备是打印机 再用相同的方式调用相同的 Windows API 函数可以 4 5 设设计计与与实实现现 5 1 设计流程图 图 5 1 1 5 2 游戏主体界面 图 5 2 1 5 主界面关键部分代码 namespace 俄罗斯方块 public partial class Form1 Form public Form1 InitializeComponent static public int mainField static public int row 20 数组 mainField 的行 static public int line 15 数组 mainField 的列 private Block currentBlock 主界面中活动的方块 private Block nextBlock 副界面中的方块 private int level 1 private int score 0 菜单栏中 NewGame private void menuItemNew Click object sender EventArgs e NewGame 菜单栏中 Start 在暂停之后使用 继续进行游戏 private void menuItemStart Click object sender EventArgs e timerInterval Start menuItemStart Enabled false menuItemPause Enabled true btnPause Text Pause 6 菜单栏中 Pause 用于暂停游戏 private void menuItemPause Click object sender EventArgs e timerInterval Stop menuItemStart Enabled true menuItemPause Enabled false btnPause Text Start 菜单栏中 Exit 用于推出游戏 private void menuItemExit Click object sender EventArgs e this Close Application Exit 菜单栏中 beginner model private void menuItemBeginer Click object sender EventArgs e NewGame level 1 timerInterval Interval 500 level labeLevelVisual Text Convert ToString level 菜单栏中 normal model private void menuItemNormal Click object sender EventArgs e NewGame level 2 timerInterval Interval 500 level labeLevelVisual Text Convert ToString level 7 菜单栏中 insane model private void menuItemInsane Click object sender EventArgs e NewGame level 3 timerInterval Interval 500 level labeLevelVisual Text Convert ToString level private void menuItemOnMusic Click object sender EventArgs e private void menuItemOffMusic Click object sender EventArgs e 菜单栏中的 config 选项 private void menuItemConfig Click object sender EventArgs e if GameIsOver timerInterval Stop MessageBox Show Left Arrow n nRight Arrow n nDown Arrow n nRotate Arrow timerInterval Start else MessageBox Show Left Arrow n nRight Arrow n nDown Arrow n nRotate Arrow 8 菜单栏中的 version 选项 private void picBoxMainField Click object sender EventArgs e picBoxMainField Focus focus private void picBoxMainField Paint object sender PaintEventArgs e 若没有此句 键盘焦点不能移到 picBoxMainField 中 picBoxMainField Focus private void labeLevelVisual Click object sender EventArgs e private void labScoreVisual Click object sender EventArgs e 主界面中的 Pause 按钮 private void btnPause Click object sender EventArgs e 按钮 btnPause 点击 Pause 后显示 Start if btnPause Text Pause timerInterval Stop btnPause Text Start menuItemPause Enabled false 9 menuItemStart Enabled true 按钮 btnPause 点击 Start 后显示 Pause else if btnPause Text Start timerInterval Start btnPause Text Pause menuItemPause Enabled true menuItemStart Enabled false 主界面中的 NewGame 按钮 private void btnNewGame Click object sender EventArgs e NewGame 主界面中的 Exit 按钮 private void btnExit Click object sender EventArgs e this Close Application Exit Null private void Form1 Load object sender EventArgs e Null private void Form1 KeyDown object sender KeyEventArgs e 10 显示 newGame 这里是必须的 private void Form1 Shown object sender EventArgs e NewGame 新游戏 private void NewGame mainField new int row line 申请一个新的数组 存储整个界面方块信 息 for int i 0 i row i for int j 0 j line j mainField i j 0 level 1 游戏下落速度等级 score 0 消去行数 timerInterval Interval 500 level 时间间隔随着等级增加而减少 labeLevelVisual Text level ToString 将等级显示在 label 上 labScoreVisual Text score ToString 将分数显示再 label 上 menuItemNew Enabled false 菜单按钮 new game 不能点击 menuItemPause Enabled true 菜单按钮 Pause 可以点击 btnPause Text Pause btnPause Enabled true 主界面按钮 pause 可以点击 timerInterval Start 计时器开始计时 11 this Refresh 刷新界面 currentBlock new Block currentBlock MoveToCenterScreen 为了美观 将方块出现的位置移动 到中间 do nextBlock new Block while nextBlock Type currentBlock Type 防止主界面中与副界面中 出现的 block 相同 先后绘制副主界面中的 block nextBlock DrawBlock picBoxSubField CreateGraphics currentBlock DrawBlock picBoxMainField CreateGraphics 5 3 游戏图形界面 一共七个图形 图 5 3 1 图形部分设计代码 此类代码太多 文档中只列举其中一个 private class Block private Brick Shape private Point left private Point right private Point top private Point bottom private int type public int Type 12 get return type set type value public Block Shape new Brick 4 4 for int i 0 i 4 i for int j 0 j 4 j Shape i j new Brick Random RandType new Random type RandType Next 1 20 switch type case 1 Shape 0 0 X 0 Shape 0 0 Y 0 for int i 0 i 4 i for int j 0 j 19 canDown false if bottom Y 0 i for int j 3 j 0 j if Shape i j Filled true if mainField Shape i j Y 1 Shape i j X 1 canDown false return canDown 14 消行方面代码示例 private void ClearLine int lines 0 同时消失的行数 int bricks 同一行中的砖块 brick 数 for int i row 1 i 0 i bricks 0 for int j line 1 j 0 j if mainField i j 1 bricks if bricks line 如果同一行中的砖块 brick 个数达到了行数 line 即该行满行 lines for int j line 1 j 0 j mainField i j 0 将该行全部赋值为 0 即消除该行 for int m i m 0 m for int j line 1 j 0 j mainField m j mainField m 1 j 将该行以上各行 均向下一行移动一行 这里用赋值完成 i 检查下一行 15 5 5 得分的实现 if lines 1 如果同时消除 1 行 得 1 分 score 1 if lines 2 如果同时消除 2 行 得 3 分 score 3 if lines 3 如果同时消除 3 行 得 5 分 sc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国际贸易大客户货物进出口代理合同
- 交通运输机械伤害事故调查报告及责任认定合同
- 2025公务员社区面试题及答案
- 校验码标准化研究-洞察及研究
- 音乐专业加试题库及答案
- 戏曲专业考博试题及答案
- 文书专业面试题目及答案
- 胆囊结石患者的护理
- 春的教学课件
- 员工团队精神培训
- 电梯安全总监培训记录课件
- 2025四川省水电投资经营集团有限公司所属电力公司员工招聘6人备考模拟试题及答案解析
- 房地产中介居间服务合同5篇
- 童话中的英雄勇敢的小矮人作文10篇范文
- 人员外出安全培训内容课件
- 小学美术剪纸社团教学活动计划
- 2025年法官入额遴选政治理论真题及答案
- 护理系毕业论文2000
- 空调科安全培训课件
- 2025征兵考试题库与答案
- 2025-2026学年浙教版小学劳动技术一年级上册教学计划及进度表
评论
0/150
提交评论