源代码下载地址:http://download.csdn.net/detail/qq_29187355/9855657
1 题目要求
设计一个双人俄罗斯方块游戏
2 功能需求
(1) 实现双人俄罗斯方块
(2) 实现下一个砖块预测功能
(3) 隐藏工具栏、状态栏
(4) 实现难度可以选择
(5) 添加游戏说明菜单 添加作者菜单 添加网址超链接
(6) 实现砖块三维化
(7) 实现总分统计功能,和每步消除所得分数显示
(8) 实现背景音乐播放功能
(9) 暂停功能
(10) 增加了新的方块类
(11) 设置窗口大小,禁用最大化按钮,禁止鼠标拖动改变窗口大小。
3 总体设计
1.矩形框类的设计:
设计CBin类描述Tetris游戏的矩形框,用image的二维数组来描述这个矩形框。设置不同的值显示不同颜色的矩形,若没有砖块则为0。
2.砖块的设计:
设计CBrick抽象类来设计砖块,应用多态性的原理,其他不同类型的砖块类继承CBrick,来设计不同的砖块。
3.砖块在面板中的显示设计:
在视图类中设计并显示砖块。
4 详细设计
CBin类:
函数名称 |
函数说明 |
CBin(unsigned int w, unsigned int h) |
构造函数,用来初始化数据成员 width 和 height ,并为image 分配空间并初始化。 |
~CBin() |
析构函数,删除在构造函数中为 image分配的空间。 |
void getImage(unsigned char** destImage) |
将image 的数据拷贝到 destImage. 你可以假设destImage 指向的空间足够容纳image |
void setImage(unsigned char** srcImage) |
把srcImage 中的数据拷贝到image. 你可以假设srcImage 是一个合法的指针 |
unsigned int removeFullLines() |
检查image ,如果任何一行完全填 满,则删除这一行,并让上面行的 数据下移一行,返回删除的总行数。 |
#include"stdafx.h"
#include "bin.h" //" "从自己编写的头文件中找,<>从系统自带头文件中找.
CBin
CBin::CBin(unsigned int w, unsigned int h)
{
width=w;
height=h;
image = new unsigned char* [height];
for (unsigned int i = 0; i
0; m--)
{
for (j=0; j
CBrick类
设计CBrick抽象类来设计砖块。
CBrick类的成员函数:
virtual int shiftLeft(CBin*bin)=0; //将砖块在游戏的矩形框内左移一位
virtual int shiftRight(CBin* bin)=0; //将砖块在游戏的矩形框内右移一位
virtual int shiftDown(CBin* bin)=0; //将砖块在游戏的矩形框内下移
virtual int rotateClockwise(CBin* bin)=0; //将砖块在游戏的矩形框内顺时针旋转
virtual int checkCollision(CBin* bin)=0; //检查砖块是否冲突
virtual void operator>>(unsigned char**binImage)=0; //重载运算符>>,通过设置映射到游戏矩形的二维数组binImage,设置砖块的颜色,这里假设binimage是一个合适的二维数组。
virtual void putAtTop(int newOrien