火拼俄罗斯毕业设计(论文)(编辑修改稿)内容摘要:

方向,只在 于 注重自身水平和 学习 能力的提高,对自身的经济要求也不高,只要有一台能运行 软件的电脑便可,所以不用考虑到经济问题。 技术可行性 Visual C++ 提供的基础开发库能够满足开发的需求, 2D 游戏图形处理库对资源以及图形的处理。 需要对变量定义、变量初始化、界面初始化、游戏初始化、然后进入游戏、处理游戏过程中的各种操作。 社会可行性 本游戏的开发作为毕业课程设计以巩固先前所学的知识,以个人为单位,仅供个人平常娱乐所用,无须考虑有可能造成的社会影响,不用考虑到法律、版权等的社会因素,所以在这方面是完全可行的。 需求分析 基本需求 游戏者可以通过上下左右键来对游戏进行操作。 可支持单人练习及多人游戏。 同时支持道具的使用,玩家可以互相释放道具来 游戏需求 基础功能需求 游戏方块 随机给出不同的形状(长条形、 Z 字形、反 Z 形、田字形、 7 字形、反 7 形、 T字型)下落填充给定的区域,若填满一条便消掉,记分,当达到一定的分数时,过关,设置三关,每关方块下落的速度不同,若在游戏中各形状填满南华大学 计算机科学与技术 学院毕业 设计( 论文 ) 第 6 页,共 35 页 了给定区域,为输者。 游戏功能要求如下: 游戏形状 (方块 )需求 :良好的方块形状设计,绘制七种常见的基本图形(长条形、 Z 字形、反 Z 形、田字形、 7 字形、反 7 形、 T字型),各个方块要能实现它的变形,可设为顺时针或逆时针变形,一般为逆时针。 键盘处理事件 :方块 下落时,可通过键盘方向键(上、下、左、右键)对该方块进行向上 (变形 ),向下(加速)、向左、向右移动。 显示需求 :当不同的方块填满一行时可以消行,剩余方块向下移动并统计分数。 当达到一定的分数时过关。 设置三关,每关方块下落的速度不同。 局域网联机需求 该游戏需要支持本机 练习; 局域网内多玩家 对战;挑战机器人。 局域网对战时要实时 显示当前所有在线玩家的游戏进度 ,同时还能得到道具互相释放,增加游戏的娱乐性。 软硬件需求 操作系统 Windows98/me/20xx/XP/20xx 内存容量 64MB 显卡要求 8M 声卡要求 支持 DirectX 音效卡 交互工具 键盘 /鼠标 CPU 奔腾 133以上 光驱 8倍速以上 硬盘空间 400MB 显示器 VGA以上显示器 开发软件 Java可视化编程 南华大学 计算机科学与技术 学院毕业 设计( 论文 ) 第 7 页,共 35 页 第四章 详细设计 在完成逻辑 方块的 控制操作 类中定义 成员变 量 2 维指 针( char **m_psGameMaps。 ),标志方块状态,大小由地图的行与列数据决定,为 1表示该方块显示,或者不显示,坐标为向下为 x轴,向右为 y 轴,画形状只需要修改数组中相应元素的状态值即可,二维数组( int m_interFace[74][4]),接触面二维数组,记录 1~ 7种下坠物的 1~ 4种形态的接触面信息,我们把该下坠物的某种形态的 4个方块,有向下接触面则记录该方块在方块数组中的位置,无则为 1标识。 游戏开始时开辟游戏地图数组和颜色标记数组的内存空间,并赋初值 ,出事化相关参数,初始化 各种形状方块的向下的接触面数据。 方块的装载 : 定义一个随机变量 ,然后调用随机函数( rand=(int)(()*7)+1), 所取得的随机数在 1 到 7之间,用这 7 个数字 表示 7中常见的方块,并从 7种方是 否 7 6 5 4 3 2 1 随机抽取一个数 随机数 一字形 Z 字形 反 Z 形 7 字形 反 7形 倒 T形 田字型 游戏是否结束 保存当前方块坐标 显示方块于屏幕上 游戏结束 调用 destroy() 关数初始化 返回开始界面 南华大学 计算机科学与技术 学院毕业 设计( 论文 ) 第 8 页,共 35 页 块中随机抽取 图形。 每一 种方块都是由两个一维数组 (x, y)表示的,其中一个用来保存方 块所在行,另一个数组用来保存方块所在列,这样有利于方块在屏幕上准确而有活动的定位。 所有 7 种图形都是在三行三列的地图中研究后给出的坐标,给出的坐标也是方块在游戏地图中靠最顶行的坐标。 这就好象方块存在于一个三行三列大小的图形中而够成的一张图片。 图片的运动也就是方块的运动,这样,要实现方块的变形,就要在三行三列的图形中定义一个最左上角的基点,方块运动,基点也跟着运动。 基点坐标在加载方块是加载,基点的存储空间在加载每个方块数组的最后定义。 这样使得方块在游戏地图中的每一个地方都可以变形。 也不会因为变形而方块在游戏地图中的变动很厉害,出现瞬移的现象。 图形坐标装载完后,先判断在方块的下一行是否已有方块,如果 有则说明方块以到达游戏地图的顶端,游戏将结束。 没有则先把方块坐标保存,这是为了在方块向下移动的时候在它的后面不会有虚假的方块,因为方块向下运动,记录的是新一行的方块坐标,但旧一行的没有消掉,所以要先旧方块的坐标保存起来,搽掉旧方块再显示方块。 这样也会减少屏幕的闪烁问题 . 处理键盘事件 : 当方块要进行上(变形)、下、左、右变化时,先对方块将要移动到的位置进行判断,判断是否有障碍,有则保持原来的位置不变,没有则 根据所按 的 键执行相关的操作。 再把方块的位置显示在屏幕上。 方块的移动其实也只是对行或列坐标的增减而己。 上 左 右 下 判断按键 图形变化调用RectChange ()方法 1. 判断可移动性 2. 可以则移动 性 再向下移 以则向下移 调用 GameMapsDataSetFull()将发生变化后的方块显示在屏幕上 南华大学 计算机科学与技术 学院毕业 设计( 论文 ) 第 9 页,共 35 页 服务器开启到开始游戏所做的动作: 只有当服务器点击了创建按钮后,客户端才能连接到服务器,不然就是抛出异常,当服务器点击了创建按钮之后,等待客户端的连接,同时为接收到的用户配对一个编号,当编号小于 6 的时候(即当前进入游戏的人数还在限度之内),将将该客户端的 SOCKET 地址保存到一个一维数组中,位置为该玩家的编号。 但游戏开始的时候,将直接关闭连接线程,同时已经开启游戏数据线程,接收跟发送玩家游戏数据。 是 否 是 服务器开启 点击创建按钮 接受客户机的连接 服务器未开始 游戏 提示玩家 ,该机器的 IP,端口为统一端口, 等待玩家连接该机器,创建监听线程 将所有玩家地址信息保存,开启 服务器接收信息的线程 ,关闭服务器等待线程,开始游戏,通过服务器接收发送线程同步所有玩家信息 南华大学 计算机科学与技术 学院毕业 设计( 论文 ) 第 10 页,共 35 页 玩家连接服务器开始游戏: 设计的时候客户端跟游戏端是同一个程序,客户端也可以做服务器端用,只要更改配置文件即可实现。 同时连接的服务器地址也是由配置文件实现。 是 根据服务器提 供的 IP,连接服务器 开启数据线程,接收服务器发送数据,发送自己的游戏数据 连接成功 南华大学 计算机科学与技术 学院毕业 设计( 论文 ) 第 11 页,共 35 页 第五章 游戏的实现 游戏界面 单人游戏效果: 南华大学 计算机科学与技术 学院毕业 设计( 论文 ) 第 12 页,共 35 页 点击创建按钮,创建游戏提示玩家该主机的 IP: 没有客户端加入的时候单人游戏现在实现的效果: 南华大学 计算机科学与技术 学院毕业 设计( 论文 ) 第 13 页,共 35 页 关键代码 下面代码是实现方块下落时怎么确认是否已经到底(到底的意思是:方块中的某一块已经遇到其它方块了或者底部了)。 实现原理:游戏下落的方块总共有 7种,其中每一种都是由四个小方块组成,我们知道将我们游戏的方块活动区域定义一个坐标,就能用数组记录没一种大的方块中小方块在坐标中的位置, //各种形状方块的向下的接触面数据 for (i=0。 i74。 i++) { for (j=0。 j4。 j++) { m_interFace[i][j] = 1。 } } /* 1 */ m_interFace[1][0] = 3。 m_interFace[11][0] = 0。 m_interFace[11][1] = 1。 m_interFace[11][2] = 2。 m_interFace[11][3] = 3。 /* 2 */ m_interFace[2][0] = 1。 m_interFace[2][1] = 3。 /* 3 */ m_interFace[3][0] = 0。 m_interFace[3][1] = 2。 m_interFace[3][2] = 3。 m_interFace[31][0] = 2。 m_interFace[31][1] = 3。 m_interFace[32][0] = 0。 m_interFace[32][1] = 2。 m_interFace[32][2] = 3。 m_interFace[33][0] = 0。 m_interFace[33][1] = 3。 /* 南华大学 计算机科学与技术 学院毕业 设计( 论文 ) 第 14 页,共 35 页 4 */ m_interFace[4][0] = 1。 m_interFace[4][1] = 3。 m_interFace[41][0] = 0。 m_interFace[41][1] = 2。 m_interFace[41][2] = 3。 /* 5 */ m_interFace[5][0] = 1。 m_interFace[5][1] = 3。 m_interFace[51][0] = 0。 m_interFace[51][1] = 2。 m_interFace[51][2] = 3。 /* 6 */ m_interFace[6][0] = 0。 m_interFace[6][1] = 3。 m_interFace[61][0] = 1。 m_interFace[61][1] = 2。 m_interFace[61][2] = 3。 m_interFace[62][0] = 2。 m_interFace[62][1] = 3。 m_interFace[63][0] = 0。 m_interFace[63][1] = 1。 m_interFace[63][2] = 3。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。