1、 C#C#课程实训课程实训报告报告 ( 2013 - 2014 年度第年度第 1 学期学期) 专业专业 软件工程软件工程 学生姓名学生姓名 班级班级 学号学号 指导教师指导教师 完成日期完成日期 C#课程实训报告 目目 录录 目 录. 2 1 设计目的 1 2 设计内容 1 3 实现方法 1 3.1 程序概述 1 3.2 游戏的概要设计 3 3.3 游戏的详细设计及编码 4 3.4 开发环境 33 4 小 结 34 C#课程实训报告 1 C#C#课程实训报告课程实训报告 1 设计目的 本课程设计是在学完教学大纲规定的全部内容、完成所有实践环节的基础上, 旨在深化学生学习的 C#语言课程基本知识
2、,进一步掌握 C#语言程序设计方法,提 高分析问题、解决问题的综合应用能力。 2 设计内容 俄罗斯方块游戏的编制。 3 实现方法 3.1 程序概述 3.1.1 游戏的功能游戏的功能 它的基本功能就是要求玩家先登录窗体输入用户名(ldq)和密码(afafa),如果 正确则登录游戏,如果输错三次则退出游戏。 登录游戏后玩家通过移动或旋转自己窗口内落下的方块,方块在一行堆满后就 可以消掉;如果方块堆积至窗口顶端,则游戏结束。 系统默认设置使用右边的窗口,用光标操作:左箭头左移一格,右箭头右移一 格,上箭头旋转方块,下箭头方块丢下。用户还可以定义自己习惯的按键来操作游 戏。 3.1.2 游戏的预览游戏
3、的预览 游戏运行的登录窗口如图 3-1 所示。 C#语言课程设计 2 图 3-1 登录窗体 游戏运行的主操作界面如图 3-2 所示。 图 3-2 主操作界面 单击 设置 按钮,出现一个对话框,可以设置游戏规则。在操作设置界面中可 以进行键盘设置,还可以进行环境设置,设置游戏的难度。操作界面如图 3-3 所示。 C#课程实训报告 3 图 3-3 操作设置界面 开始级别(默认是一级) ,级别是 1-10,级别越高方块下落速度越快。 3.2 游戏的概要设计 3.2.1 游戏游戏实现方案实现方案 屏幕上有一个 X 列 Y 层的区域,计算机自动产生多重不同形状的方块,并出 现在区域的最顶端;然后每过一个
4、固定时间向下落一层,玩家可以使用键盘控制方 块向三个方向移动和顺(逆)时针旋转 90。不过前提是方块移动和旋转后的位置 是空的,并且碰触不到提前设置好的边界。当方块落到区域底部或者另一个方块之 上是将停止移动。该方块降落后检查每行是否有满行的现象,如果有,这一行全部 取消方块,将上一层的方块重新画到这一层。随后新的方块产生,当新方块无处放 置时,游戏结束。 3.3.2 游戏逻辑设计游戏逻辑设计 首先是定义与游戏相关的数据的存储方法,分为两个主要的部分:一个是当前 的方块,需要保存位置、当前的旋转状态;另一个是屏幕区域的状态,这可以用一 个二维数组来表示。 其次,分析得到按键的含义,做出响应,响
5、应模块: “左” 、 “右” 、 “下” 、 “移 动”和“旋转”几个模块,负责改变当前方块的状态的数据;画方块模块:位置移 C#语言课程设计 4 动后,把方块画到新的位置上;检查模块:在每次改变状态之前,对方块企图占用 的区域进行检查。如果无处可放,则此次移动失败。如果方块到区域底端了,则应 该固定在当前位置, 这可以调用前面的画方块模块来实现, 同时再再产生一个方块。 这样还需要写一个产生方块的模块。每次当方块到底的时候,都需要检查一下是否 有新的层排满了,如果有,则应该消层。这就又需要写两个模块,检车是否排满和 消层。产生新方块时也需要检查其产生的位置,如果这个位置已被占用,则游戏结 束
6、,这需要调用前面的检查模块来实现。 最后检查系统时间,规定每过一个指定时间间隔就调用一次方块下落模块。 3.3 游戏的详细设计及编码 3.3.1 主界面设计编码主界面设计编码 主界面的作用就是显示本游戏所有的功能菜单项,提供游戏的而显示界面。在 本界面中共设计了 5 种控件,通过这些控件,玩家可以方便的控制游戏,各个控件 的名称、作用和类型如表 3-1 所示。 表 3-1 主界面的控件设计 控件类型 控件名称 作用 menustrip 退出 ToolStripMenuItem 退出 打开命令 ToolStripMenuItem 操作控制 打开音乐 ToolStripMenuItem 打开音乐 帮助 ToolStripMenuItem 帮助 panel Panel1 显示游戏中当前所有方块 Panel2 显示要出现的下一个方块 Label Label1 显示级别 Label3 显示块数 Label5 显示行数 Label7 显示手速 Botton Botton1 开始 Botton2 打开游戏设置界面 Botton3 暂停 Windows