ImageVerifierCode 换一换
格式:DOC , 页数:62 ,大小:418.02KB ,
资源ID:854926      下载积分:20 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 微信支付   
验证码:   换一换

加入VIP,免费下载资源
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.wodocx.com/d-854926.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(俄罗斯方块游戏设计课程论文.doc)为本站会员(精***)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(发送邮件至2622162128@qq.com或直接QQ联系客服),我们立即给予删除!

俄罗斯方块游戏设计课程论文.doc

1、俄罗斯方块游戏的设计与实现目 录一、综合训练目的与要求11-1 训练目的11-2 训练要求1二、综合训练任务12-1 训练任务12-2 任务描述1三、总体设计23-1 运行环境23-2 游戏的总体设计思路:23-3 游戏功能图:23-4 游戏流程图33-5 类的关系图3四、详细设计说明34-1 游戏的开始,结束,退出34-1-1、游戏的开始34-1-2 游戏的退出44-2 形状的随机产生44-2-1 形状的表示:44-2-2 形状的随机产生44-2-3 形状随机旋转n( n 开始按钮时,游戏开始进行。 首先初始化游戏:调用CRussia类对象的中m_russia.InitGame()操作,然后

2、设置游戏的默认等级,游戏状态,游戏得分等;M_russia.InitGame()中的主要设置如下:m_board.ResetSize(width, height);m_currentShape.CreateRandomShape();m_nextShape.CreateRandomShape();InitShapePos();m_hasShape = true;m_score = 0;m_status = RS_NORMAL;其中界面实现是菜单操作,菜单项和响应事件完成。 ID_START-开始-OnStart()4-1-2 游戏的退出 当点击界面中的游戏退出按钮时,出发OnQuit()函数,

3、退出游戏整个界面。OnQuit()函数给系统发送窗口关闭的消息,用系统将窗口关闭。SendMessage(WM_CLOSE);4-2 形状的随机产生4-2-1 形状的表示:形状类封装了矩阵类对象,形状的旋转主要通过矩阵的旋转来完成,因此形状类中主要完成7种形状在矩阵上的表示,其用来存储矩阵的数据结构时数组,我们用整型数0 和 1 来表示矩阵中方块的无和有,这样,7种形状即可表示如下:0100111000000000反T型1111000000000000直线型1100011000000000Z型0011011000000000反Z型0001000100110000反L型1000100011000

4、000L型1100110000000000正方形图4-2-1 形状在矩阵中的表示4-2-2 形状的随机产生 调用系统的随即数产生函数random()*6,产生06这七个随机数,分别对应上述七种形状,然后用switch语句随机选择形状中的任意一个,即可完成形状的随机产生。4-2-3 形状随机旋转n( n 1000#pragma once#endif / _MSC_VER 1000/以上几行都是在类视图下,用new class自动生成的代码#ifndef NULL#define NULL 0#endifclass CMatrix public:CMatrix();CMatrix(int width

5、, int height);CMatrix(int width, int height, int initValue);virtual CMatrix();void ResetSize(int width, int height); /重置矩阵的宽和高void SetAll(int value); /设置所有单元格的值void SetAt(int row, int col, int value); /设置指定单元格的值int GetWidth() const; /const主要是指明该函数不修改类中的非静态成员的值int GetHeight() const;int GetAt(int row,

6、 int col) const;bool Rotate(bool clockWise = true);/矩阵的旋转int* operator(int row) const; /重载, 返回矩阵的首指针CMatrix& operator=(CMatrix &srcMat); /重载=, 以便矩阵的直接复制protected:int *m_pData; /矩阵的首指针int m_width; /矩阵的宽int m_height; /矩阵的高protected:void ReleaseData(); /清楚矩阵中的所有数据void InitData(int width, int height); /

7、void SetData(int initValue);static void MemCopy(int *dest, int *src, int len);#endif / !defined(AFX_MATRIX_H_D99244D0_ACB9_4087_A4AF_DB379A4DC7BE_INCLUDED_)8-1-2 CMatrix类的定义/ Matrix.cpp: implementation of the CMatrix class./#include stdafx.h#include Matrix.h/ Construction/Destruction/CMatrix:CMatrix

8、()m_pData = NULL;m_width = m_height = 0;CMatrix:CMatrix(int width, int height)InitData(width, height);CMatrix:CMatrix(int width, int height, int initValue)InitData(width, height);SetData(initValue);void CMatrix:ResetSize(int width, int height)InitData(width, height);void CMatrix:SetAll(int value)Set

9、Data(value);void CMatrix:SetAt(int row, int col, int value)if (row = m_height | col = m_width)return;*(m_pData + row * m_width + col) = value;int CMatrix:GetWidth() constreturn m_width;int CMatrix:GetHeight() constreturn m_height;int CMatrix:GetAt(int row, int col) constif (row = m_height | col = m_

10、width)return 0;return *(m_pData + row * m_width + col);bool CMatrix:Rotate(bool clockWise)int i, j;int *pNew = new intm_width * m_height; /申请新矩阵if (pNew = NULL)return false;if (clockWise)/当clockwise为true时,逆时针旋转for (i=0;im_height;i+)for (j=0;jm_width;j+)*(pNew + j * m_height + (m_height - i - 1) = *(

11、m_pData + i * m_width + j);else/当clockwise为false时,逆时针旋转for (i=0;im_height;i+)for (j=0;jm_width;j+)*(pNew + (m_width - j - 1) * m_height + i) = *(m_pData + i * m_width + j);ReleaseData();m_pData = pNew;m_width = i;m_height = j;return true;int* CMatrix:operator(int row) constif (row = m_height)return

12、NULL;return (m_pData + row * m_width);CMatrix& CMatrix:operator=(CMatrix &srcMat)ReleaseData();InitData(srcMat.m_width, srcMat.m_height);CMatrix:MemCopy(m_pData, srcMat.m_pData, m_width * m_height);return *this;CMatrix:CMatrix()ReleaseData();void CMatrix:ReleaseData()if (m_pData != NULL)delete m_pDa

13、ta;m_pData = NULL;m_width = m_height = 0;void CMatrix:InitData(int width, int height)ReleaseData();if (width = 0 | height = 0)return;m_pData = new intwidth * height;if (m_pData != NULL)m_width = width;m_height = height;void CMatrix:SetData(int initValue)int i, j;for (i=0;im_height;i+)for (j=0;jm_wid

14、th;j+)*(m_pData + i * m_width + j) = initValue;void CMatrix:MemCopy(int *dest, int *src, int len)if (dest = NULL | src = NULL)return;int i;for (i=0;i 1000#pragma once#endif / _MSC_VER 1000/(以上代码都是在类视图中,用new class新建类时自动生成的代码)#include Matrix.h#include common.hclass CShape public:CShape();virtual CShap

15、e();void CreateRandomShape(int posX = 0, int posY = 0); /随机产生七个形状中的任一个void SetPos(int posX, int posY); /设置形状左上角的坐标(posX,posY)void Rotate(); /形状的旋转void CancelRotate(); /取消旋转,主要用在旋转时越界的情况。void MoveDown(); /下移void MoveUp(); /上移,主要用在下一过程中碰到地盘的情况void MoveLeft(); /左移void MoveRight(); /右移int GetShapeType()

16、 const; /获取形状的类型(类型用整型的0-6表示)POINT GetPos() const; /得到形状左上角的坐标(形状所在的矩阵在地盘上的坐标)int GetWidth() const; /得到形状的宽度int GetHeight() const; /得到形状的高度const int* operator(int row) const; /重载操作符,便于获取矩阵中单元格的值CShape& operator=(CShape& srcShape); /重载操作符=,以便形状直接拷贝,主要用在 /当前形状固定时,把下一个形状赋给当前 /形状;protected:CMatrix m_mat

17、; /封装的矩阵类对象;int m_type; /用以标明当前方块的形状bool m_needJump; /除去正方形的方块外,剩下的方块旋转时有的会有4种形状,/有的只有2种,因此可用bool型标明;int m_posX; /当前方块所在的矩阵m_mat在底盘上的横坐标;int m_posY; /当前方块所在的矩阵m_mat在底盘上的横坐标;protected:void RandCreate(); /随机产生一个方块;void RandRotate(); /随机将方块选装n(n 4)次;void RotateShape(bool clockwise); /旋转方块;主要是通过其封装的矩阵的旋转实现的;#endif / !defined(AFX_SHAPE_H_E8F2190E_01BF_4F92_B29D_27412A279F1D_INCLUDED_)8-2-2 CShape类的定义/ Shape.cpp: implementation of the CShape class./CShape类中功能的实现/#include stdafx.h#include Shape.h#include stdlib.h#include time.h/ Construction/Destruction/

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922