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,是因为该文件的方块格式为我所习惯的顺时针翻转格式, 如果不习惯请自行修改。 
|