俄罗斯方块概要.doc
文本预览下载声明
程序设计实践设计报告
课题名称: 双人俄罗斯方块游戏程序
学生姓名: 陈宸
班 级: 2 0 1 3 2 1 1 1 1 3
班内序号: 12
学 号: 2 0 1 3 21 0 3 75 日 期: 2015.6.13
课题概述
1.1课题目标和主要内容
本实验是在win32控制台下设计并实现双人俄罗斯方块对战的游戏。从文本界面开发的基础知识着手,从一般控制步骤、控制台窗口操作、文本(字符)控制、滚动和移动光标、键盘和鼠标等几个方面讨论控制台窗口届满的编程控制方法;然后讨论文字闪烁、移动等技巧;最后,将上述技术和方法进行封装和设计,再结合双线程相关知识最终完成双人俄罗斯方块游戏的实现。
本实验使用的开发平台为visual studio2012集成开发环境,工程类型为Win32 Console Application,采用的主要工具为C++编程语言。
1.2系统的主要功能
功能框图:
否
是
功能列表及说明:
功能名称 功能说明 双人在同一界面下对战 能在一个窗口下显示两张“map”,双方玩家可以同时进行游戏,看到自己及对方的游戏状况 玩家选择游戏难度 通过获取按键“1”或“2”来确定随机产生的方块形状个数简单的为7中形状复杂的为9中形状 播放背景音乐 游戏开始时音乐自动播放
方块消除,分数更改,对方方块的增加 不论在最后一排还是在中间部分,只要方块填满一排就可以消除;并分数增加;同时对方的最后一排会自动生成一排含有一个空缺的方块(空缺的位置随机)
游戏暂停与恢复 按空格键游戏暂停10秒左右,可以多次按空格键进行更长时间的暂停
游戏计时与输赢评判 游戏开始时自动开始计时,到规定时间则游戏结束,通过双方的分数来进行“win”和“lose”的评判;若在游戏时间内有一方先用完所有空间则另一方胜利 系统设计
2.1 系统总体框架
①设计思路:
再次开始
②系统总体框架:
实现双人对战游戏
2.2系统详细设计
①模块划分图及描述
主要模块:初始化--基本显示函数--方块的显示和擦除--方块旋转
--方块是否能下移--满一行后消行--游戏结束
即遵循了MVC设计模式:
设计Moldel。及工作区和方块的存储结构用来方便的存取数据;
设计View。即如何根据数据显示不同的界面;
设计COntroller。即如何用键盘控制数据的变化。
②类关系图及描述
没有定义类结构,直接是各个功能函数在主函数中根据获取到的不同按键以及游戏的具体情况而被调用。所以这里代替类关系及描述介绍所用到的各功能函数:
Turn--方块转动函数;
IsAvailable--判断能否移动函数;
DrawBlocks--画方块函数;
③程序流程图及描述
(1):双人对战的总体流程:
单个游戏的具体运行流程:
是 否
是
④存储结构、内存分配
各个函数中均使用数组、int整型、char字符型变量;
工作区数据存储:
游戏中划分出两个工作区,这两个区域内方块根据操作进行移动和翻转。用两个两位数组分别保存两个工作区中每个为位置点的信息。
#define MAPW 12 //地图的宽度
#define MAPH 20 //地图的高度
int map[MAPH][MAPW] = {0}; //保存工作区的区域
int map2[MAPH][MAPW] = {0};
数组map及map2表示当前工作区的数据。当工作区中没有任何方块时,map和map2中的每一个位置的值为0;当工作区中有不再移动的方块时,map和map2中有方块田中的位置值为1~7或9,1~7分别代表7种不同颜色和形状的方块,1~9代表9种不同形状的方块,若某一位置
显示全部