Turn.Right.blk文件是自定义的俄罗斯方块数据文件,其中包含了各方块的样式、关系及翻转坐标变换。
文件的头8个字节为数据文件标识信息:
其中包括:
0-2字节:BLK,表示该文件确实是俄罗斯方块的数据文件;
3-6字节:为版本信息。
7字节:为数据文件中包含的俄罗斯方块的个数。
以上为数据文件的头部信息,但现在除了7字节外(即个数)都没有判断。
文件的后续部分为方块结构,C中定义如下:
/*
定义每个方块的结构
*/
#if !defined _BLOCK_H_
#define _BLOCK_H_
#define BLOCK_VERSION &H01000000 //主版本号、辅版本、附加版本、附加2
#define BLOCK_SIZE 6 //存储到文件时占用的字节数
#define BLOCK_HEADER_SIZE 8 //存储文件头信息的大小
struct _Block
{//注意:这些字段对于存储文件来说是有先后之分的。
unsigned int ID:8;
unsigned int NextID:8;
int Width:4; //切忌,因为Width与Height不可能<=0,所以0表示1,比如一个方块高0,宽2,其实表示高1,宽3。
int Height:4;
int OffsetY:4;
int OffsetX:4;
unsigned int Elements; //方块的各位是否为实体
};
typedef _Block BLOCK;
#endif
切忌,因为Width与Height不可能<=0,所以0表示1,比如一个方块高0,宽2,其实表示高1,宽3。
具体文件的示范内容见下图:
该示范中7字节为十六进制13,表示有19个方块,其实该示范中共提供了33个方块(同形状的不同变换也算不同)。之所以文件名叫做Turn.Right.blk,是因为该文件的方块格式为我所习惯的顺时针翻转格式,
如果不习惯请自行修改。