俄罗斯方块游戏开发
一.功能结构模块
功能界面共分为5部分:游戏欢迎界面,游戏主窗体,游戏规则界面,按键说明界面,游戏结束界面
业务流程图
二.头文件引用
为了程序更好的运行,程序之中需要引入一些库文件,对程序的一些基本函数进行支持,在引用函数时需要#include命令
/*******头 文 件*******/
#include <stdio.h> //标准输入输出函数库(printf、scanf)
#include <windows.h> //控制dos界面(获取控制台上坐标位置、设置字体颜色)
#include <conio.h> //接收键盘输入输出(kbhit()、getch())
#include <time.h> //用于获得随机数
三.宏定义
宏定义是以#define开头,提供了一种可以替换源代码之中字符串的机制
注意:宏定义并不是C语句,不能在行末加上分号,会引错
/宏 定 义/
#define FrameX 13 //游戏窗口左上角的X轴坐标为13
#define FrameY 3 //游戏窗口左上角的Y轴坐标为13
#define Frame_height 20 //游戏窗口的高度为20
#define Frame_width 18 //游戏窗口的宽度为18
四.定义全局变量
注意:
1)变量根据作用范围可以分为局部变量和全局变量,
2)在一个函数内部定义的变量就是局部变量,它只会在本函数范围内部有效,也就是只在本函数内部才可以使用它,
3)而在函数外部定义的变量就是全局变量,可以为此文件之中所用函数公用,其有效范围是从定义变量的位置开始到本源文件结束
/*******定 义 全 局 变 量 *******/
int i,j,Temp,Temp1,Temp2; //temp,temp1,temp2用于记住和转换方块变量的值
//标记游戏屏幕的图案:2,1,0分别表示该位置为游戏边框、方块、无图案;初始化为无图案
int a[80][80]={0};
int b[4]; //标记4个"口"方块:1表示有方块,0表示无方块
struct Tetris //声明俄罗斯方块的结构体
{
int x; //中心方块的x轴坐标
int y; //中心方块的y轴坐标
int flag; //标记方块类型的序号
int next; //下一个俄罗斯方块类型的序号
int speed; //俄罗斯方块移动的速度
int number; //产生俄罗斯方块的个数
int score; //游戏的分数
int level; //游戏的等级
};
HANDLE hOut; //控制台句柄
五.函数声明
注意:在程序开发时,常常将一些常用功能的功能模块编写成函数,放在公共函数库之中,程序设计人员要善于利用函数,以减少重复编写程序段的工作量
/*******函 数 声 明 *******/
int color(int c); //设置文字颜色
void gotoxy(int x, int y); //光标移到指定位置
void DrwaGameframe(); //绘制游戏边框
void Flag(struct Tetris *); //随机产生方块类型的序号
void MakeTetris(struct Tetris *); //制作俄罗斯方块
void PrintTetris(struct Tetris *); //打印俄罗斯方块
void CleanTetris(struct Tetris *); //清除俄罗斯方块的痕迹
int ifMove(struct Tetris *); //判断是否能移动,返回值为1,能移动,否则,不能移动
void Del_Fullline(struct Tetris *); //判断是否满行,并删除满行的俄罗斯方块
void Gameplay(); //开始游戏
void regulation(); //游戏规则
void explation(); //按键说明
void welcom(); //欢迎界面
void Replay(struct Tetris * tetris); //重新开始游戏
void title(); //欢迎界面上方的标题
void flower(); //欢迎界面上的字符装饰花
void close(); //关闭游戏