C++俄罗斯方块实验报告(附实验体会)

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

程序设计综合实验

设计文档

惠州学院

HUIZHOU

UNIVERSITY

课程名称:程序设计综合实验姓名:

实验名称:俄罗斯方块学号:

任课教师:专业:计算机科学与技术班级:计算机科学与技术1班

实验时间:第一周至第十二周

实验成绩:

批阅教师签字:

综合实验项目:俄罗斯方块游戏

1、问题需求

(1)游戏等级:游戏分为1-10十个等级,等级越高,方块下落速度越快;

(2)由方向键控制游戏:上键控制方块变形、下键控制方块下移并判断是否有消行、左键控制方块左移、右键控制方块右移;

(3)游戏积分:一次性消的行数越多加的分数越多,当消行每超过30行自动提高一个游戏等级。

2、总体设计:

(1)用数组存放方块

(2)输出地图

(3)在地图里面输出方块

(4)开始游戏

(5)方块的旋转

(6)方块是否能下落

(7)判断方块是否能下落

(8)提示下一个即将下落的方块

(9)控制方块的下落速度

(10)分成10等级,等级越高方块下落得更快

(11)消行处理

(12)游戏结束

3、详细设计设计说明:本程序运行代码如下:

#include

#include

#include

#include "colorConsole.h"

#define SQUARE_COLOR FOREGROUND_RED|

FOREGROUND_GREEN|FOREGROUND_INTENSITY //方块的颜色

#define up 72

#define down 80

#define left 75

#define right 77

#define esc 27

#define MAPW 12 //地图的宽度

#define MAPH 20 //地图的高度

BOOL isavailable(int a[],int x,int y,int w,int h); //判定是否能放下

void turn(int a[][4],int w,int h,int *x,int y); //转动

int * create(); //创建方块

void init(); //初始化工作void drawblocks(int a[],int w,int h,int x,int y,WORD wColors[],int nColors); void clearcache(); //清除键盘缓冲区

void end();

void clearsquare(int *a,int w,int h,int x,int y);

void gameover();

void deletemap(int m[][MAPW],int row,int w,int h); //消除一行

int dx=30,dy=5; //屏幕上的偏移量

int score=0,level=0;

int map[MAPH][MAPW];

int a1[4][4]={{1},{1,1,1}};

int a2[4][4]={{0,1},{1,1,1}};

int a3[4][4]={{1,1},{0,1,1}};

int a4[4][4]={{0,0,1},{1,1,1}};

int a5[4][4]={{0,1,1},{1,1}};

int a6[4][4]={{1,1,1,1}};

int a7[4][4]={{1,1},{1,1}};

int a[4][4];

int main()

{

init();

int *b=NULL;

b=create(); //预创建方块

int q=0;

int sign,blank,x,y;

while(1)

{

for(int i=0;i<4;i++) //复制方块

for(int j=0;j<4;j++)

if(a[i][j]=*(b+i*4+j)) blank=i;

y=1-blank;x=4;

clearsquare(&a[0][0],4,4,13,13);

b=create();

HANDLE handle;

handle=initiate();

WORD wColors[1]={FOREGROUND_RED| FOREGROUND_GREEN|FOREGROUND_INTENSITY };

drawblocks(b,4,4,13,13,wColors,1);

wColors[0]=SQUARE_COLOR;

drawblocks(&a[0][0],4,4,x,y,wColors,1);

clearcache();

char string[5];

wColors[0]=FOREGROUND_RED|

FOREGROUND_GREEN|FOREGROUND_INTENSITY;

textout(handle,26+dx,5+dy,wColors,1,itoa(score,string,10));

textout(handle,26+dx,9+dy,wColors,1,itoa(level,string,10));

sign=1;

while(sign)

{

int delay=0,max_delay=100-10*level; //延迟量

while(delay

{

if(_kbhit()) //用if避免按住键使方块卡住

{

int draw=0;

int key=_getch();

switch (key)

{

case up:

clearsquare(&a[0][0],4,4,x,y);

turn(a,4,4,&x,y);

draw=1;

break;

case down:

相关文档
最新文档