湘潭大学软件设计实践_第1页
湘潭大学软件设计实践_第2页
湘潭大学软件设计实践_第3页
湘潭大学软件设计实践_第4页
湘潭大学软件设计实践_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

本文格式为Word版,下载可任意编辑——湘潭大学软件设计实践软件设计实践报告

单位:信息工程学院班级:计算机二班学号:姓名:韩林波任课教师:周维

湘潭大学2023年9月

软件设计实践项目名称:俄罗斯方块

一、项目概述

1、

概述

作为家喻户晓的游戏,俄罗斯方块可谓是大名鼎鼎。不过,尽管它看起来比较简单,实际上对于我们新手而言确实是一个具有挑战性的项目。我们准备先简单的理解下俄罗斯游戏开发的大约算法和需要的知识,然后把这些知识组合开发俄罗斯方块。基本上实现俄罗斯方块游戏的控制和操作。并使用windowsIDE搭建一个完整的windows应用程序。通过这个项目,提高自身的动手能力。

2、目的和用途

我们在实际动手过程中,将C++课程中所学的概念、理论和方法加以运用,依照C++程序设计的基本步骤,设计出了一个适当规模的程序来实现设计课程内容中的全部功能;设计了主控模块程序.对给出的程序源代码给出了各部分的详细解释.自己根据能力及需要添加相应功能模块,加强模拟系统功能。完整的项目内容也加强了我在课堂中的理论学习,为实习工作打下了基础。

3、

需求说明

利用MicrosoftVisualstdio2023编写一个windows窗口应用程序下的俄罗斯方块游戏。

要求:

(1)利用面向对象的方法编写。(2)能够记录游戏得分。

(3)俄罗斯方块的多种类和旋转操作(4)信息提醒时显示颜色变化。(5)暂停和重新开始

4、环境要求

本程序采用MicrosoftVisualstdio2023的专业版本进行编译。MicrosoftVisualstdio2023是Microsoft公司推出的基于Windows操作系统的可视化C++编程工具,尽管Microsoft公司推出了.NET平台的集成开发环境,但由于其良好的界面和可操作性,加上支持标准C/C++规范,有相当多的编程人员使用MicrosoftVisualstdio2023进行应用系统的开发。

关于稳定性,经测试,本程序可以在windows操作系统中稳定运行,较为稳定。

VC++是由Microsoft公司制作,基于WINDOWS环境的一款编程软件。由于WINDOWS操作系统比起MS-DOS操作系统优越了大量。作为与之相搭配的编程软件自然也是功能十分强大,其最大的特点也就是可视化。不过在提供可视化的编程方式的同时,它采用了面向对象的程序设计方法,同传统的结构化程序设计方法相比,缩短了软件开发的周期,提高了软件的开发效率,使程序员可以更好地理解和管理巨大且繁杂的程序。

VC++中还集成了大量的最新技术,如ActiveX,COM等技术适合开发大型

工程,这是相对于VB的一个优势。它的兼容性较好,还为用户提供了极为丰富的文档和范例。关于VC的参考资料也十分多,程序开发人员可以紧紧地把握住软件开发技术发展的方向,开发出功能强大的应用程序。

二、系统分析与设计

1、

系统分析

根据分析,俄罗斯方块这个程序一共要实现如下几个功能,开始游戏、游戏的暂停\\继续、游戏控制和退出游戏。其中游戏控制最为主要和重要,它控制着整个游戏的画面和有关数据的操作,是游戏的核心部分。暂停和退出功能做成一体,在退出的提醒下不做任何操作即可实现暂停的功能。程序结构如图。

2、

系统设计

根据分析后的程序结构图设计出相应的流程图。俄罗斯方块的内容主要包括游戏开始,画背景和边框,显示分数等级和下一个方块的预览图;根据速度没隔一定时间方块自动下落,当有按键操作时,根据相应按键执行动作,每次动作前要判断是否动作可以执行。下落方块满一行时,消去该行,根据消去行数得到相应分数。分数达到一定程度,等级提升,速度加快。同时可以响应Esc按键,提醒是否退出程序。如下图。

3、模块/函数设计

根据程序的结构,将俄罗斯方块需要实现的功能细化为相应的类成员函数。程序有三个类,一个Block类,作为程序的元素块组成其他元素。一个MyMap类,用于整个俄罗斯方块的地图相关操作。一个Manage类,用于整个游戏的相关操作。

Block类设计声明

classCBlock{public:};

MAP类设计声明(MyMap类)classCMyMap{public:

BLOCK_POSintint

m_NextblockDate[BLOCK_NUM];m_NextblockType;m_NextblockChangeType;

CBlock(void);~CBlock(void);voidinitBlock();

void_initNextBlock();//初始化下一个方块voidSetBlockMove(boolisLeft);//方块移动voidSetBlockDown();

voidSetBlockChange();//方块坐标变化

BLOCK_POS*GetBlockHead(){returnm_blockDate;}intGetBlockType(){returnm_blockType;}

intGetNextBlockType(){returnm_NextblockType;}intGetBlockChangeType(){returnm_blockChangeType;}BLOCK_POS*GetNextBlockHead(){returnm_NextblockDate;}BLOCK_POSintint

m_blockDate[BLOCK_NUM];m_blockType;m_blockChangeType;

public:

private:};

CMyMap(void);~CMyMap(void);

voidinitMap();//初始化地图voidDrawMap(HDChdc);

//绘制窗口地图

voidSetMapVal(introw,intcol,intval);voidSetMinMapVal(introw,intcol,intval);

intGetMapVal(introw,intcol){returnm_mapDate[row][col];}intGetNum();

boolIsOver();//游戏是否终止

voidSetBlockColor(inttype);//地图块颜色voidSetNextBlockColor(inttype);//下一个板块颜色intintRECT

m_mapDate[MAP_ROW][MAP_COL];

m_NextMapDate[BLOCK_NUM][BLOCK_NUM];m_FillRect;

//地图大小行列

private:

private:

HBRUSHm_BlockHr;HBRUSHm_FrameHr;HBRUSHm_RunBlockHr;HBRUSHm_MapHr;HBRUSHm_NextBlockHr;

Manager类设计声明(Manager类)classCManage{public:

CManage(HDChdc);~CManage(void);voidinitGame();

//初始化游戏//更新重新绘制游戏

voidUpdateGame();

voidDrawGame(HDChdc);//绘制游戏

voidMyHandleMessage(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMlParam);voidaddGameSpeed();//增加游戏速度intgetPause();

//是否暂停游戏

//暂停游戏//获取游戏分数

voidsetPause(intn);intgetplayNum();

voidupdateScoreList(ints);//更新游戏分数HDC

m_BuffDc;m_BuffBitmap;*m_pMap;*m_pBlock;

private:

HBITMAPCMyMapCBlock

private:

};

floatcharintint

m_GameSpeed;m_Key;

m_PlayNum;pause;//暂停标志

三、系统实现

1、

关键模块/函数的实现

A游戏界面

俄罗斯方块的游戏界面包括游戏区域边框、下落方块绘制、右部计分和预览图显示等。

游戏区域边框的绘制比较简单,循环中确定光标的位置输出特定字符,即可完成边框绘制。游戏区方块的绘制,循环从数据数组中依次读出数据,根据读到的数据显示“□〞,最终组成方块的形状,完成方块的绘制。计分和预览图部分先画出一个矩形区域,然后控制光标

温馨提示

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

评论

0/150

提交评论