俄罗斯方块游戏

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计说明书

课程名称:高级语言程序设计

设计题目:俄罗斯方块游戏

院部:计算机科学与信息工程学院

学生姓名:

学号:

专业班级:物联网工程

指导教师:

2015年6月

课程设计任务书

目录

一前言 (4)

二需求分析 (4)

三概要设计 (5)

四详细设计 (7)

五改进或增加功能模块说明 (8)

六程序测试 (8)

七课程设计总结 (11)

八致谢 (11)

九参考文献 (12)

十源程序 (12)

俄罗斯方块游戏

一前言

C++程序设计牵涉到面向对象程序设计的理论、C++语言的语法以及算法等3个方面的内容,其中每一方面都包含十分丰富的内容,都可以分别单独成论。显然在一个程序中深入、详细地介绍以上3个方面的知识是不可能的,必须把它们有机地结合起来,综合应用。不同的书对此采取不同的写法,侧重点有所不同,各有道理,也各有优缺点,适合于不同的读者。需要在教学实践中检验,取长补短,不断完善。

作者认为:要进行C++程序设计当然需要了解面向对象程序设计的有关概念,但是本课程毕竟不是一门面向对象程序设计的理论课程,在本书中不是抽象地介绍面向对象程序设计的理论,而是在介绍C++语言的特点和应用过程中自然地引出面向对象程序设计的有关概念,通过C++的编程过程理解面向对象程序设计方法。在介绍程序设计过程中,介绍有关的算法,引导读者思考怎样构造一个算法。编写程序的过程就是设计算法的过程。

要用C++编程序,最基本的要求是正确掌握和运用C++。由于C++语法复杂,内容又多,如果对它缺乏系统的了解,将难以真正应用,编出来的程序将会错误百出,编译出错,事倍功半。本书的做法是全面而系统地介绍C++的主要特点和功能,引导读者由简而繁地学会编写C++程序。有了C++编程的初步基础后,再进一步提高,掌握更多更深入的算法。这样的方法可能符合大多数学习者的情况,降低了学习难度。

程序设计是一门实践性很强的课程,只靠听课和看书是学不好的。衡量学习好坏的标准不是“懂不懂”,而是“会不会干”。因此必须强调多编程,多上机实践。考虑到不同学校、不同专业、不同读者对学习C++有不同的要求。

二需求分析

1 要求

(1)用C语言实现程序设计;

(2)定义各个函数分别完成不同功能,如背景设计,判断等;

(3)画出查询模块的流程图;

(4)系统的各个功能用函数调用的形式实现;

(5)界面友好(良好的人机互交),程序要有注释。

2 任务

(1)定义各类头文件,变量及宏定义;

(2)图形模块,设计出俄罗斯方块背景界面;

(3)设定玩家操作模块和胜负判断模块;

(4)画出部分模块的流程图;

(5)编写代码;

(6)程序分析与调试。

3 运行环境

(1)WINDOWS7/8/2000/XP系统

(2)TurboC2.0编译环境

4 开发工具

C++

三概要设计

3.1 模块组成图

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

图3-1 功能模块图

2 查询函数流程图

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

图3-2 系统流程图

四详细设计

在程序的开头部分定义要用到的头文件,以及各种常量如设定棋盘大小,设定游戏模式及如何执行。代码如下。

bool rotate(sCord *lpsCord,int rType,int rNumber,bool firstRotate);

void getRandom();//初始化方格形状

void getNext(sCord *targ,const sCord* sur);//取出下一个方块

void draw();//绘出方格

void start();//开始游戏

bool downAble();//能否下落

bool leftAble();//能否左移

bool rightAble();//能否右移

bool disRows(HWND hwnd);//判断能否消行

五改进或增加功能模块说明

5.1游戏界面

游戏界面采用WndClass函数编写,代码如下。

WNDCLASS wndclass;

wndclass.style=CS_HREDRAW|CS_VREDRAW;//|~(WS_MINIMIZEBOX|WS_MAXIMIZEBO X) ;

wndclass.lpfnWndProc=WndProc;

wndclass.cbClsExtra=0;

wndclass.cbWndExtra=0;

wndclass.hInstance=hInstance;

wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);

wndclass.hCursor = LoadCursor (NULL, IDC_ARROW);

wndclass.hbrBackground= (HBRUSH)GetStockObject (WHITE_BRUSH);// CreateSolidBrush(RGB(195,195,237));

wndclass.lpszMenuName= NULL;

wndclass.lpszClassName= szAppName;

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

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

5.2生成方块

本程序中生成的方块有七种形状,在程序运行生成方块时,调k=rand()%KINDS+1;语句,确定当前要显示的是哪一个方块形状。而在实际运行中,第一次需要调用两次生成方块函数getRandom(),将先产生的赋给游戏当前方

相关文档
最新文档