/* dwgame.c */ #include "global.h" #include #include #include "dwgame.h" #include "color.h" #include "game.h" /* рисунок фона 1 (16,16) */ static const UCHAR pBackGround0[] = { 1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1, /* 1 */ 1,1,1,0,0,1,1,1,1,1,0,0,1,1,1,1, /* 2 */ 1,0,0,1,1,1,1,1,1,1,1,1,0,0,1,1, /* 3 */ 0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1, /* 4 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0, /* 5 */ 0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1, /* 6 */ 1,0,0,1,1,1,1,1,1,1,1,1,0,0,1,1, /* 7 */ 1,1,1,0,0,1,1,1,1,1,0,0,1,1,1,1, /* 8 */ 1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1, /* 9 */ 1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1, /* 10 */ 1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1, /* 11 */ 1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1, /* 12 */ 1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1, /* 13 */ 1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1, /* 14 */ 1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1, /* 15 */ 1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1 /* 16 */ }; /* рисунок фона 2 (16,16) */ static const UCHAR pBackGround1[] = { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0, /* 1 */ 1,0,1,1,1,0,1,1,1,0,1,1,1,0,1,0, /* 2 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0, /* 3 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0, /* 4 */ 1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,0, /* 5 */ 1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,0, /* 6 */ 1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,0, /* 7 */ 1,0,1,1,1,0,1,1,1,1,1,1,1,0,1,0, /* 8 */ 1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,0, /* 9 */ 1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,0, /* 10 */ 1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,0, /* 11 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0, /* 12 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0, /* 13 */ 1,0,1,1,1,0,1,1,1,0,1,1,1,0,1,0, /* 14 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0, /* 15 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* 16 */ }; /* рисунок фона 3 (16,16) */ static const UCHAR pBackGround2[] = { 1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1, /* 1 */ 1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1, /* 2 */ 1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1, /* 3 */ 1,1,1,0,1,1,1,1,1,1,1,1,1,0,1,1, /* 4 */ 1,1,1,0,1,1,1,1,1,1,1,1,1,0,1,1, /* 5 */ 1,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1, /* 6 */ 1,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1, /* 7 */ 1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0, /* 8 */ 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 9 */ 1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0, /* 10 */ 1,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1, /* 11 */ 1,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1, /* 12 */ 1,1,1,0,1,1,1,1,1,1,1,1,1,0,1,1, /* 13 */ 1,1,1,0,1,1,1,1,1,1,1,1,1,0,1,1, /* 14 */ 1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1, /* 15 */ 1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1 /* 16 */ }; /* рисунок фона 4 (16,16) */ static const UCHAR pBackGround3[] = { 1,1,1,0,1,1,1,1,1,1,1,0,1,1,1,1, /* 1 */ 1,1,0,1,0,1,1,1,1,1,0,1,0,1,1,1, /* 2 */ 1,0,1,1,1,0,1,1,1,0,1,1,1,0,1,1, /* 3 */ 0,1,1,1,1,1,0,1,0,1,1,1,1,1,0,1, /* 4 */ 1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0, /* 5 */ 0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1, /* 6 */ 1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1, /* 7 */ 1,1,0,1,1,1,1,1,1,1,1,1,0,1,1,1, /* 8 */ 1,1,1,0,1,1,1,1,1,1,1,0,1,1,1,1, /* 9 */ 1,1,0,1,1,1,1,1,1,1,1,1,0,1,1,1, /* 10 */ 1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1, /* 11 */ 0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1, /* 12 */ 1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0, /* 13 */ 0,1,1,1,1,1,0,1,0,1,1,1,1,1,0,1, /* 14 */ 1,0,1,1,1,0,1,1,1,0,1,1,1,0,1,1, /* 15 */ 1,1,0,1,0,1,1,1,1,1,0,1,0,1,1,1 /* 16 */ }; /* рисунки цифр отображающих иговые очки, от 0 до 4 (35,8) */ static const UCHAR pDigitScore04[] = { 1,0,0,0,0,0,1,1,1,0,0,0,0,1,1,0,0,0,0,0,1,1,0,0,0,0,0,1,1,1,0,0,0,0,1, /* 1 */ 0,0,2,2,2,0,0,1,0,0,2,2,0,1,0,0,2,2,2,0,0,0,0,2,2,2,0,0,1,0,0,2,2,0,1, /* 2 */ 0,2,2,0,2,2,0,1,0,2,2,2,0,1,0,2,2,2,2,2,0,0,2,2,0,2,2,0,1,0,2,2,2,0,1, /* 3 */ 0,2,2,0,2,2,0,1,0,0,2,2,0,1,0,2,2,0,2,2,0,0,0,0,2,2,0,0,0,0,2,0,2,0,1, /* 4 */ 0,2,2,0,2,2,0,1,1,0,2,2,0,1,0,0,0,2,2,0,0,0,0,0,2,2,0,0,0,2,2,0,2,0,0, /* 5 */ 0,2,2,0,2,2,0,1,0,0,2,2,0,0,0,0,2,2,0,0,0,0,2,2,0,2,2,0,0,2,2,2,2,2,0, /* 6 */ 0,0,2,2,2,0,0,1,0,2,2,2,2,0,0,2,2,2,2,2,0,0,0,2,2,2,0,0,0,0,0,2,2,0,0, /* 7 */ 1,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,0,0,0,0,1 /* 8 */ }; /* рисунки цифр отображающих иговые очки, от 5 до 9 (35,8) */ static const UCHAR pDigitScore59[] = { 0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,0,0,0,0,0,1, /* 1 */ 0,2,2,2,2,2,0,1,0,0,2,2,0,1,0,2,2,2,2,2,0,0,0,2,2,2,0,0,0,0,2,2,2,0,0, /* 2 */ 0,2,2,0,0,0,0,0,0,2,2,0,0,1,0,2,2,2,2,2,0,0,2,2,0,2,2,0,0,2,2,0,2,2,0, /* 3 */ 0,2,2,2,2,0,0,0,2,2,2,2,0,0,0,0,0,2,2,0,0,0,0,2,2,2,0,0,0,2,2,0,2,2,0, /* 4 */ 0,0,0,0,2,2,0,0,2,2,0,2,2,0,1,0,2,2,2,0,1,0,2,2,0,2,2,0,0,0,2,2,2,2,0, /* 5 */ 0,2,2,0,2,2,0,0,2,2,0,2,2,0,1,0,2,2,0,0,1,0,2,2,0,2,2,0,1,0,0,2,2,0,0, /* 6 */ 0,0,2,2,2,0,0,0,0,2,2,2,0,0,1,0,2,2,0,1,1,0,0,2,2,2,0,0,1,0,2,2,0,0,1, /* 7 */ 1,0,0,0,0,0,1,1,0,0,0,0,0,1,1,0,0,0,0,1,1,1,0,0,0,0,0,1,1,0,0,0,0,1,1 /* 8 */ }; /* рисунок надписи 'up' (16,8) */ static const UCHAR pUpScore[] = { 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1, /* 1 */ 0,2,2,0,2,2,0,1,0,2,2,2,2,2,0,0, /* 2 */ 0,2,2,0,2,2,0,1,0,2,2,0,0,2,2,0, /* 3 */ 0,2,2,0,2,2,0,1,0,2,2,0,0,2,2,0, /* 4 */ 0,2,2,0,2,2,0,1,0,2,2,2,2,2,0,0, /* 5 */ 0,2,2,2,2,2,0,1,0,2,2,0,0,0,0,1, /* 6 */ 0,0,2,2,2,0,0,1,0,2,2,0,1,1,1,1, /* 7 */ 1,0,0,0,0,0,1,1,0,0,0,0,1,1,1,1 /* 8 */ }; /* рисунок надписи 'hi' (13,8) */ static const UCHAR pHiScore[] = { 0,0,0,0,0,0,0,0,1,0,0,0,0, /* 1 */ 0,2,2,0,0,2,2,0,1,0,2,2,0, /* 2 */ 0,2,2,0,0,2,2,0,1,0,2,2,0, /* 3 */ 0,2,2,2,2,2,2,0,1,0,2,2,0, /* 4 */ 0,2,2,2,2,2,2,0,1,0,2,2,0, /* 5 */ 0,2,2,0,0,2,2,0,1,0,2,2,0, /* 6 */ 0,2,2,0,0,2,2,0,1,0,2,2,0, /* 7 */ 0,0,0,0,0,0,0,0,1,0,0,0,0 /* 8 */ }; /* рисунок маленькой ракетки отображающей жизни (14,6) */ static const UCHAR pSmallRacket[] = { 1,0,0,0,0,0,0,0,0,0,0,0,0,1, /* 1 */ 0,0,2,0,2,2,2,2,2,2,0,2,0,0, /* 2 */ 0,2,2,0,2,2,2,2,2,2,0,2,2,0, /* 3 */ 0,2,2,0,2,2,2,2,2,2,0,2,2,0, /* 4 */ 0,0,2,0,2,2,2,2,2,2,0,2,0,0, /* 5 */ 1,0,0,0,0,0,0,0,0,0,0,0,0,1 /* 6 */ }; /* рисунок кирпича (16,8) */ static const UCHAR pBlock[] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, /* 1 */ 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 2 */ 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 3 */ 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 4 */ 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 5 */ 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 6 */ 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 7 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 /* 8 */ }; /* анимации кирпича 1 (16,8) */ static const UCHAR pAnimBlock0[] = { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1, /* 1 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1, /* 2 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1, /* 3 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1, /* 4 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1, /* 5 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1, /* 6 */ 1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1, /* 7 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 /* 8 */ }; /* анимация кирпича 2 (16,8) */ static const UCHAR pAnimBlock1[] = { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1, /* 1 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1, /* 2 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1, /* 3 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1, /* 4 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1, /* 5 */ 1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1, /* 6 */ 1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1, /* 7 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 /* 8 */ }; /* анимация кирпича 3 (16,8) */ static const UCHAR pAnimBlock2[] = { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1, /* 1 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1, /* 2 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1, /* 3 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1, /* 4 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1, /* 5 */ 1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1, /* 6 */ 1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1, /* 7 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 /* 8 */ }; /* анимация кирпича 4 (16,8) */ static const UCHAR pAnimBlock3[] = { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1, /* 1 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1, /* 2 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1, /* 3 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1, /* 4 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1, /* 5 */ 1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1, /* 6 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, /* 7 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 /* 8 */ }; /* анимация кирпича 5 (16,8) */ static const UCHAR pAnimBlock4[] = { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1, /* 1 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1, /* 2 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1, /* 3 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1, /* 4 */ 1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1, /* 5 */ 1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1, /* 6 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, /* 7 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 /* 8 */ }; /* анимация кирпича 6 (16,8) */ static const UCHAR pAnimBlock5[] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, /* 1 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, /* 2 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, /* 3 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, /* 4 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, /* 5 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, /* 6 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, /* 7 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 /* 8 */ }; /* рисунок мячика и его тени (12,7) */ static const UCHAR pBall[] = { 1,1,0,0,0,1,1,1,0,0,0,1, /* 1 */ 1,0,2,2,2,0,1,0,0,0,0,0, /* 2 */ 0,2,0,0,2,2,0,0,0,0,0,0, /* 3 */ 0,2,0,2,2,2,0,0,0,0,0,0, /* 4 */ 0,2,2,2,2,2,0,1,0,0,0,1, /* 5 */ 1,0,2,2,2,0,1,1,1,1,1,1, /* 6 */ 1,1,0,0,0,1,1,1,1,1,1,1, /* 7 */ }; /* рисунок большого мячика и его тени (16,9) */ static const UCHAR pBallSmash[] = { 1,1,1,0,0,0,1,1,1,1,1,0,0,0,1,1, /* 1 */ 1,1,0,2,2,2,0,1,1,1,0,0,0,0,0,1, /* 2 */ 1,0,2,0,0,2,2,0,1,0,0,0,0,0,0,0, /* 3 */ 0,2,0,0,2,2,2,2,0,0,0,0,0,0,0,0, /* 4 */ 0,2,0,2,2,2,2,2,0,0,0,0,0,0,0,0, /* 5 */ 0,2,2,2,2,2,2,2,0,1,0,0,0,0,0,1, /* 6 */ 1,0,2,2,2,2,2,0,1,1,1,0,0,0,1,1, /* 7 */ 1,1,0,2,2,2,0,1,1,1,1,1,1,1,1,1, /* 8 */ 1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1 /* 9 */ }; /* рисунок ракетки (32,13) */ static const UCHAR pRacketNormal[] = { 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1, /* 1 */ 1,0,0,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,0,0,1,1,1,1,1, /* 2 */ 0,0,2,2,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,2,2,0,0,1,1,1,1, /* 3 */ 0,2,2,0,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,2,2,0,1,1,1,1, /* 4 */ 0,2,0,0,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,0,0,2,0,0,1,1,1, /* 5 */ 0,2,2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,2,2,0,1,0,1,1, /* 6 */ 0,2,2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,2,2,0,0,1,0,1, /* 7 */ 0,0,2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,2,0,0,1,0,1,0, /* 8 */ 1,0,0,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,0,0,1,0,1,0,1, /* 9 */ 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0, /* 10 */ 1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, /* 11 */ 1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1, /* 12 */ 1,1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1 /* 13 */ }; /* рисунок стреляющей ракетки (32,13) */ static const UCHAR pRacketGun[] = { 1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 1 */ 1,0,0,0,0,0,0,0,0,0,0,0,2,0,2,2,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1, /* 2 */ 0,0,2,2,2,0,2,2,2,2,0,2,0,0,2,2,2,0,2,2,2,2,0,2,2,2,0,0,1,1,1,1, /* 3 */ 0,2,2,0,0,2,0,0,0,0,2,0,0,2,2,2,2,2,0,0,0,0,2,0,0,2,2,0,1,1,1,1, /* 4 */ 0,2,0,0,0,2,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,2,0,0,0,2,0,0,1,1,1, /* 5 */ 0,2,2,2,2,0,2,2,2,2,2,2,0,0,0,0,2,2,2,2,2,2,0,2,2,2,2,0,1,0,1,1, /* 6 */ 0,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,0,0,1,0,1, /* 7 */ 0,0,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,0,0,1,0,1,0, /* 8 */ 1,0,0,0,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,0,0,0,1,0,1,0,1, /* 9 */ 1,1,1,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,1,0,1,0,1,0, /* 10 */ 1,1,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1, /* 11 */ 1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1, /* 12 */ 1,1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1 /* 13 */ }; /* рисунок большой ракетки (48,13) */ static const UCHAR pRacketExtend[] = { 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1, /* 1 */ 1,0,0,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,0,0,1,1,1,1,1, /* 2 */ 0,0,2,2,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,2,2,0,0,1,1,1,1, /* 3 */ 0,2,2,0,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,2,2,0,1,1,1,1, /* 4 */ 0,2,0,0,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,0,0,2,0,0,1,1,1, /* 5 */ 0,2,2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,2,2,0,1,0,1,1, /* 6 */ 0,2,2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,2,2,0,0,1,0,1, /* 7 */ 0,0,2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,2,0,0,1,0,1,0, /* 8 */ 1,0,0,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,0,0,1,0,1,0,1, /* 9 */ 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0, /* 10 */ 1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, /* 11 */ 1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1, /* 12 */ 1,1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1 /* 13 */ }; /* рисунок 1 перехода normal -> gun (30,13) */ static const UCHAR pRacketNtoG1[] = { 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1, /* 1 */ 1,0,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,0,1,1,1,1,1, /* 2 */ 0,0,2,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,2,0,0,1,1,1,1, /* 3 */ 0,2,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,2,0,1,1,1,1, /* 4 */ 0,2,0,0,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,0,0,2,0,0,1,1,1, /* 5 */ 0,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,0,1,0,1,1, /* 6 */ 0,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,0,0,1,0,1, /* 7 */ 0,0,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,0,0,1,0,1,0, /* 8 */ 1,0,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,0,1,0,1,0,1, /* 9 */ 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0, /* 10 */ 1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, /* 11 */ 1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1, /* 12 */ 1,1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1 /* 13 */ }; /* рисунок 2 перехода normal -> gun (30,13) */ static const UCHAR pRacketNtoG2[] = { 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1, /* 1 */ 1,0,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,0,1,1,1,1,1, /* 2 */ 0,0,2,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,2,0,0,1,1,1,1, /* 3 */ 0,2,2,0,0,2,0,0,0,0,0,2,0,2,2,0,0,0,0,0,2,0,0,2,2,0,1,1,1,1, /* 4 */ 0,2,0,0,2,0,2,2,2,2,2,0,0,0,0,2,2,2,2,2,0,2,0,0,2,0,0,1,1,1, /* 5 */ 0,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,0,1,0,1,1, /* 6 */ 0,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,0,0,1,0,1, /* 7 */ 0,0,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,0,0,1,0,1,0, /* 8 */ 1,0,0,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,0,0,1,0,1,0,1, /* 9 */ 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0, /* 10 */ 1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, /* 11 */ 1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1, /* 12 */ 1,1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1 /* 13 */ }; /* рисунок 3 перехода normal -> gun (32,13) */ static const UCHAR pRacketNtoG3[] = { 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1, /* 1 */ 1,0,0,2,2,0,2,2,2,2,2,2,0,0,0,0,2,2,2,2,2,2,0,2,2,0,0,1,1,1,1,1, /* 2 */ 0,0,2,2,0,2,0,0,0,0,0,0,2,0,2,2,0,0,0,0,0,0,2,0,2,2,0,0,1,1,1,1, /* 3 */ 0,2,2,0,0,2,0,0,0,0,0,2,0,0,2,2,2,0,0,0,0,0,2,0,0,2,2,0,1,1,1,1, /* 4 */ 0,2,0,0,2,0,2,2,2,2,2,0,0,0,0,0,0,2,2,2,2,2,0,2,0,0,2,0,0,1,1,1, /* 5 */ 0,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,0,1,0,1,1, /* 6 */ 0,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,0,0,1,0,1, /* 7 */ 0,0,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,0,0,1,0,1,0, /* 8 */ 1,0,0,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,0,0,1,0,1,0,1, /* 9 */ 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0, /* 10 */ 1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, /* 11 */ 1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1, /* 12 */ 1,1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1 /* 13 */ }; /* рисунок 4 перехода normal -> gun (32,13) */ static const UCHAR pRacketNtoG4[] = { 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1, /* 1 */ 1,0,0,2,2,0,2,2,2,2,2,0,2,0,2,2,0,2,2,2,2,2,0,2,2,0,0,1,1,1,1,1, /* 2 */ 0,0,2,2,0,2,0,0,0,0,0,2,0,0,2,2,2,0,0,0,0,0,2,0,2,2,0,0,1,1,1,1, /* 3 */ 0,2,2,0,0,2,0,0,0,0,2,0,0,2,2,2,2,2,0,0,0,0,2,0,0,2,2,0,1,1,1,1, /* 4 */ 0,2,0,0,2,0,2,2,2,2,0,0,0,0,0,0,0,0,2,2,2,2,0,2,0,0,2,0,0,1,1,1, /* 5 */ 0,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,0,1,0,1,1, /* 6 */ 0,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,0,0,1,0,1, /* 7 */ 0,0,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,0,0,1,0,1,0, /* 8 */ 1,0,0,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,0,0,1,0,1,0,1, /* 9 */ 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0, /* 10 */ 1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, /* 11 */ 1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1, /* 12 */ 1,1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1 /* 13 */ }; /* рисунок 1 перехода normal -> extend (34,13) */ static const UCHAR pRacketNtoE1[] = { 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1, /* 1 */ 1,0,0,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,0,0,1,1,1,1,1, /* 2 */ 0,0,2,2,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,2,2,0,0,1,1,1,1, /* 3 */ 0,2,2,0,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,2,2,0,1,1,1,1, /* 4 */ 0,2,0,0,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,0,0,2,0,0,1,1,1, /* 5 */ 0,2,2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,2,2,0,1,0,1,1, /* 6 */ 0,2,2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,2,2,0,0,1,0,1, /* 7 */ 0,0,2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,2,0,0,1,0,1,0, /* 8 */ 1,0,0,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,0,0,1,0,1,0,1, /* 9 */ 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0, /* 10 */ 1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, /* 11 */ 1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1, /* 12 */ 1,1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1 /* 13 */ }; /* рисунок 2 перехода normal -> extend (36,13) */ static const UCHAR pRacketNtoE2[] = { 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1, /* 1 */ 1,0,0,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,0,0,1,1,1,1,1, /* 2 */ 0,0,2,2,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,2,2,0,0,1,1,1,1, /* 3 */ 0,2,2,0,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,2,2,0,1,1,1,1, /* 4 */ 0,2,0,0,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,0,0,2,0,0,1,1,1, /* 5 */ 0,2,2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,2,2,0,1,0,1,1, /* 6 */ 0,2,2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,2,2,0,0,1,0,1, /* 7 */ 0,0,2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,2,0,0,1,0,1,0, /* 8 */ 1,0,0,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,0,0,1,0,1,0,1, /* 9 */ 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0, /* 10 */ 1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, /* 11 */ 1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1, /* 12 */ 1,1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1 /* 13 */ }; /* рисунок 3 перехода normal -> extend (38,13) */ static const UCHAR pRacketNtoE3[] = { 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1, /* 1 */ 1,0,0,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,0,0,1,1,1,1,1, /* 2 */ 0,0,2,2,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,2,2,0,0,1,1,1,1, /* 3 */ 0,2,2,0,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,2,2,0,1,1,1,1, /* 4 */ 0,2,0,0,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,0,0,2,0,0,1,1,1, /* 5 */ 0,2,2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,2,2,0,1,0,1,1, /* 6 */ 0,2,2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,2,2,0,0,1,0,1, /* 7 */ 0,0,2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,2,0,0,1,0,1,0, /* 8 */ 1,0,0,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,0,0,1,0,1,0,1, /* 9 */ 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0, /* 10 */ 1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, /* 11 */ 1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1, /* 12 */ 1,1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1 /* 13 */ }; /* рисунок 4 перехода normal -> extend (40,13) */ static const UCHAR pRacketNtoE4[] = { 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1, /* 1 */ 1,0,0,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,0,0,1,1,1,1,1, /* 2 */ 0,0,2,2,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,2,2,0,0,1,1,1,1, /* 3 */ 0,2,2,0,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,2,2,0,1,1,1,1, /* 4 */ 0,2,0,0,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,0,0,2,0,0,1,1,1, /* 5 */ 0,2,2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,2,2,0,1,0,1,1, /* 6 */ 0,2,2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,2,2,0,0,1,0,1, /* 7 */ 0,0,2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,2,0,0,1,0,1,0, /* 8 */ 1,0,0,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,0,0,1,0,1,0,1, /* 9 */ 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0, /* 10 */ 1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, /* 11 */ 1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1, /* 12 */ 1,1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1 /* 13 */ }; /* рисунок 5 перехода normal -> extend (42,13) */ static const UCHAR pRacketNtoE5[] = { 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1, /* 1 */ 1,0,0,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,0,0,1,1,1,1,1, /* 2 */ 0,0,2,2,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,2,2,0,0,1,1,1,1, /* 3 */ 0,2,2,0,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,2,2,0,1,1,1,1, /* 4 */ 0,2,0,0,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,0,0,2,0,0,1,1,1, /* 5 */ 0,2,2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,2,2,0,1,0,1,1, /* 6 */ 0,2,2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,2,2,0,0,1,0,1, /* 7 */ 0,0,2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,2,0,0,1,0,1,0, /* 8 */ 1,0,0,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,0,0,1,0,1,0,1, /* 9 */ 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0, /* 10 */ 1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, /* 11 */ 1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1, /* 12 */ 1,1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1 /* 13 */ }; /* рисунок 6 перехода normal -> extend (44,13) */ static const UCHAR pRacketNtoE6[] = { 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1, /* 1 */ 1,0,0,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,0,0,1,1,1,1,1, /* 2 */ 0,0,2,2,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,2,2,0,0,1,1,1,1, /* 3 */ 0,2,2,0,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,2,2,0,1,1,1,1, /* 4 */ 0,2,0,0,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,0,0,2,0,0,1,1,1, /* 5 */ 0,2,2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,2,2,0,1,0,1,1, /* 6 */ 0,2,2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,2,2,0,0,1,0,1, /* 7 */ 0,0,2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,2,0,0,1,0,1,0, /* 8 */ 1,0,0,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,0,0,1,0,1,0,1, /* 9 */ 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0, /* 10 */ 1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, /* 11 */ 1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1, /* 12 */ 1,1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1 /* 13 */ }; /* рисунок 7 перехода normal -> extend (46,13) */ static const UCHAR pRacketNtoE7[] = { 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1, /* 1 */ 1,0,0,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,0,0,1,1,1,1,1, /* 2 */ 0,0,2,2,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,2,2,0,0,1,1,1,1, /* 3 */ 0,2,2,0,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,2,2,0,1,1,1,1, /* 4 */ 0,2,0,0,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,0,0,2,0,0,1,1,1, /* 5 */ 0,2,2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,2,2,0,1,0,1,1, /* 6 */ 0,2,2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,2,2,0,0,1,0,1, /* 7 */ 0,0,2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,2,0,0,1,0,1,0, /* 8 */ 1,0,0,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,0,0,1,0,1,0,1, /* 9 */ 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0, /* 10 */ 1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, /* 11 */ 1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1, /* 12 */ 1,1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1 /* 13 */ }; /* рисунок круга отклонения (выключен) (30,30) */ static const UCHAR pSwerveOff[] = { 1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 1 */ 1,1,1,1,1,0,0,0,0,2,2,2,2,2,2,2,0,0,0,0,1,1,1,1,1,1,1,1,1,1, /* 2 */ 1,1,1,0,0,0,2,2,2,2,0,0,0,0,0,2,2,2,2,0,0,0,1,1,1,1,1,1,1,1, /* 3 */ 1,1,0,0,2,2,2,0,0,0,0,2,2,2,0,0,0,0,2,2,2,0,0,1,1,1,1,1,1,1, /* 4 */ 1,1,0,2,2,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,2,2,0,1,1,1,1,1,1,1, /* 5 */ 1,0,0,2,0,0,0,2,0,0,0,2,2,0,0,0,0,2,0,0,0,2,0,0,1,1,1,1,1,1, /* 6 */ 1,0,2,2,0,0,2,0,2,0,0,2,0,0,0,0,2,0,2,0,0,2,2,0,1,1,1,1,1,1, /* 7 */ 1,0,2,0,0,2,0,0,0,2,0,0,0,0,0,2,0,2,0,2,0,0,2,0,1,1,1,1,1,1, /* 8 */ 0,0,2,0,0,0,2,0,2,0,0,2,2,2,0,0,0,0,0,0,0,0,2,0,0,1,1,1,1,1, /* 9 */ 0,2,2,0,0,0,0,2,0,0,2,0,0,2,2,0,0,0,0,0,0,0,2,2,0,1,1,1,1,1, /* 10 */ 0,2,0,0,0,0,0,0,0,2,0,0,2,2,2,2,0,0,0,0,0,0,0,2,0,0,1,1,1,1, /* 11 */ 0,2,0,0,2,2,0,0,0,2,0,2,2,2,2,2,0,0,0,2,2,0,0,2,0,1,0,1,1,1, /* 12 */ 0,2,0,0,2,2,0,0,0,2,0,2,2,2,2,2,0,0,0,2,2,0,0,2,0,0,1,0,1,1, /* 13 */ 0,2,0,0,0,0,0,0,0,2,2,2,2,2,2,2,0,0,0,0,0,0,0,2,0,1,0,1,0,1, /* 14 */ 0,2,2,0,0,0,0,0,0,0,2,2,2,2,2,0,0,0,0,0,0,0,2,2,0,0,1,0,1,1, /* 15 */ 0,0,2,0,0,0,0,2,0,0,0,2,2,2,0,0,0,2,0,0,0,0,2,0,0,1,0,1,0,1, /* 16 */ 1,0,2,0,0,0,2,0,2,0,0,0,0,0,0,0,2,0,0,0,0,0,2,0,1,0,1,0,1,0, /* 17 */ 1,0,2,2,0,2,0,0,0,2,0,2,2,2,0,2,0,2,0,0,0,2,2,0,0,1,0,1,0,1, /* 18 */ 1,0,0,2,0,0,2,0,2,0,0,2,0,0,0,0,2,0,0,0,0,2,0,0,1,0,1,0,1,0, /* 19 */ 1,1,0,2,2,0,0,2,0,0,0,2,2,0,0,0,0,2,0,0,2,2,0,1,0,1,0,1,0,1, /* 20 */ 1,1,0,0,2,2,2,0,0,0,0,2,0,0,0,0,0,0,2,2,2,0,0,0,1,0,1,0,1,0, /* 21 */ 1,1,1,0,0,0,2,2,2,2,0,0,0,0,0,2,2,2,2,0,0,0,0,1,0,1,0,1,0,1, /* 22 */ 1,1,1,1,1,0,0,0,0,2,2,2,2,2,2,2,0,0,0,0,1,0,1,0,1,0,1,0,1,1, /* 23 */ 1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1, /* 24 */ 1,1,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1, /* 25 */ 1,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1, /* 26 */ 1,1,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1, /* 27 */ 1,1,1,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1, /* 28 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1,1, /* 29 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1 /* 30 */ }; /* рисунок круга отклонения (включен) (30,30) */ static const UCHAR pSwerveOn[] = { 1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 1 */ 1,1,1,1,1,0,0,0,0,2,2,2,2,2,2,2,0,0,0,0,1,1,1,1,1,1,1,1,1,1, /* 2 */ 1,1,1,0,0,0,2,2,2,2,2,2,0,2,2,2,2,2,2,0,0,0,1,1,1,1,1,1,1,1, /* 3 */ 1,1,0,0,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,0,0,1,1,1,1,1,1,1, /* 4 */ 1,1,0,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,0,1,1,1,1,1,1,1, /* 5 */ 1,0,0,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,0,0,1,1,1,1,1,1, /* 6 */ 1,0,2,0,0,2,2,2,2,2,0,0,0,0,0,2,2,2,2,2,0,0,2,0,1,1,1,1,1,1, /* 7 */ 1,0,2,2,2,0,0,2,2,2,2,0,0,0,2,2,2,2,0,0,2,2,2,0,1,1,1,1,1,1, /* 8 */ 0,0,2,2,2,2,2,0,2,0,2,2,0,2,2,0,2,0,2,2,2,2,2,0,0,1,1,1,1,1, /* 9 */ 0,2,2,2,2,2,2,2,0,0,2,2,2,2,2,0,0,2,2,2,2,2,2,2,0,1,1,1,1,1, /* 10 */ 0,2,2,2,2,2,2,0,0,0,2,2,2,2,2,0,0,0,2,2,2,2,2,2,0,0,1,1,1,1, /* 11 */ 0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1,0,1,1,1, /* 12 */ 0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,1,0,1,1, /* 13 */ 0,2,2,2,2,2,2,0,0,0,2,2,2,2,2,0,0,0,2,2,2,2,2,2,0,1,0,1,0,1, /* 14 */ 0,2,2,2,2,2,2,2,0,0,2,2,2,2,2,0,0,2,2,2,2,2,2,2,0,0,1,0,1,1, /* 15 */ 0,0,2,2,2,2,2,0,2,0,2,2,0,2,2,0,2,0,2,2,2,2,2,0,0,1,0,1,0,1, /* 16 */ 1,0,2,2,2,0,0,2,2,2,2,0,0,0,2,2,2,2,0,0,2,2,2,0,1,0,1,0,1,0, /* 17 */ 1,0,2,0,0,2,2,2,2,2,0,0,0,0,0,2,2,2,2,2,0,0,2,0,0,1,0,1,0,1, /* 18 */ 1,0,0,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,0,0,1,0,1,0,1,0, /* 19 */ 1,1,0,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,0,1,0,1,0,1,0,1, /* 20 */ 1,1,0,0,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,0,0,0,1,0,1,0,1,0, /* 21 */ 1,1,1,0,0,0,2,2,2,2,2,2,0,2,2,2,2,2,2,0,0,0,0,1,0,1,0,1,0,1, /* 22 */ 1,1,1,1,1,0,0,0,0,2,2,2,2,2,2,2,0,0,0,0,1,0,1,0,1,0,1,0,1,1, /* 23 */ 1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1, /* 24 */ 1,1,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1, /* 25 */ 1,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1, /* 26 */ 1,1,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1, /* 27 */ 1,1,1,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1, /* 28 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1,1, /* 29 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1 /* 30 */ }; /* рисунок птицы 0 (24,14) */ static const UCHAR pBird0[] = { 1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1, /* 1 */ 1,0,2,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,2,2,0,1, /* 2 */ 1,1,0,2,2,0,1,1,1,1,1,1,1,1,1,1,1,1,0,2,2,0,1,1, /* 3 */ 1,1,1,0,2,2,0,1,1,1,1,0,0,1,1,1,1,0,2,2,0,1,1,1, /* 4 */ 1,1,1,0,2,2,2,0,1,1,0,2,2,0,1,1,0,2,2,2,0,1,1,1, /* 5 */ 1,1,1,1,0,2,2,2,0,0,2,2,2,2,0,0,2,2,2,0,1,1,1,1, /* 6 */ 1,1,1,1,1,0,2,2,0,2,0,2,2,0,2,0,2,2,0,1,1,1,1,1, /* 7 */ 1,1,1,1,1,0,2,2,0,2,2,2,2,2,2,0,2,2,0,1,1,1,1,1, /* 8 */ 1,1,1,1,1,1,0,2,2,0,2,0,0,2,0,2,2,0,1,1,1,1,1,1, /* 9 */ 1,1,1,1,1,1,1,0,0,0,0,2,2,0,0,0,0,1,1,1,1,1,1,1, /* 10 */ 1,1,1,1,1,1,1,1,0,2,0,2,2,0,2,0,1,1,1,1,1,1,1,1, /* 11 */ 1,1,1,1,1,1,1,1,0,2,0,2,0,0,2,0,1,1,1,1,1,1,1,1, /* 12 */ 1,1,1,1,1,1,1,0,2,0,2,0,0,2,0,2,0,1,1,1,1,1,1,1, /* 13 */ 1,1,1,1,1,1,1,1,0,1,0,1,1,0,1,0,1,1,1,1,1,1,1,1, /* 14 */ }; /* рисунок птицы 1 (24,14) */ static const UCHAR pBird1[] = { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 1 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 2 */ 1,0,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,0,1, /* 3 */ 0,2,2,2,0,0,0,1,1,1,0,2,2,0,1,1,1,0,0,0,2,2,2,0, /* 4 */ 1,0,2,2,2,2,2,0,1,0,2,2,2,2,0,1,0,2,2,2,2,2,0,1, /* 5 */ 1,1,0,0,2,2,2,2,0,2,0,2,2,0,2,0,2,2,2,2,0,0,1,1, /* 6 */ 1,1,1,1,0,0,2,2,0,2,2,0,0,2,2,0,2,2,0,0,1,1,1,1, /* 7 */ 1,1,1,1,1,1,0,2,2,0,0,2,2,0,0,2,2,0,1,1,1,1,1,1, /* 8 */ 1,1,1,1,1,1,1,0,0,2,0,2,2,0,2,0,0,1,1,1,1,1,1,1, /* 9 */ 1,1,1,1,1,1,1,1,0,2,0,2,0,0,2,0,1,1,1,1,1,1,1,1, /* 10 */ 1,1,1,1,1,1,1,0,2,0,2,0,0,2,0,2,0,1,1,1,1,1,1,1, /* 11 */ 1,1,1,1,1,1,1,1,0,1,0,1,1,0,1,0,1,1,1,1,1,1,1,1, /* 12 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 13 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 14 */ }; /* рисунок птицы 2 (24,14) */ static const UCHAR pBird2[] = { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 1 */ 1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1, /* 2 */ 1,1,1,1,1,1,1,1,1,1,0,2,2,0,1,1,1,1,1,1,1,1,1,1, /* 3 */ 1,1,1,1,1,1,1,1,1,0,2,2,2,2,0,1,1,1,1,1,1,1,1,1, /* 4 */ 1,1,1,1,1,1,1,0,0,2,0,2,2,0,2,0,0,1,1,1,1,1,1,1, /* 5 */ 1,1,1,0,0,0,0,2,0,2,2,2,2,2,2,0,2,0,0,0,0,1,1,1, /* 6 */ 1,1,0,2,2,2,2,2,2,0,2,0,0,2,0,2,2,2,2,2,2,0,1,1, /* 7 */ 1,0,2,2,2,2,2,2,0,0,0,2,2,0,0,0,2,2,2,2,2,2,0,1, /* 8 */ 0,2,2,0,0,0,0,0,0,2,0,2,2,0,2,0,0,0,0,0,0,2,2,0, /* 9 */ 1,0,0,1,1,1,1,1,0,2,0,2,0,0,2,0,1,1,1,1,1,0,0,1, /* 10 */ 1,1,1,1,1,1,1,0,2,0,2,0,0,2,0,2,0,1,1,1,1,1,1,1, /* 11 */ 1,1,1,1,1,1,1,1,0,1,0,1,1,0,1,0,1,1,1,1,1,1,1,1, /* 12 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 13 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 14 */ }; /* рисунок птички 3 (24,14) */ static const UCHAR pBird3[] = { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 1 */ 1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1, /* 2 */ 1,1,1,1,1,1,1,1,1,1,0,2,2,0,1,1,1,1,1,1,1,1,1,1, /* 3 */ 1,1,1,1,1,1,1,1,1,0,2,2,2,2,0,1,1,1,1,1,1,1,1,1, /* 4 */ 1,1,1,1,1,1,1,0,0,2,0,2,2,0,2,0,0,1,1,1,1,1,1,1, /* 5 */ 1,1,1,1,1,0,0,2,0,2,2,2,2,2,2,0,2,0,0,1,1,1,1,1, /* 6 */ 1,1,1,1,0,2,2,2,2,0,2,0,0,2,0,2,2,2,2,0,1,1,1,1, /* 7 */ 1,1,1,0,2,2,2,2,0,0,0,2,2,0,0,0,2,2,2,2,0,1,1,1, /* 8 */ 1,1,0,2,2,2,0,0,0,2,0,2,2,0,2,0,0,0,2,2,2,0,1,1, /* 9 */ 1,1,0,2,2,0,1,1,0,2,0,2,0,0,2,0,1,1,0,2,2,0,1,1, /* 10 */ 1,0,2,2,0,1,1,0,2,0,2,0,0,2,0,2,0,1,1,0,2,2,0,1, /* 11 */ 1,1,0,0,1,1,1,1,0,1,0,1,1,0,1,0,1,1,1,1,0,0,1,1, /* 12 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 13 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 14 */ }; /* рисунок птицы 4 (24,14) */ static const UCHAR pBird4[] = { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 1 */ 1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1, /* 2 */ 1,1,1,1,1,1,0,0,1,1,0,2,2,0,1,1,0,0,1,1,1,1,1,1, /* 3 */ 1,1,1,1,1,0,2,2,0,0,2,2,2,2,0,0,2,2,0,1,1,1,1,1, /* 4 */ 1,1,1,1,0,2,2,2,0,2,0,2,2,0,2,0,2,2,2,0,1,1,1,1, /* 5 */ 1,1,1,0,2,2,2,0,2,0,2,0,0,2,0,2,0,2,2,2,0,1,1,1, /* 6 */ 1,1,1,0,2,2,0,1,0,0,0,2,2,0,0,0,1,0,2,2,0,1,1,1, /* 7 */ 1,1,1,0,2,2,0,1,0,2,0,2,2,0,2,0,1,0,2,2,0,1,1,1, /* 8 */ 1,1,0,2,2,2,0,1,0,2,0,2,0,0,2,0,1,0,2,2,2,0,1,1, /* 9 */ 1,1,0,2,2,0,1,0,2,0,2,0,0,2,0,2,0,1,0,2,2,0,1,1, /* 10 */ 1,1,0,2,0,1,1,1,0,1,0,1,1,0,1,0,1,1,1,0,2,0,1,1, /* 11 */ 1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1, /* 12 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 13 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 /* 14 */ }; /* рисунок НЛО 1 (24,14) */ static const UCHAR pUfo0[] = { 1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1, /* 1 */ 1,1,1,1,1,1,0,0,0,2,0,2,2,2,2,0,0,0,1,1,1,1,1,1, /* 2 */ 1,1,1,1,0,0,2,2,2,0,0,2,2,2,2,2,2,2,0,0,1,1,1,1, /* 3 */ 1,1,0,0,2,2,2,0,0,0,2,2,2,2,2,2,2,2,2,2,0,0,1,1, /* 4 */ 1,0,2,2,2,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1, /* 5 */ 0,2,2,2,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0, /* 6 */ 0,2,2,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0, /* 7 */ 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, /* 8 */ 0,2,2,2,2,0,0,2,2,2,2,0,0,2,2,2,2,0,0,2,2,2,2,0, /* 9 */ 0,2,2,2,2,0,0,2,2,2,2,0,0,2,2,2,2,0,0,2,2,2,2,0, /* 10 */ 0,2,2,2,2,0,0,2,2,2,2,0,0,2,2,2,2,0,0,2,2,2,2,0, /* 11 */ 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, /* 12 */ 0,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,0, /* 13 */ 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 /* 14 */ }; /* рисунок НЛО 2 (24,14) */ static const UCHAR pUfo1[] = { 1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1, /* 1 */ 1,1,1,1,1,1,0,0,0,0,2,2,2,2,2,0,0,0,1,1,1,1,1,1, /* 2 */ 1,1,1,1,0,0,2,2,0,0,2,2,2,2,2,2,2,2,0,0,1,1,1,1, /* 3 */ 1,1,0,0,2,2,2,0,0,2,2,2,2,2,2,2,2,2,2,2,0,0,1,1, /* 4 */ 1,0,2,2,2,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1, /* 5 */ 0,2,2,2,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0, /* 6 */ 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, /* 7 */ 0,0,2,2,2,2,0,0,2,2,2,2,0,0,2,2,2,2,0,0,2,2,2,0, /* 8 */ 0,0,2,2,2,2,0,0,2,2,2,2,0,0,2,2,2,2,0,0,2,2,2,0, /* 9 */ 0,0,2,2,2,2,0,0,2,2,2,2,0,0,2,2,2,2,0,0,2,2,2,0, /* 10 */ 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, /* 11 */ 0,2,2,2,2,2,2,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0, /* 12 */ 1,0,0,0,0,2,2,2,0,0,2,2,2,2,2,2,2,2,2,0,0,0,0,1, /* 13 */ 1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1 /* 14 */ }; /* рисунок НЛО 3 (24,14) */ static const UCHAR pUfo2[] = { 1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1, /* 1 */ 1,1,1,1,1,1,0,0,0,0,2,2,2,2,2,0,0,0,1,1,1,1,1,1, /* 2 */ 1,1,1,0,0,0,2,2,0,0,2,2,2,2,2,2,2,2,0,0,0,1,1,1, /* 3 */ 1,0,0,2,2,2,2,0,0,0,2,2,2,2,2,2,2,2,2,2,2,0,0,1, /* 4 */ 0,2,2,2,2,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0, /* 5 */ 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, /* 6 */ 1,0,0,2,2,2,2,0,0,2,2,2,2,0,0,2,2,2,2,0,0,2,2,0, /* 7 */ 1,0,0,2,2,2,2,0,0,2,2,2,2,0,0,2,2,2,2,0,0,2,2,0, /* 8 */ 1,0,0,2,2,2,2,0,0,2,2,2,2,0,0,2,2,2,2,0,0,2,2,0, /* 9 */ 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, /* 10 */ 0,2,2,2,2,2,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0, /* 11 */ 1,0,0,2,2,2,2,0,0,2,2,2,2,2,2,2,2,2,2,2,2,0,0,1, /* 12 */ 1,1,1,0,0,0,0,2,0,2,2,2,2,2,2,2,2,0,0,0,0,1,1,1, /* 13 */ 1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1 /* 14 */ }; /* рисунок НЛО 4 (24,14) */ static const UCHAR pUfo3[] = { 1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1, /* 1 */ 1,1,1,0,0,0,0,2,0,2,2,2,2,2,2,2,2,0,0,0,0,1,1,1, /* 2 */ 1,0,0,2,2,2,2,0,0,2,2,2,2,2,2,2,2,2,2,2,2,0,0,1, /* 3 */ 0,2,2,2,2,2,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0, /* 4 */ 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, /* 5 */ 0,2,0,0,2,2,2,2,0,0,2,2,2,2,0,0,2,2,2,2,0,0,2,0, /* 6 */ 0,2,0,0,2,2,2,2,0,0,2,2,2,2,0,0,2,2,2,2,0,0,2,0, /* 7 */ 0,2,0,0,2,2,2,2,0,0,2,2,2,2,0,0,2,2,2,2,0,0,2,0, /* 8 */ 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, /* 9 */ 0,2,2,2,2,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0, /* 10 */ 1,0,0,2,2,2,2,0,0,0,2,2,2,2,2,2,2,2,2,2,2,0,0,1, /* 11 */ 1,1,1,0,0,0,2,2,0,0,2,2,2,2,2,2,2,2,0,0,0,1,1,1, /* 12 */ 1,1,1,1,1,1,0,0,0,0,2,2,2,2,2,0,0,0,1,1,1,1,1,1, /* 13 */ 1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1 /* 14 */ }; /* рисунок НЛО 5 (24,14) */ static const UCHAR pUfo4[] = { 1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1, /* 1 */ 1,0,0,0,0,2,2,2,0,0,2,2,2,2,2,2,2,2,2,0,0,0,0,1, /* 2 */ 0,2,2,2,2,2,2,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0, /* 3 */ 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, /* 4 */ 0,2,2,0,0,2,2,2,2,0,0,2,2,2,2,0,0,2,2,2,2,0,0,1, /* 5 */ 0,2,2,0,0,2,2,2,2,0,0,2,2,2,2,0,0,2,2,2,2,0,0,1, /* 6 */ 0,2,2,0,0,2,2,2,2,0,0,2,2,2,2,0,0,2,2,2,2,0,0,1, /* 7 */ 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, /* 8 */ 0,2,2,2,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0, /* 9 */ 1,0,2,2,2,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1, /* 10 */ 1,1,0,0,2,2,2,0,0,2,2,2,2,2,2,2,2,2,2,2,0,0,1,1, /* 11 */ 1,1,1,1,0,0,2,2,0,0,2,2,2,2,2,2,2,2,0,0,1,1,1,1, /* 12 */ 1,1,1,1,1,1,0,0,0,0,2,2,2,2,2,0,0,0,1,1,1,1,1,1, /* 13 */ 1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1 /* 14 */ }; /* рисунок НЛО 6 (24,14) */ static const UCHAR pUfo5[] = { 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, /* 1 */ 0,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,0, /* 2 */ 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, /* 3 */ 0,2,2,2,0,0,2,2,2,2,0,0,2,2,2,2,0,0,2,2,2,2,0,0, /* 4 */ 0,2,2,2,0,0,2,2,2,2,0,0,2,2,2,2,0,0,2,2,2,2,0,0, /* 5 */ 0,2,2,2,0,0,2,2,2,2,0,0,2,2,2,2,0,0,2,2,2,2,0,0, /* 6 */ 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, /* 7 */ 0,2,2,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0, /* 8 */ 0,2,2,2,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0, /* 9 */ 1,0,2,2,2,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1, /* 10 */ 1,1,0,0,2,2,2,0,0,0,2,2,2,2,2,2,2,2,2,2,0,0,1,1, /* 11 */ 1,1,1,1,0,0,2,2,2,0,0,2,2,2,2,2,2,2,0,0,1,1,1,1, /* 12 */ 1,1,1,1,1,1,0,0,0,2,0,2,2,2,2,0,0,0,1,1,1,1,1,1, /* 13 */ 1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1 /* 14 */ }; /* рисунок взрыва 1 (16,19) */ static const UCHAR pBang0[] = { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 1 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 2 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 3 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 4 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 5 */ 1,1,1,1,1,1,0,1,1,0,1,1,1,1,1,1, /* 6 */ 1,1,1,1,0,0,1,1,0,2,0,1,0,1,1,1, /* 7 */ 1,1,1,0,2,2,0,0,2,2,0,1,1,1,1,1, /* 8 */ 1,1,1,0,2,2,2,2,2,2,0,0,1,1,1,1, /* 9 */ 1,1,1,1,0,2,2,2,0,2,2,2,0,1,1,1, /* 10 */ 1,1,1,0,1,0,2,0,0,0,2,2,2,0,1,1, /* 11 */ 1,1,1,1,0,2,2,2,2,2,2,0,0,1,1,1, /* 12 */ 1,1,1,0,2,2,2,0,2,2,0,0,1,1,1,1, /* 13 */ 1,1,1,1,0,0,0,1,0,2,0,1,1,1,1,1, /* 14 */ 1,1,1,1,1,1,1,0,1,0,1,1,1,1,1,1, /* 15 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 16 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 17 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 18 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 /* 19 */ }; /* рисунок взрыва 2 (16,19) */ static const UCHAR pBang1[] = { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 1 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 2 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 3 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 4 */ 1,1,1,1,1,1,0,1,1,0,1,1,1,1,1,1, /* 5 */ 1,1,1,0,0,1,1,1,0,2,0,1,0,1,1,1, /* 6 */ 1,1,0,2,2,0,0,0,2,2,0,1,1,1,1,1, /* 7 */ 1,1,0,2,2,2,2,0,2,2,2,0,0,0,1,1, /* 8 */ 1,1,1,0,2,2,2,2,2,0,2,2,2,2,0,1, /* 9 */ 1,1,1,1,0,2,2,0,0,0,2,2,2,0,1,1, /* 10 */ 1,1,0,1,1,0,2,2,0,2,2,2,0,1,1,1, /* 11 */ 1,1,1,1,0,2,2,2,2,2,2,0,1,0,1,1, /* 12 */ 1,1,1,1,0,2,2,2,0,2,2,2,0,1,1,1, /* 13 */ 1,1,1,0,2,2,0,0,1,0,2,2,0,1,1,1, /* 14 */ 1,1,1,1,0,0,1,1,0,1,0,0,1,1,1,1, /* 15 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 16 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 17 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 18 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 /* 19 */ }; /* рисунок взрыва 3 (16,19) */ static const UCHAR pBang2[] = { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 1 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 2 */ 1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1, /* 3 */ 1,1,1,1,0,1,1,1,1,0,2,0,1,1,1,1, /* 4 */ 1,1,1,1,1,1,1,1,0,2,2,0,1,0,1,1, /* 5 */ 1,1,1,0,0,0,0,0,2,2,2,0,1,1,1,1, /* 6 */ 1,1,0,2,2,2,2,2,2,2,2,0,1,1,0,1, /* 7 */ 1,1,1,0,2,2,2,2,0,0,2,2,0,0,1,1, /* 8 */ 1,1,1,1,0,2,2,0,0,2,0,2,2,2,0,1, /* 9 */ 1,1,1,0,1,0,2,0,0,0,2,2,2,0,1,1, /* 10 */ 1,1,1,1,0,2,2,2,2,0,2,0,0,1,1,1, /* 11 */ 1,0,1,0,2,2,2,2,2,2,2,0,1,0,1,1, /* 12 */ 1,1,1,0,2,2,2,0,0,2,2,2,0,1,1,1, /* 13 */ 1,1,0,2,2,0,0,1,1,0,2,2,0,1,0,1, /* 14 */ 1,1,1,0,0,1,1,0,1,1,0,2,0,1,1,1, /* 15 */ 1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1, /* 16 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 17 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 18 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 /* 19 */ }; /* рисунок взрыва 4 (16,19) */ static const UCHAR pBang3[] = { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 1 */ 1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1, /* 2 */ 1,0,1,1,0,1,1,0,2,0,1,0,1,1,0,1, /* 3 */ 1,1,1,1,1,1,0,2,2,2,0,1,1,0,1,1, /* 4 */ 1,0,0,0,0,0,2,2,2,2,0,1,1,1,1,1, /* 5 */ 0,2,2,2,2,0,2,2,0,2,2,0,0,0,0,1, /* 6 */ 1,0,2,2,2,2,2,0,0,2,2,2,2,2,2,0, /* 7 */ 1,0,2,2,2,0,0,0,2,0,0,2,2,2,0,1, /* 8 */ 1,1,0,2,0,2,0,2,0,0,2,2,2,0,1,1, /* 9 */ 0,1,0,2,2,0,2,0,0,2,2,2,0,1,1,1, /* 10 */ 1,1,1,0,2,2,0,0,2,0,2,2,0,1,0,1, /* 11 */ 1,0,1,0,2,2,0,2,2,0,2,2,2,0,1,1, /* 12 */ 1,1,0,2,2,2,2,2,2,2,2,2,2,0,1,1, /* 13 */ 1,1,0,2,2,2,2,0,2,2,2,2,2,2,0,1, /* 14 */ 1,0,2,2,2,2,0,1,0,0,2,2,2,2,0,1, /* 15 */ 1,0,2,2,0,0,1,0,1,1,0,0,2,2,0,1, /* 16 */ 1,1,0,0,1,1,1,1,1,1,1,1,0,0,1,1, /* 17 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 18 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 /* 19 */ }; /* рисунок взрыва 5 (16,19) */ static const UCHAR pBang4[] = { 1,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1, /* 1 */ 1,1,1,1,1,1,1,1,0,2,0,1,1,0,1,1, /* 2 */ 1,1,1,0,1,1,1,0,2,2,0,1,1,1,1,0, /* 3 */ 1,0,1,1,1,1,0,2,2,2,2,0,1,0,1,1, /* 4 */ 1,1,1,0,1,1,0,2,2,2,2,0,1,1,1,1, /* 5 */ 1,0,0,0,0,0,2,2,0,2,2,0,0,1,1,1, /* 6 */ 0,2,2,2,2,2,2,2,0,2,2,2,2,0,0,1, /* 7 */ 0,2,2,2,2,2,2,0,0,2,2,2,2,2,2,0, /* 8 */ 1,0,2,2,0,0,2,0,2,0,0,0,2,2,0,1, /* 9 */ 1,0,2,2,2,0,0,2,0,2,0,2,2,0,1,1, /* 10 */ 1,1,0,2,2,2,2,0,2,0,2,2,2,0,1,0, /* 11 */ 0,1,1,0,2,2,0,2,0,2,2,2,0,1,0,1, /* 12 */ 1,1,1,0,2,0,2,0,2,0,2,2,2,0,1,1, /* 13 */ 1,1,0,2,2,0,2,2,2,2,0,2,2,0,1,1, /* 14 */ 1,0,2,2,2,2,2,2,0,2,2,2,2,2,0,1, /* 15 */ 1,0,2,2,2,2,2,0,1,0,2,2,2,2,2,0, /* 16 */ 0,2,2,2,2,0,0,1,1,1,0,0,2,2,2,0, /* 17 */ 0,2,2,0,0,1,1,0,1,0,1,1,0,0,2,0, /* 18 */ 1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,1 /* 19 */ }; /* рисунок "бонусные очки" (23,14) */ static const UCHAR pPointsBonus[] = { 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, /* 1 */ 0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0, /* 2 */ 0,2,0,0,0,0,2,0,0,0,0,2,0,0,0,0,2,0,0,0,0,2,0, /* 3 */ 0,2,0,2,2,2,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0, /* 4 */ 0,2,0,0,0,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0, /* 5 */ 0,2,2,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0,2,2,0,2,0, /* 6 */ 0,2,0,0,0,0,2,0,0,0,0,2,0,0,0,0,2,0,0,0,0,2,0, /* 7 */ 0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0, /* 8 */ 1,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,1, /* 9 */ 1,1,1,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,1,1,1, /* 10 */ 1,1,1,1,1,0,0,2,2,2,2,2,2,2,2,2,0,0,1,1,1,1,1, /* 11 */ 1,1,1,1,1,1,1,0,0,2,2,2,2,2,0,0,1,1,1,1,1,1,1, /* 12 */ 1,1,1,1,1,1,1,1,1,0,0,2,0,0,1,1,1,1,1,1,1,1,1, /* 13 */ 1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1 /* 14 */ }; /* рисунок "Kill Aliens" (24,15) */ static const UCHAR pKillAliensBonus[] = { 1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1, /* 1 */ 1,1,1,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1,1,1, /* 2 */ 1,1,1,0,2,2,0,2,2,0,2,0,2,0,2,2,0,2,2,2,0,1,1,1, /* 3 */ 1,1,0,2,2,2,0,2,0,2,2,0,2,0,2,2,0,2,2,2,2,0,1,1, /* 4 */ 1,1,0,2,2,2,0,0,2,2,2,0,2,0,2,2,0,2,2,2,2,0,1,1, /* 5 */ 1,0,2,2,2,2,0,2,0,2,2,0,2,0,2,2,0,2,2,2,2,2,0,1, /* 6 */ 1,0,2,2,2,2,0,2,2,0,2,0,2,0,0,2,0,0,2,2,2,2,0,1, /* 7 */ 0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0, /* 8 */ 0,2,0,0,0,2,0,2,2,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0, /* 9 */ 0,2,0,2,0,2,0,2,2,0,2,0,2,2,2,0,2,0,2,0,2,2,2,0, /* 10 */ 0,2,0,0,0,2,0,2,2,0,2,0,0,0,2,0,2,0,2,0,0,0,2,0, /* 11 */ 0,2,0,2,0,2,0,2,2,0,2,0,2,2,2,0,2,0,2,2,2,0,2,0, /* 12 */ 0,2,0,2,0,2,0,0,2,0,2,0,0,0,2,0,2,0,2,0,0,0,2,0, /* 13 */ 0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0, /* 14 */ 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 /* 15 */ }; /* рисунок "дополнительная жизнь" (19,13) */ static const UCHAR pExtraLifeBonus[] = { 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1, /* 1 */ 1,0,2,2,0,2,2,2,2,2,2,2,2,2,0,2,2,0,1, /* 2 */ 0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0, /* 3 */ 0,0,2,2,0,2,2,2,2,2,2,2,2,2,0,2,2,2,0, /* 4 */ 0,2,2,2,0,2,2,2,2,2,2,2,2,2,0,2,2,2,0, /* 5 */ 1,0,2,2,0,2,2,2,2,2,2,2,2,2,0,2,2,0,1, /* 6 */ 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1, /* 7 */ 1,1,1,1,1,1,0,1,1,1,1,0,2,0,1,1,1,1,1, /* 8 */ 1,1,1,1,1,0,2,0,1,1,0,2,2,0,1,1,1,1,1, /* 9 */ 1,1,1,1,0,2,2,2,0,1,1,0,2,0,1,1,1,1,1, /* 10 */ 1,1,1,1,1,0,2,0,1,1,1,0,2,0,1,1,1,1,1, /* 11 */ 1,1,1,1,1,1,0,1,1,1,0,2,2,2,0,1,1,1,1, /* 12 */ 1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1 /* 13 */ }; /* рисунок "замедления скорости шарика" (22,15) */ static const UCHAR pSlowBallBonus[] = { 1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 1 */ 1,1,0,2,2,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 2 */ 1,0,2,0,0,0,2,0,1,1,1,1,0,1,1,1,1,1,1,1,1,1, /* 3 */ 0,2,0,0,2,2,2,2,0,1,1,0,2,0,1,1,1,1,1,1,1,1, /* 4 */ 0,2,0,2,2,2,2,2,0,1,1,0,2,0,1,1,0,1,1,1,1,1, /* 5 */ 0,2,0,2,2,2,2,2,0,1,1,0,2,0,1,0,2,0,1,1,1,1, /* 6 */ 1,0,2,2,2,2,2,0,1,1,0,2,0,1,1,0,2,0,1,1,0,1, /* 7 */ 1,1,0,2,2,2,0,1,1,1,0,2,0,1,1,0,2,0,1,0,2,0, /* 8 */ 1,1,0,0,0,0,1,1,1,1,1,0,1,1,0,2,0,1,1,0,2,0, /* 9 */ 1,0,2,2,2,2,0,0,1,1,1,1,1,1,1,0,1,1,0,2,0,1, /* 10 */ 1,0,2,0,0,0,0,2,0,1,1,0,0,0,1,1,1,1,1,0,1,1, /* 11 */ 1,0,2,2,2,2,0,2,0,1,0,2,2,2,0,0,0,0,0,0,1,1, /* 12 */ 1,1,0,0,0,2,0,2,0,0,0,2,0,2,0,2,0,2,0,2,0,1, /* 13 */ 1,0,2,2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,2,2,0,1, /* 14 */ 1,1,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,1,1 /* 15 */ }; /* рисунок "большой мячик" (23,15) */ static const UCHAR pSmashBallBonus[] = { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1, /* 1 */ 1,1,0,0,0,1,1,1,1,1,0,1,1,1,1,1,0,2,2,2,0,1,1, /* 2 */ 1,0,2,2,2,0,1,1,1,0,2,0,1,1,1,0,2,0,0,2,2,0,1, /* 3 */ 0,2,0,0,2,2,0,0,0,0,2,2,0,1,0,2,0,0,2,2,2,2,0, /* 4 */ 0,2,0,2,2,2,0,2,2,2,2,2,2,0,0,2,0,2,2,2,2,2,0, /* 5 */ 0,2,2,2,2,2,0,0,0,0,2,2,0,1,0,2,2,2,2,2,2,2,0, /* 6 */ 1,0,2,2,2,0,1,1,1,0,2,0,1,1,1,0,2,2,2,2,2,0,1, /* 7 */ 1,1,0,0,0,1,1,1,1,1,0,1,1,1,1,1,0,2,2,2,0,1,1, /* 8 */ 1,0,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1, /* 9 */ 0,2,2,2,0,2,2,2,2,2,0,2,2,2,0,2,2,2,0,2,0,2,0, /* 10 */ 0,2,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,0,0,2,0,2,0, /* 11 */ 0,2,2,2,0,2,0,2,0,2,0,2,2,2,0,2,2,2,0,2,2,2,0, /* 12 */ 1,0,0,2,0,2,0,2,0,2,0,2,0,2,0,0,0,2,0,2,0,2,0, /* 13 */ 0,2,2,2,0,2,0,0,0,2,0,2,0,2,0,2,2,2,0,2,0,2,0, /* 14 */ 1,0,0,0,1,0,1,1,1,0,1,0,1,0,1,0,0,0,1,0,1,0,1 /* 15 */ }; /* рисунок "тройного шарика" (17,15) */ static const UCHAR pTripleBallBonus[] = { 1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1, /* 1 */ 1,1,1,1,1,1,1,0,2,0,1,1,1,1,1,1,1, /* 2 */ 1,0,0,0,0,0,0,2,2,2,0,0,0,0,0,0,1, /* 3 */ 0,2,2,2,2,0,2,2,2,2,2,0,2,2,2,2,0, /* 4 */ 0,2,2,2,0,0,0,0,2,0,0,0,0,2,2,2,0, /* 5 */ 0,2,2,2,0,0,0,0,2,0,0,0,0,2,2,2,0, /* 6 */ 0,2,0,0,2,0,0,0,2,0,0,0,2,0,0,2,0, /* 7 */ 1,0,0,1,0,2,0,0,0,0,0,2,0,1,0,0,1, /* 8 */ 1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1, /* 9 */ 1,1,1,1,1,1,0,2,2,2,0,1,1,1,1,1,1, /* 10 */ 1,1,1,1,1,0,2,0,0,2,2,0,1,1,1,1,1, /* 11 */ 1,1,1,1,1,0,2,0,2,2,2,0,1,1,1,1,1, /* 12 */ 1,1,1,1,1,0,2,0,2,2,2,0,1,1,1,1,1, /* 13 */ 1,1,1,1,1,1,0,2,2,2,0,1,1,1,1,1,1, /* 14 */ 1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1 /* 15 */ }; /* рисунок "рука" (22,12) */ static const UCHAR pHandBonus[] = { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1, /* 1 */ 1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,2,2,0,1,1, /* 2 */ 1,1,1,1,1,1,1,1,0,0,2,2,0,1,1,0,0,2,2,2,0,1, /* 3 */ 1,1,1,1,1,1,0,0,2,2,2,2,0,0,0,2,2,0,2,2,2,0, /* 4 */ 1,1,1,1,1,0,2,2,2,2,2,0,0,2,2,0,2,2,0,2,2,0, /* 5 */ 1,0,0,1,0,2,2,2,2,0,0,0,0,0,2,2,0,2,0,2,2,0, /* 6 */ 0,2,2,0,2,2,2,2,2,2,2,2,2,2,0,0,0,0,2,2,2,0, /* 7 */ 0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1, /* 8 */ 0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1,1, /* 9 */ 0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1,1,1, /* 10 */ 0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,0,0,0,1,1,1,1, /* 11 */ 1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1 /* 12 */ }; /* рисунок "стреляющая ракетка" (20,9) */ static const UCHAR pGunBonus[] = { 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1, /* 1 */ 1,0,2,2,2,2,2,0,2,0,2,2,0,2,2,2,2,2,0,1, /* 2 */ 0,2,0,0,0,0,0,2,0,0,2,2,2,0,0,0,0,0,2,0, /* 3 */ 0,2,0,0,0,0,2,0,0,2,2,2,2,2,0,0,0,0,2,0, /* 4 */ 1,0,2,2,2,2,0,0,0,0,0,0,0,0,2,2,2,2,0,1, /* 5 */ 1,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1, /* 6 */ 1,1,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1,1, /* 7 */ 1,1,1,0,2,2,2,2,2,2,2,2,2,2,2,2,0,1,1,1, /* 8 */ 1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1 /* 9 */ }; /* рисунок "большая ракетка" (22,11) */ static const UCHAR pExtendedRacketBonus[] = { 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1, /* 1 */ 1,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,1, /* 2 */ 0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0, /* 3 */ 0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0, /* 4 */ 1,0,0,2,0,2,2,2,2,2,2,2,2,2,2,2,2,0,2,0,0,1, /* 5 */ 1,0,2,2,0,0,0,0,2,2,2,2,2,2,0,0,0,0,2,2,0,1, /* 6 */ 0,2,2,2,2,2,2,2,0,2,2,2,2,0,2,2,2,2,2,2,2,0, /* 7 */ 1,0,2,2,0,0,0,0,2,2,2,2,2,2,0,0,0,0,2,2,0,1, /* 8 */ 1,1,0,2,0,2,2,2,2,2,2,2,2,2,2,2,2,0,2,0,1,1, /* 9 */ 1,1,1,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1,1,1, /* 10 */ 1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1 /* 11 */ }; /* рисунок "реактивный ранец" (21,12) */ static const UCHAR pRocketPackBonus[] = { 1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1, /* 1 */ 1,1,1,0,0,2,0,1,0,0,0,0,0,1,0,0,2,0,1,1,1, /* 2 */ 1,1,0,2,0,2,2,0,2,2,2,2,2,0,2,0,2,2,0,1,1, /* 3 */ 1,0,2,0,0,2,2,2,0,2,2,2,0,2,0,0,2,2,2,0,1, /* 4 */ 1,0,2,0,0,2,2,2,0,0,0,0,0,2,0,0,2,2,2,0,1, /* 5 */ 0,2,0,0,0,2,2,2,2,0,1,0,2,0,0,0,2,2,2,2,0, /* 6 */ 0,2,0,0,2,2,2,2,2,0,0,0,2,0,0,2,2,2,2,2,0, /* 7 */ 0,2,0,0,2,2,2,2,2,0,2,0,2,0,0,2,2,2,2,2,0, /* 8 */ 1,0,2,2,0,0,0,0,0,0,2,0,0,2,2,0,0,0,0,0,1, /* 9 */ 0,2,0,0,2,2,2,2,2,0,0,0,2,0,0,2,2,2,2,2,0, /* 10 */ 0,2,0,0,2,2,2,2,2,0,1,0,2,0,0,2,2,2,2,2,0, /* 11 */ 1,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,1 /* 12 */ }; /* рисунок "400 очков" (22,10) */ static const UCHAR pPoints400Bonus[] = { 1,0,0,1,1,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1, /* 1 */ 0,2,2,0,1,1,1,0,2,2,2,2,2,2,0,2,2,2,2,2,2,0, /* 2 */ 0,2,2,0,0,0,1,0,2,2,2,2,2,2,0,2,2,2,2,2,2,0, /* 3 */ 0,2,2,0,2,2,0,0,2,2,0,0,2,2,0,2,2,0,0,2,2,0, /* 4 */ 0,2,2,0,2,2,0,0,2,2,0,0,2,2,0,2,2,0,0,2,2,0, /* 5 */ 0,2,2,2,2,2,2,0,2,2,2,2,2,2,0,2,2,2,2,2,2,0, /* 6 */ 0,2,2,2,2,2,2,0,2,2,2,2,2,2,0,2,2,2,2,2,2,0, /* 7 */ 1,0,0,0,2,2,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1, /* 8 */ 1,1,1,0,2,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 9 */ 1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 /* 10 */ }; /* рисунок реактивного пламяни 1 (20,16) */ static const UCHAR pRocketFlame1[] = { 1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,0,0,1,1,1, /* 1 */ 1,1,0,2,2,2,0,1,1,1,1,1,1,1,0,2,2,0,1,1, /* 2 */ 1,0,0,2,2,2,2,0,1,1,1,1,1,1,0,2,0,2,0,1, /* 3 */ 1,0,2,2,0,2,2,0,1,1,1,1,1,0,2,0,2,0,0,1, /* 4 */ 1,0,2,0,2,0,2,2,0,1,1,1,1,0,0,0,0,0,2,0, /* 5 */ 0,2,0,2,0,0,2,2,0,1,1,1,1,0,2,0,2,0,0,1, /* 6 */ 1,0,0,0,2,0,0,2,0,1,1,1,1,1,0,0,0,2,0,1, /* 7 */ 1,0,2,0,0,0,2,0,0,1,1,1,1,1,0,2,0,0,1,1, /* 8 */ 1,0,0,2,0,2,0,0,0,1,1,1,1,1,1,0,2,0,1,1, /* 9 */ 1,0,2,0,2,0,0,2,0,1,1,1,1,1,1,0,0,0,1,1, /* 10 */ 1,1,0,0,0,0,2,0,0,1,1,1,1,1,1,0,2,0,1,1, /* 11 */ 1,1,0,2,0,2,0,2,0,1,1,1,1,1,1,1,0,1,1,1, /* 12 */ 1,1,1,0,0,0,2,0,1,1,1,1,1,1,1,1,1,1,1,1, /* 13 */ 1,1,1,0,0,2,0,0,1,1,1,1,1,1,1,1,1,1,1,1, /* 14 */ 1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 15 */ 1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1 /* 16 */ }; /* рисунок реактивного пламяни 2 (20,16) */ static const UCHAR pRocketFlame2[] = { 1,1,1,0,0,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1, /* 1 */ 1,1,0,2,2,0,1,1,1,1,1,1,1,0,2,2,2,0,1,1, /* 2 */ 1,0,2,0,2,0,1,1,1,1,1,1,0,2,0,2,0,2,0,1, /* 3 */ 1,0,0,2,0,2,0,1,1,1,1,1,0,0,2,0,2,2,2,0, /* 4 */ 0,2,0,0,0,0,0,1,1,1,1,0,2,2,0,2,0,2,0,0, /* 5 */ 0,0,0,2,0,2,0,1,1,1,1,0,0,2,0,2,0,0,0,0, /* 6 */ 1,0,2,0,0,0,1,1,1,1,1,0,2,0,0,0,2,0,2,0, /* 7 */ 1,0,0,0,2,0,1,1,1,1,1,0,0,0,2,0,0,0,0,1, /* 8 */ 1,1,0,2,0,1,1,1,1,1,1,0,2,0,0,0,2,0,0,1, /* 9 */ 1,1,0,0,0,1,1,1,1,1,1,0,0,0,0,2,0,2,0,1, /* 10 */ 1,1,0,2,0,1,1,1,1,1,1,1,0,0,2,0,0,0,1,1, /* 11 */ 1,1,1,0,1,1,1,1,1,1,1,1,0,0,0,0,2,0,1,1, /* 12 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,0,2,0,0,0,1,1, /* 13 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1, /* 14 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,2,0,1,1,1, /* 15 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1 /* 16 */ }; /* рисунок бомбы и ее тени (12,11) */ static const UCHAR pBomb[] = { 1,0,0,0,0,0,1,0,0,0,0,0, /* 1 */ 0,2,0,2,2,2,0,1,0,0,0,1, /* 2 */ 1,0,2,2,2,0,1,1,1,1,1,1, /* 3 */ 1,1,0,0,0,1,1,1,0,0,0,1, /* 4 */ 1,0,2,2,2,0,1,0,0,0,0,0, /* 5 */ 0,2,0,2,2,2,0,0,0,0,0,0, /* 6 */ 0,2,0,2,2,2,0,0,0,0,0,0, /* 7 */ 0,2,0,2,2,2,0,0,0,0,0,0, /* 8 */ 0,2,0,2,2,2,0,1,0,0,0,1, /* 9 */ 1,0,2,2,2,0,1,1,1,1,1,1, /* 10 */ 1,1,0,0,0,1,1,1,1,1,1,1 /* 11 */ }; /* рисунок пуль (8,8) */ static const UCHAR pBullet[] = { 1,0,0,1,1,0,0,1, /* 1 */ 0,2,0,0,0,2,0,0, /* 2 */ 0,2,0,0,0,2,0,0, /* 3 */ 0,2,0,0,0,2,0,0, /* 4 */ 1,0,0,1,1,0,0,1, /* 5 */ 0,1,0,1,1,0,1,0, /* 6 */ 0,1,0,1,1,0,1,0, /* 7 */ 0,1,0,1,1,0,1,0 /* 8 */ }; /* рисунки хлопков пулек (32,8) */ static const UCHAR pPlop[] = { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,1,1,1,0,0,1,1,0,0,1, /* 1 */ 1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,1,0,0,1,0,1,0,0,1,1,1,1,0,0, /* 2 */ 1,1,1,0,0,1,1,1,1,1,0,1,1,0,1,1,0,1,0,1,1,0,1,0,0,1,1,1,0,1,1,0, /* 3 */ 1,1,0,1,1,0,1,1,1,0,1,0,0,1,0,1,0,1,0,1,1,1,0,1,1,1,0,1,1,1,1,1, /* 4 */ 1,1,0,1,1,0,1,1,1,0,1,0,0,1,0,1,1,0,1,1,1,0,1,0,1,1,1,1,1,1,1,1, /* 5 */ 1,1,1,0,0,1,1,1,1,1,0,1,1,0,1,1,0,1,0,1,1,0,1,0,0,1,1,1,0,1,1,0, /* 6 */ 1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,1,0,0,1,0,1,0,0,1,1,1,1,0,0, /* 7 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,1,1,1,0,0,1,1,0,0,1 /* 8 */ }; /* рисунок осколков ракетки и их тени (35,12) */ static const UCHAR pSlivers[] = { 1,1,1,0,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 1 */ 1,1,0,2,0,1,1,1,1,0,2,0,1,1,1,1,1,0,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1, /* 2 */ 1,0,0,2,0,0,1,1,1,0,2,0,1,1,1,1,0,2,0,1,1,1,1,0,2,0,1,1,1,1,1,0,1,1,1, /* 3 */ 0,2,2,2,2,2,0,1,0,2,2,2,0,1,1,0,2,2,2,0,1,1,1,0,2,0,1,1,1,1,0,2,0,1,1, /* 4 */ 1,0,0,2,0,0,1,1,1,0,2,0,1,1,1,1,0,2,0,1,1,1,1,1,0,1,1,1,1,1,1,0,1,1,1, /* 5 */ 1,1,0,2,0,1,1,1,1,0,2,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 6 */ 1,1,1,0,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 7 */ 1,1,0,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 8 */ 1,1,0,1,1,1,1,0,1,1,1,1,0,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 9 */ 0,0,0,0,0,1,0,0,0,1,1,0,0,0,1,1,1,0,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1, /* 10 */ 1,1,0,1,1,1,1,0,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 11 */ 1,1,0,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 /* 12 */ }; /* рисунок цифр (60,8) */ static const UCHAR pDigitMsg[] = { 1,0,0,0,0,1,1,1,0,0,1,1,1,0,0,0,0,1,1,0,0,0,0,1,1,1,1,0,0,1,1,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,0,0,0,1, /* 1 */ 0,0,1,1,0,0,0,0,0,0,1,1,0,0,1,1,0,0,0,1,1,1,0,0,1,1,0,0,0,1,1,0,0,1,1,1,1,0,0,1,1,1,0,1,1,1,0,0,0,0,1,1,0,0,0,0,1,1,0,0, /* 2 */ 0,0,1,0,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,1,1,0,0,1,1,0,0,0,1,1,0,0,0,0,1,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,1,0,0,0,0,1,1,0,0, /* 3 */ 0,0,1,1,0,0,1,1,0,0,1,1,1,1,1,1,0,0,1,1,0,0,0,1,1,0,1,0,0,1,1,0,1,1,0,0,0,0,0,0,0,1,1,1,1,0,0,1,1,0,0,0,0,1,0,0,1,1,0,0, /* 4 */ 0,0,1,1,0,0,1,1,0,0,1,1,1,1,1,0,0,1,1,1,1,1,0,0,0,1,1,0,0,1,1,1,1,1,0,0,0,0,1,1,0,0,1,1,1,0,0,1,0,0,1,1,0,0,1,0,0,0,0,0, /* 5 */ 0,0,0,1,0,0,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,1,1,0,0,1,1,1,0,0,1,0,0,1,1,0,0,1,1,1,1,0,0, /* 6 */ 0,0,1,1,0,0,1,1,0,0,1,1,1,0,0,1,1,1,0,1,1,1,0,0,1,1,1,0,0,1,0,1,1,1,0,0,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,1,0,0,1, /* 7 */ 1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,1,1,0,0,0,0,1,1,1,0,0,1,1,1,0,0,0,0,1,0,0,0,0,1,1 /* 8 */ }; /* рисунок надписи 'player' (47,10) */ static const UCHAR pPlayer[] = { 1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 1 */ 1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 2 */ 0,0,0,1,0,0,1,1,1,1,1,0,0,1,1,1,1,1,0,0,0,0,1,1,0,0,0,0,1,0,0,0,1,1,0,0,0,0,1,1,1,0,0,0,1,0,0, /* 3 */ 1,0,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,1,0,0,0,1,0, /* 4 */ 1,0,0,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,0,0,0,0,0,1,1,0,0,1,0,0,1,1,1,0,0,0,0,0,0,1,1,1,0,0,1,1,1, /* 5 */ 1,0,0,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,0,1,1,1,0,1,0,0,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1, /* 6 */ 1,0,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,0,1,1,1,0,0,0,1,1,1,1,0,0,1,1,1,0,1,1,1,0,0,1,1,1, /* 7 */ 1,0,0,1,0,0,1,1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,1,0,0,1,1,1,1,1,0,0,0,0,1,1,1,0,0,0,0,0,1, /* 8 */ 1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 9 */ 0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 /* 10 */ }; /* рисунок надписи 'round' (39,8) */ static const UCHAR pRound[] = { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1, /* 1 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1, /* 2 */ 0,0,0,1,0,0,1,1,1,0,0,0,0,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,1,1,1,1,0,0,1,0,0,1, /* 3 */ 1,0,0,0,1,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,0,0,0,1, /* 4 */ 1,0,0,1,1,1,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1, /* 5 */ 1,0,0,1,1,1,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1, /* 6 */ 1,0,0,1,1,1,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,0,0,0,1, /* 7 */ 0,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1,0,0,1,0,0,0 /* 8 */ }; /* рисунок надписи 'pause' (39,8) */ static const UCHAR pPause[] = { 0,0,0,1,0,0,1,1,1,1,0,0,0,0,1,1,0,0,0,1,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,1, /* 1 */ 1,0,0,0,1,0,0,1,1,1,1,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0, /* 2 */ 1,0,0,1,1,0,0,1,1,1,0,0,0,0,0,1,1,0,0,1,1,0,0,1,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0, /* 3 */ 1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,1,1,0,0,0,0,1,1,0,0,1,1,1,1, /* 4 */ 1,0,0,0,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,1,0, /* 5 */ 1,0,0,1,0,0,1,1,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,1,0,0,0,0,1, /* 6 */ 1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 7 */ 0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 /* 8 */ }; /* рисунок надписи 'game' (31,8) */ static const UCHAR pGame[] = { 1,0,0,1,0,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,1, /* 1 */ 0,0,1,0,0,0,1,1,1,1,1,0,0,1,1,0,0,1,0,0,1,0,0,1,1,0,0,1,1,0,0, /* 2 */ 0,0,1,1,0,0,1,1,0,0,0,0,0,1,1,0,0,1,0,0,1,0,0,1,1,0,0,0,0,0,0, /* 3 */ 0,0,1,1,0,0,1,0,0,1,1,0,0,1,1,0,0,1,0,0,1,0,0,1,1,0,0,1,1,1,1, /* 4 */ 0,0,1,0,0,0,1,0,0,1,1,0,0,1,1,0,0,1,0,0,1,0,0,1,1,0,0,1,1,1,0, /* 5 */ 1,0,0,1,0,0,1,1,0,0,0,0,0,0,1,0,0,1,0,0,1,0,0,0,1,1,0,0,0,0,1, /* 6 */ 1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 7 */ 1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 /* 8 */ }; /* рисунок надписи 'over' (28,6) */ static const UCHAR pOver[] = { 1,0,0,0,0,1,1,0,0,0,1,0,0,0,1,1,0,0,0,0,1,1,0,0,0,1,0,0, /* 1 */ 0,0,1,1,0,0,1,1,0,0,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,0,1,0, /* 2 */ 0,0,1,1,0,0,1,1,0,0,1,0,0,1,1,0,0,0,0,0,0,1,1,0,0,1,1,1, /* 3 */ 0,0,1,1,0,0,1,1,1,0,1,0,1,1,1,0,0,1,1,1,1,1,1,0,0,1,1,1, /* 4 */ 0,0,1,1,0,0,1,1,1,0,0,0,1,1,1,0,0,1,1,1,0,1,1,0,0,1,1,1, /* 5 */ 1,0,0,0,0,1,1,1,1,0,0,0,1,1,1,1,0,0,0,0,1,1,0,0,0,0,0,1 /* 6 */ }; /* набор рисунков для формирования барьера (левая сторона) (8,8) */ static const UCHAR pBarLeft0[] = { 0,0,13,13,13,13,0,0, /* 1 */ 0,13,13,0,13,13,13,0, /* 2 */ 13,13,0,0,13,13,13,13, /* 3 */ 13,0,0,13,13,13,13,13, /* 4 */ 13,0,0,13,13,13,13,13, /* 5 */ 13,0,0,13,13,13,13,13, /* 6 */ 13,0,0,13,13,13,13,13, /* 7 */ 0,13,13,0,0,0,0,0 /* 8 */ }; static const UCHAR pBarLeft1[] = { 17,0,0,17,17,17,17,17, /* 1 */ 17,0,0,17,17,17,17,17, /* 2 */ 17,0,0,17,17,17,17,17, /* 3 */ 17,0,0,17,17,17,17,17, /* 4 */ 17,0,0,17,17,17,17,17, /* 5 */ 17,0,0,17,17,17,17,17, /* 6 */ 17,0,0,17,17,17,17,17, /* 7 */ 17,0,0,17,17,17,17,17 /* 8 */ }; static const UCHAR pBarLeft2[] = { 0,13,13,0,0,0,0,0, /* 1 */ 13,0,0,13,13,13,13,13, /* 2 */ 13,0,0,13,13,13,13,13, /* 3 */ 13,0,0,13,13,13,13,13, /* 4 */ 13,0,0,13,13,13,13,13, /* 5 */ 13,13,0,0,13,13,13,13, /* 6 */ 0,13,13,0,13,13,13,0, /* 7 */ 0,0,13,13,13,13,0,0 /* 8 */ }; static const UCHAR pBarLeft3[] = { 0,17,17,17,17,17,17,17, /* 1 */ 17,0,17,0,0,0,0,0, /* 2 */ 17,17,0,17,0,0,0,0, /* 3 */ 17,0,17,0,17,17,17,17, /* 4 */ 17,0,0,17,0,17,17,17, /* 5 */ 17,0,0,17,17,0,17,17, /* 6 */ 17,0,0,17,17,17,0,17, /* 7 */ 17,0,0,17,17,17,17,0 /* 8 */ }; /* (8,24) */ static const UCHAR pBarLeft4[] = { 0,0,0,0,0,0,0,0, /* 1 */ 0,0,18,18,18,18,0,0, /* 2 */ 0,0,18,18,18,18,0,0, /* 3 */ 0,0,18,18,18,18,0,0, /* 4 */ 0,0,18,18,18,18,0,0, /* 5 */ 0,0,18,18,18,18,0,0, /* 6 */ 0,0,18,18,18,18,0,0, /* 7 */ 0,0,18,18,18,18,0,0, /* 8 */ 0,0,0,0,0,0,0,0, /* 9 */ 0,14,0,14,14,14,14,0, /* 10 */ 0,14,0,14,14,14,14,0, /* 11 */ 0,14,0,14,14,14,14,0, /* 12 */ 0,14,0,14,14,14,14,0, /* 13 */ 0,14,0,14,14,14,14,0, /* 14 */ 0,14,0,14,14,14,14,0, /* 15 */ 0,0,0,0,0,0,0,0, /* 16 */ 0,0,18,18,18,18,0,0, /* 17 */ 0,0,18,18,18,18,0,0, /* 18 */ 0,0,18,18,18,18,0,0, /* 19 */ 0,0,18,18,18,18,0,0, /* 20 */ 0,0,18,18,18,18,0,0, /* 21 */ 0,0,18,18,18,18,0,0, /* 22 */ 0,0,18,18,18,18,0,0, /* 23 */ 0,0,0,0,0,0,0,0 /* 24 */ }; /* набор рисунков для формирования барьера (правая сторона) (8,8) */ static const UCHAR pBarRight0[] = { 0,0,13,13,13,13,0,0, /* 1 */ 0,13,13,13,0,13,13,0, /* 2 */ 13,13,13,13,0,0,13,13, /* 3 */ 13,13,13,13,13,0,0,13, /* 4 */ 13,13,13,13,13,0,0,13, /* 5 */ 13,13,13,13,13,0,0,13, /* 6 */ 13,13,13,13,13,0,0,13, /* 7 */ 0,0,0,0,0,13,13,0 /* 8 */ }; static const UCHAR pBarRight1[] = { 17,17,17,17,17,0,0,17, /* 1 */ 17,17,17,17,17,0,0,17, /* 2 */ 17,17,17,17,17,0,0,17, /* 3 */ 17,17,17,17,17,0,0,17, /* 4 */ 17,17,17,17,17,0,0,17, /* 5 */ 17,17,17,17,17,0,0,17, /* 6 */ 17,17,17,17,17,0,0,17, /* 7 */ 17,17,17,17,17,0,0,17, /* 8 */ }; static const UCHAR pBarRight2[] = { 0,0,0,0,0,13,13,0, /* 1 */ 13,13,13,13,13,0,0,13, /* 2 */ 13,13,13,13,13,0,0,13, /* 3 */ 13,13,13,13,13,0,0,13, /* 4 */ 13,13,13,13,13,0,0,13, /* 5 */ 13,13,13,13,0,0,13,13, /* 6 */ 0,13,13,13,0,13,13,0, /* 7 */ 0,0,13,13,13,13,0,0 /* 8 */ }; static const UCHAR pBarRight3[] = { 17,17,17,17,17,17,17,0, /* 1 */ 0,0,0,0,0,17,0,17, /* 2 */ 0,0,0,0,17,0,17,17, /* 3 */ 17,17,17,17,0,17,0,17, /* 4 */ 17,17,17,0,17,0,0,17, /* 5 */ 17,17,0,17,17,0,0,17, /* 6 */ 17,0,17,17,17,0,0,17, /* 7 */ 0,17,17,17,17,0,0,17 /* 8 */ }; /* (8,24) */ static const UCHAR pBarRight4[] = { 0,0,0,0,0,0,0,0, /* 1 */ 0,0,18,18,18,18,0,0, /* 2 */ 0,0,18,18,18,18,0,0, /* 3 */ 0,0,18,18,18,18,0,0, /* 4 */ 0,0,18,18,18,18,0,0, /* 5 */ 0,0,18,18,18,18,0,0, /* 6 */ 0,0,18,18,18,18,0,0, /* 7 */ 0,0,18,18,18,18,0,0, /* 8 */ 0,0,0,0,0,0,0,0, /* 9 */ 0,14,14,14,14,0,14,0, /* 10 */ 0,14,14,14,14,0,14,0, /* 11 */ 0,14,14,14,14,0,14,0, /* 12 */ 0,14,14,14,14,0,14,0, /* 13 */ 0,14,14,14,14,0,14,0, /* 14 */ 0,14,14,14,14,0,14,0, /* 15 */ 0,0,0,0,0,0,0,0, /* 16 */ 0,0,18,18,18,18,0,0, /* 17 */ 0,0,18,18,18,18,0,0, /* 18 */ 0,0,18,18,18,18,0,0, /* 19 */ 0,0,18,18,18,18,0,0, /* 20 */ 0,0,18,18,18,18,0,0, /* 21 */ 0,0,18,18,18,18,0,0, /* 22 */ 0,0,18,18,18,18,0,0, /* 23 */ 0,0,0,0,0,0,0,0 /* 24 */ }; /* набор рисунков для формирования барьера (верхняя сторона) (8,8) */ static const UCHAR pBarTop0[] = { 0,0,13,13,0,13,13,0, /* 1 */ 0,13,13,0,13,0,0,13, /* 2 */ 13,13,0,0,13,0,0,13, /* 3 */ 13,0,0,13,0,13,13,0, /* 4 */ 13,13,13,13,0,13,13,0, /* 5 */ 13,13,13,13,0,13,13,0, /* 6 */ 0,13,13,13,0,13,13,0, /* 7 */ 0,0,13,13,0,13,13,0 /* 8 */ }; static const UCHAR pBarTop1[] = { 17,17,17,17,17,17,17,17, /* 1 */ 0,0,0,0,0,0,0,0, /* 2 */ 0,0,0,0,0,0,0,0, /* 3 */ 17,17,17,17,17,17,17,17, /* 4 */ 17,17,17,17,17,17,17,17, /* 5 */ 17,17,17,17,17,17,17,17, /* 6 */ 17,17,17,17,17,17,17,17, /* 7 */ 17,17,17,17,17,17,17,17 /* 8 */ }; static const UCHAR pBarTop2[] = { 0,13,13,0,13,13,0,0, /* 1 */ 13,0,0,13,0,13,13,0, /* 2 */ 13,0,0,13,0,0,13,13, /* 3 */ 0,13,13,0,13,0,0,13, /* 4 */ 0,13,13,0,13,13,13,13, /* 5 */ 0,13,13,0,13,13,13,13, /* 6 */ 0,13,13,0,13,13,13,0, /* 7 */ 0,13,13,0,13,13,0,0 /* 8 */ }; static const UCHAR pBarTop3[] = { 0,0,13,13,13,13,13,0, /* 1 */ 0,13,13,0,0,0,0,13, /* 2 */ 13,13,0,0,0,0,0,13, /* 3 */ 13,0,0,13,13,13,13,0, /* 4 */ 13,13,13,13,13,13,13,0, /* 5 */ 13,13,13,13,13,13,13,0, /* 6 */ 0,13,13,13,13,13,13,0, /* 7 */ 0,0,13,13,13,13,13,0 /* 8 */ }; static const UCHAR pBarTop4[] = { 0,13,13,13,13,13,0,0, /* 1 */ 13,0,0,0,0,13,13,0, /* 2 */ 13,0,0,0,0,0,13,13, /* 3 */ 0,13,13,13,13,0,0,13, /* 4 */ 0,13,13,13,13,13,13,13, /* 5 */ 0,13,13,13,13,13,13,13, /* 6 */ 0,13,13,13,13,13,13,0, /* 7 */ 0,13,13,13,13,13,0,0 /* 8 */ }; /* (24,8) */ static const UCHAR pBarTop5[] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 1 */ 0,0,0,0,0,0,0,0,0,14,14,14,14,14,14,0,0,0,0,0,0,0,0,0, /* 2 */ 0,18,18,18,18,18,18,18,0,0,0,0,0,0,0,0,18,18,18,18,18,18,18,0, /* 3 */ 0,18,18,18,18,18,18,18,0,14,14,14,14,14,14,0,18,18,18,18,18,18,18,0, /* 4 */ 0,18,18,18,18,18,18,18,0,14,14,14,14,14,14,0,18,18,18,18,18,18,18,0, /* 5 */ 0,18,18,18,18,18,18,18,0,14,14,14,14,14,14,0,18,18,18,18,18,18,18,0, /* 6 */ 0,0,0,0,0,0,0,0,0,14,14,14,14,14,14,0,0,0,0,0,0,0,0,0, /* 7 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* 8 */ }; /* содержит параметры цвета из которых состоит блок */ typedef struct { int color1; int color2; } BLOCK, *LPBLOCK; /* структура описывающая сцену */ GAMESCENE scene; /* строка форматирования отладочного сообщения */ static const TCHAR sFormatDebug[] = _T("fps %02d; frame %02d; draw %02d;"); /* координаты для отображения дебажного сообщения */ static DWORD dwDebugX,dwDebugY; /* содержит используемые цвета */ static UINT palette[CL_MAX]; /* * Содержит рисунки кирпичей. Расчитывается как размер кирпича (16x8), * умноженное на количество кирпичей, (6 строк по 7 столбцов). */ static UCHAR pBlocks[16*8*6*7]; /* переменные для расчета скорости заполнения сцены */ static int lSpeedBuff[TIME_BUFF]; static int pSpeed; static int lSpeedDraw; /* рисует горизонтальную линию */ static void HLine(int x1, int x2, int y, int color) { int length, i; UINT pixel,*v1,*v2; /* сделаем чтобы x2 > x1 */ if (x1 > x2) { unsigned int temp = x1; x1 = x2; x2 = temp; } /* расчитаем цвет линии */ pixel = palette[color]; /* расчитаем длину линии */ length = x2 - x1 + (1 * 2); /* нарисуем линию */ v1 = ptImage + SCREEN_WIDTH * y + x1; v2 = v1 + SCREEN_WIDTH; for (i = 0; i < length; i++) { v1[i] = pixel; v2[i] = pixel; } } /* рисует вертикальную линию */ static void VLine(int y1, int y2, int x, int color) { int i,length; UINT pixel,*v1,*v2; /* сделаем чтобы y2 > y1 */ if (y1 > y2) { int temp = y1; y1 = y2; y2 = temp; } /* расчитаем служебные переменные */ v1 = ptImage + SCREEN_WIDTH * y1 + x; v2 = v1 + 1; length = y2 - y1 + 1; pixel = palette[color]; /* нарисуем линию */ for (i = 0; i <= length; i++) { /* отобразим точки */ *v1 = pixel; *v2 = pixel; /* увеличим координаты */ v1 += SCREEN_WIDTH; v2 += SCREEN_WIDTH; } } /* отображает точку */ static void PlotPixel(int x, int y, int color) { UINT *video,pixel; /* расчитаем координаты точки */ video = ptImage + y * SCREEN_WIDTH + x; pixel = palette[color]; /* отобразим точку */ *(video) = pixel; *(video + 1) = pixel; *(video + SCREEN_WIDTH) = pixel; *(video + SCREEN_WIDTH + 1) = pixel; } /* рисует поверхность */ static void PlotPattern(const UCHAR *pattern, int pitchPattern, int width, int height, int x, int y) { UINT *video; int i,j; /* расчитаем точку от которой начинается прорисовка поверхности */ video = ptImage + (y * SCREEN_WIDTH + x); /* отобразим поверхность */ for (i = 0; i < height; i++) { for (j = 0; j < width; j++) { UINT pixel,*p; /* получим отображаемый пиксель */ pixel = palette[pattern[j]]; /* получим точку на поверхносте */ p = video + (j * SCALE); *(p) = pixel; *(p + 1) = pixel; *(p + SCREEN_WIDTH) = pixel; *(p + SCREEN_WIDTH + 1) = pixel; } /* периместим поверхности на следующие строчки */ video += SCREEN_WIDTH * 2; pattern += pitchPattern; } } /* рисует поверхности с учетом прозрачности */ static void PlotSurface(const UCHAR *pattern, int pitchPattern, int width, int height, int x, int y) { UINT *video,background,black; int i,j; /* получим цвета */ background = palette[scene.background+CL_YELLOW_BACK]; black = palette[CL_BLACK]; /* расчитаем точку от которой начинается прорисовка поверхности */ video = ptImage + (y * SCREEN_WIDTH + x); /* отобразим поверхность */ for (i = 0; i < height; i++) { for (j = 0; j < width; j++) { UCHAR pixel; UINT *p; int py,px; /* проверим, что точка не пересекла крайнии линии игрового окна */ py = y + (i * SCALE); if ((py >= GAME_Y + GAME_HEIGHT) || (py < GAME_Y)) continue; px = x + (j * SCALE); if ((px < GAME_X) || (px >= GAME_X + GAME_WIDTH)) continue; /* прозрачный пиксель */ pixel = pattern[j]; if (pixel == CL_TRANSP) continue; /* получим точку на поле */ p = video + (j * SCALE); /* отобразим точку */ if (pixel) { /* цвет поверхности */ *(p) = background; *(p + 1) = background; *(p + SCREEN_WIDTH) = background; *(p + SCREEN_WIDTH + 1) = background; } else { /* видимая точка поверхности */ *(p) = black; *(p + 1) = black; *(p + SCREEN_WIDTH) = black; *(p + SCREEN_WIDTH + 1) = black; } } /* периместим поверхности на следующие строчки */ video += SCREEN_WIDTH * 2; pattern += pitchPattern; } } /* если точка пренадлежит блоку то возвращаются его цвета */ static int GetBlock(LPBLOCK lpBlock, int px, int py) { int x,y; int block; /* сформируем указатель и проверим его */ x = px - (GAME_X + (8 * SCALE)); y = py - (GAME_Y + (8 * SCALE)) - ((3 * 8) * SCALE); if ((y < 0) || (x < 0)) return 0; x /= (16 * SCALE); y /= (8 * SCALE); if ((y >= 12) || (x >= 15)) return 0; /* проверим, что блок сушествует */ block = scene.block[y][x]; if (!block) return 0; /* заполняем информацию о блоке */ switch ((block & 0x0f) - 1) { case 0: /* кирпич желтый, полоска черная */ lpBlock->color1 = CL_BLACK; lpBlock->color2 = CL_YELLOW; break; case 1: /* кирпич розовый, полоска белая */ lpBlock->color1 = CL_WHITE; lpBlock->color2 = CL_ROSY; break; case 2: /* кирпич красный, полоска белая */ lpBlock->color1 = CL_WHITE; lpBlock->color2 = CL_RED; break; case 3: /* кирпич зеленый, полоска черная */ lpBlock->color1 = CL_BLACK; lpBlock->color2 = CL_GREEN; break; case 4: /* кирпич синий, полоска белая */ lpBlock->color1 = CL_WHITE; lpBlock->color2 = CL_BLUE; break; case 5: /* кирпич черный, полоска белая */ lpBlock->color1 = CL_WHITE; lpBlock->color2 = CL_BLACK; break; default: return 0; } return 1; } /* * Рисует фигуру с учетом прозрачности и цветов блоков. * Эта функция отличается от функции 'PlotSurface' тем, * что 'PlotFigure' учитывает блоки на поле, т.е. если * фигура накладывается на блок то ее цвет коректируется * в зависимости от цвета блока. */ static void PlotFigure(const UCHAR *pattern, int pitchPattern, int width, int height, int x, int y) { UINT *video,background,black; int i,j; /* получим цвета */ background = palette[scene.background+CL_YELLOW_BACK]; black = palette[CL_BLACK]; /* расчитаем точку от которой начинается прорисовка фигуры */ video = ptImage + y * SCREEN_WIDTH + x; /* отобразим фигуру */ for (i = 0; i < height; i++) { for (j = 0; j < width; j++) { BLOCK block; UCHAR pixel; UINT *p; int py,px; /* проверим, что точка не пересекла крайнии линии игрового окна */ py = y + (i * SCALE); if ((py >= GAME_Y + GAME_HEIGHT) || (py < GAME_Y)) continue; px = x + (j * SCALE); if ((px < GAME_X) || (px >= GAME_X + GAME_WIDTH)) continue; /* прозрачная точка */ if ((pixel = pattern[j]) == CL_TRANSP) continue; /* получим точку на поле */ p = video + (j * SCALE); /* прорисуем точку */ if (GetBlock(&block,px,py)) { /* точка пренадлежит блоку */ if (pixel) { UINT color = palette[block.color1]; *(p) = color; *(p + 1) = color; *(p + SCREEN_WIDTH) = color; *(p + SCREEN_WIDTH + 1) = color; } else { UINT color = palette[block.color2]; *(p) = color; *(p + 1) = color; *(p + SCREEN_WIDTH) = color; *(p + SCREEN_WIDTH + 1) = color; } } else { /* точка не пренадлежит блоку */ if (pixel) { *(p) = background; *(p + 1) = background; *(p + SCREEN_WIDTH) = background; *(p + SCREEN_WIDTH + 1) = background; } else { *(p) = black; *(p + 1) = black; *(p + SCREEN_WIDTH) = black; *(p + SCREEN_WIDTH + 1) = black; } } } /* периведем поверхности на следующие строчки */ pattern += pitchPattern; video += SCREEN_WIDTH * SCALE; } } /* отобразить рисунок игрового поля */ static void ShapeBackground(void) { const UCHAR *pattern; int x,y; /* определим рисунок */ switch (scene.background) { case BACKGROUND_0: pattern = pBackGround0; break; case BACKGROUND_1: pattern = pBackGround1; break; case BACKGROUND_2: pattern = pBackGround2; break; case BACKGROUND_3: pattern = pBackGround3; break; default: return; } /* заполним поле рисунком */ for (y = GAME_Y; y < GAME_Y + GAME_HEIGHT; y += 16 * SCALE) { for (x = GAME_X; x < GAME_X + GAME_WIDTH; x += 16 * SCALE) PlotSurface(pattern,16,16,16,x,y); } } /* отображает призовые очки */ static void PrintDigit(int score, int x, int y) { const UCHAR *pattern; TCHAR buff[32]; int i,digit; /* преобразуем значение в строку */ _stprintf(buff,_T("%06d"),score); /* отобразим строку */ for (i = 0; i < 6; i++, x += 8) { digit = buff[i] - _T('0'); if (digit < 5) { pattern = pDigitScore04; } else { pattern = pDigitScore59; digit -= 5; } pattern += digit * 7; PlotSurface(pattern,35,7,8,GetX(x),GetY(y)); } } /* отображает призовые очки игроков и количество жизней */ static void ShapeScore(void) { /* отображаем надпись '1up' и ее очки */ PlotSurface(pDigitScore04+7,35,7,8,GetX(28),GetY(12)); PlotSurface(pUpScore,16,16,8,GetX(36),GetY(12)); PrintDigit(scene.score.up1,16,21); /* отображаем надпись 'hi' и ее очки */ PlotSurface(pHiScore,13,13,8,GetX(121),GetY(12)); PrintDigit(scene.score.hi,104,21); /* отображаем надпись '2up' и ее очки */ PlotSurface(pDigitScore04+14,35,7,8,GetX(204),GetY(12)); PlotSurface(pUpScore,16,16,8,GetX(212),GetY(12)); PrintDigit(scene.score.up2,192,21); } /* отоброжает количество жизней */ static void ShapeLives(void) { int i,x; /* отобразим рисунки жизней */ for (x = 10, i = 0; (i < scene.lifes) && (i < 15); x += 16, i++) PlotSurface(pSmallRacket,14,14,6,GetX(x),GetY(185)); } /* отобразить круги откланения */ static void ShapeSwerves(void) { int i; /* переберем все круги откланения */ for (i = 0; i < SWERVES_COUNT; i++) { LPPICTURE lpSwerve = &scene.pSwerves[i]; /* отобразим круг откланения */ if (lpSwerve->show) { const UCHAR *pattern; /* определим тип круга откланения */ if (lpSwerve->type == PICTURE_SWERVE_OFF) pattern = pSwerveOff; else pattern = pSwerveOn; /* прорисуем круг откланения */ PlotSurface(pattern,30,30,30, GetX(lpSwerve->X),GetY(lpSwerve->Y)); } } } /* отобразить тень от мячика */ static void ShapeShadowBall(void) { const UCHAR *pattern; int i; /* получим указатель на рисунок */ pattern = pBall + 7; /* переберем все мячики */ for (i = 0; i < BALLS_COUNT; i++) { LPPICTURE lpShadowBall = &scene.pBall[i].shadow; /* отобразим тень от мячика */ if (lpShadowBall->show) { const UCHAR *pattern; int pitch,width,height; switch (lpShadowBall->type) { case BALL_NORMAL: pattern = pBall + 7; pitch = 12; width = 5; height = 5; break; case BALL_SMASH: pattern = pBallSmash + 9; pitch = 16; width = 7; height = 7; break; default: continue; } PlotSurface(pattern,pitch,width,height, GetX(lpShadowBall->X),GetY(lpShadowBall->Y)); } } } /* отобразим мячик */ static void ShapeBall(void) { int i; /* переберем все мячики */ for (i = 0; i < BALLS_COUNT; i++) { LPPICTURE lpBall = &scene.pBall[i].picture; /* отобразим мячик */ if (lpBall->show) { const UCHAR *pattern; int pitch,width,height; switch (lpBall->type) { case BALL_NORMAL: pattern = pBall; pitch = 12; width = 7; height = 7; break; case BALL_SMASH: pattern = pBallSmash; pitch = 16; width = 9; height = 9; break; default: continue; } PlotSurface(pattern,pitch,width,height, GetX(lpBall->X),GetY(lpBall->Y)); } } } /* отобразить блок */ static void ShapeBlock(void) { int x,y; /* просмотрим все поле и проресуем кирпичи */ for (y = 0; y < 12; y++) { for (x = 0; x < 15; x++) { int block = scene.block[y][x]; /* если поле не пустое то рисуем его */ if (block) { int px,py,offset; /* расчитаем отображаемый блок */ offset = (((block & 0x0f) - 1) * (16 * 8 * 7)) + (((block & 0xf0) >> 4) * 16); /* расчитаем положение */ px = x * (16 * SCALE) + GAME_X + (8 * SCALE); py = y * (8 * SCALE) + GAME_Y + (32 * SCALE); /* отображаем блок */ PlotPattern(pBlocks+offset,16*7,16,8,px,py); } } } } /* * Возвращает параметры ракетки: указатель на * рисунок и ширина рисунка. */ static const UCHAR *GetRacketType(int type, int *width) { const UCHAR *pattern; /* определим тип ракетки */ switch (type) { case TYPE_RACKET_NORMAL: pattern = pRacketNormal; *width = 32; break; case TYPE_RACKET_GUN: pattern = pRacketGun; *width = 32; break; case TYPE_RACKET_EXTEND: pattern = pRacketExtend; *width = 48; break; case TYPE_RACKET_N_G_1: pattern = pRacketNtoG1; *width = 30; break; case TYPE_RACKET_N_G_2: pattern = pRacketNtoG2; *width = 30; break; case TYPE_RACKET_N_G_3: pattern = pRacketNtoG3; *width = 32; break; case TYPE_RACKET_N_G_4: pattern = pRacketNtoG4; *width = 32; break; case TYPE_RACKET_N_E_1: pattern = pRacketNtoE1; *width = 34; break; case TYPE_RACKET_N_E_2: pattern = pRacketNtoE2; *width = 36; break; case TYPE_RACKET_N_E_3: pattern = pRacketNtoE3; *width = 38; break; case TYPE_RACKET_N_E_4: pattern = pRacketNtoE4; *width = 40; break; case TYPE_RACKET_N_E_5: pattern = pRacketNtoE5; *width = 42; break; case TYPE_RACKET_N_E_6: pattern = pRacketNtoE6; *width = 44; break; case TYPE_RACKET_N_E_7: pattern = pRacketNtoE7; *width = 46; break; default: return NULL; } return pattern; } /* отобразить ракетку */ static void ShapeRacket(void) { static int p = 0, add = 1; const UCHAR *pRacket; int x,y,p1,p2,width,limitPoint; /* проверим, следует отображать ракетку или нет */ if (!scene.pRacket.show) return; /* определим лимиты для точек */ switch (scene.pRacket.type) { case TYPE_RACKET_NORMAL: limitPoint = 3; break; case TYPE_RACKET_GUN: limitPoint = 3; break; case TYPE_RACKET_EXTEND: limitPoint = 11; break; case TYPE_RACKET_N_G_1: limitPoint = 3; break; case TYPE_RACKET_N_G_2: limitPoint = 3; break; case TYPE_RACKET_N_G_3: limitPoint = 3; break; case TYPE_RACKET_N_G_4: limitPoint = 3; break; case TYPE_RACKET_N_E_1: limitPoint = 4; break; case TYPE_RACKET_N_E_2: limitPoint = 5; break; case TYPE_RACKET_N_E_3: limitPoint = 6; break; case TYPE_RACKET_N_E_4: limitPoint = 7; break; case TYPE_RACKET_N_E_5: limitPoint = 8; break; case TYPE_RACKET_N_E_6: limitPoint = 9; break; case TYPE_RACKET_N_E_7: limitPoint = 10; break; default: return; } /* определим отображаемую ракетку */ pRacket = GetRacketType(scene.pRacket.type,&width); /* расчитаем позицию ракетки */ x = GetX(scene.pRacket.X); y = GetY(scene.pRacket.Y); /* отобразим рисунок ракетки */ PlotSurface(pRacket,width,width,13,x,y); /* расчитаем логические позиции точек */ p += add; /* проверим выход за границы */ if (add > 0) { if (p > limitPoint) { p = limitPoint; add = -1; } } else { if (p < 0) { p = 0; add = 1; } } /* расчитаем позиции точек в ракетке */ y += 12; p1 = x + ((width - 4) / 2 - 1 - p) * SCALE; p2 = x + ((width - 4) / 2 + p) * SCALE; /* отобразим точки */ PlotPixel(p1,y,CL_BLACK); PlotPixel(p2,y,CL_BLACK); } /* обводит кирпичи черной линией */ static void ShapeLineOfBlock(void) { int x,y; /* * Обведем черной линией кирпичи. * Магические цифры в расчетах, это размеры блока. */ for (y = 0; y < 12; y++) { for (x = 0; x < 15; x++) { int a1,a2,b; /* если поле пустое то пропустим его */ if (scene.block[y][x]) { /* проверяем верхнюю линию */ if (y == 0) { /* это верхняя строка */ a1 = x * (16 * 2) + GAME_X + (8 * 2); a2 = a1 + ((16 - 1) * 2); b = y * (8 * 2) + GAME_Y + ((32 - 1) * 2); HLine(a1,a2,b,CL_BLACK); } else if (!scene.block[y-1][x]) { /* сверху пустое место */ a1 = x * (16 * 2) + GAME_X + (8 * 2); a2 = a1 + ((16 - 1) * 2); b = y * (8 * 2) + GAME_Y + ((32 - 1) * 2); HLine(a1,a2,b,CL_BLACK); } /* проверяем правую линию */ if (x == 15 - 1) { /* это правая строка */ a1 = y * (8 * 2) + GAME_Y + (32 * 2); a2 = a1 + ((8 - 1) * 2); b = x * (16 * 2) + GAME_X + ((8 + 16) * 2); VLine(a1,a2,b,CL_BLACK); } else if (!scene.block[y][x+1]) { /* справо пустое место */ a1 = y * (8 * 2) + GAME_Y + (32 * 2); a2 = a1 + ((8 - 1) * 2); b = x * (16 * 2) + GAME_X + ((8 + 16) * 2); VLine(a1,a2,b,CL_BLACK); } /* проверяем нижнюю линию */ if (y == 12 - 1) { /* это нижняя строка */ a1 = x * (16 * 2) + GAME_X + (8 * 2); a2 = a1 + ((16 - 1) * 2); b = y * (8 * 2) + GAME_Y + ((32 + 8) * 2); HLine(a1,a2,b,CL_BLACK); } else if (!scene.block[y+1][x]) { /* снизу пустое место */ a1 = x * (16 * 2) + GAME_X + (8 * 2); a2 = a1 + ((16 - 1) * 2); b = y * (8 * 2) + GAME_Y + ((32 + 8) * 2); HLine(a1,a2,b,CL_BLACK); } /* проверим левую сторону */ if (x == 0) { /* это левая строка */ a1 = y * (8 * 2) + GAME_Y + (32 * 2); a2 = a1 + ((8 - 1) * 2); b = x * (16 * 2) + GAME_X + ((8 - 1) * 2); VLine(a1,a2,b,CL_BLACK); } else if (!scene.block[y][x-1]) { /* слева пустое место */ a1 = y * (8 * 2) + GAME_Y + (32 * 2); a2 = a1 + ((8 - 1) * 2); b = x * (16 * 2) + GAME_X + ((8 - 1) * 2); VLine(a1,a2,b,CL_BLACK); } } } } } /* отобразить бомбу */ static void ShapeBomb(void) { /* проверим, отображается бомба или нет */ if (scene.pBomb.picture.show) { /* отображаем бомбу */ PlotFigure(pBomb,12,7,11, GetX(scene.pBomb.picture.X),GetY(scene.pBomb.picture.Y)); } } /* отобразить тень от бомбы */ static void ShapeBombShadow(void) { /* если тень отображается то нарисуем ее */ if (scene.pBomb.shadow.show) { /* отображаем тень бомбы */ PlotFigure(pBomb+7,12,5,9, GetX(scene.pBomb.shadow.X),GetY(scene.pBomb.shadow.Y)); } } /* * Возвращает парамеры бонуса: указатель на * рисунок а так же его высоту и ширину. */ static const UCHAR *GetBonusType(int type, int *width, int *height) { const UCHAR *pattern; /* определим отображаемый рисунок и его параметры */ switch (type) { case BONUS_POINTS: pattern = pPointsBonus; *width = 23; *height = 14; break; case BONUS_SMART_BOMB: pattern = pKillAliensBonus; *width = 24; *height = 15; break; case BONUS_EXTRA_LIFE: pattern = pExtraLifeBonus; *width = 19; *height = 13; break; case BONUS_SLOW_BALL: pattern = pSlowBallBonus; *width = 22; *height = 15; break; case BONUS_SMASH_BALL: pattern = pSmashBallBonus; *width = 23; *height = 15; break; case BONUS_TRIPLE_BALL: pattern = pTripleBallBonus; *width = 17; *height = 15; break; case BONUS_HAND: pattern = pHandBonus; *width = 22; *height = 12; break; case BONUS_GUN: pattern = pGunBonus; *width = 20; *height = 9; break; case BONUS_EXTENDED_RACKET: pattern = pExtendedRacketBonus; *width = 22; *height = 11; break; case BONUS_ROCKET_PACK: pattern = pRocketPackBonus; *width = 21; *height = 12; break; case BONUS_400_POINTS: pattern = pPoints400Bonus; *width = 22; *height = 10; break; default: return NULL; } return pattern; } /* отобразить приз */ static void ShapeBonus(void) { const UCHAR *pBonus; int width,height; /* проверим, нужно отображать объект */ if (!scene.pBonus.show) return; /* определим отображаемый рисунок и его параметры */ pBonus = GetBonusType(scene.pBonus.type,&width,&height); if (!pBonus) return; /* отобразим картинку */ PlotFigure(pBonus,width,width,height, GetX(scene.pBonus.X),GetY(scene.pBonus.Y)); } /* отобразить летающее существо */ static void ShapeAlien(void) { const UCHAR *pattern; /* проверим, нужно ли рисовать данный объект */ if (!scene.pAlien.show) return; /* определим отображаемую картинку */ if (scene.pAlien.show == SHOW_ALIEN_BIRD) { /* определим тип рисунка */ switch (scene.pAlien.type) { case TYPE_ALIEN_0: pattern = pBird0; break; case TYPE_ALIEN_1: pattern = pBird1; break; case TYPE_ALIEN_2: pattern = pBird2; break; case TYPE_ALIEN_3: pattern = pBird3; break; case TYPE_ALIEN_4: pattern = pBird4; break; default: return; } } else if (scene.pAlien.show == SHOW_ALIEN_UFO) { /* определим тип рисунка */ switch (scene.pAlien.type) { case TYPE_UFO_0: pattern = pUfo0; break; case TYPE_UFO_1: pattern = pUfo1; break; case TYPE_UFO_2: pattern = pUfo2; break; case TYPE_UFO_3: pattern = pUfo3; break; case TYPE_UFO_4: pattern = pUfo4; break; case TYPE_UFO_5: pattern = pUfo5; break; default: return; } } else return; /* отобразим картинку */ PlotFigure(pattern,24,24,14, GetX(scene.pAlien.X),GetY(scene.pAlien.Y)); } /* отобразить взрыв летающего существа */ static void ShapeBang(void) { const UCHAR *pattern; /* проверим, нужно рисовать данный объект */ if (!scene.pBang.show) return; /* определим отображаемую картинку */ switch (scene.pBang.type) { case TYPE_BANG_0: pattern = pBang0; break; case TYPE_BANG_1: pattern = pBang1; break; case TYPE_BANG_2: pattern = pBang2; break; case TYPE_BANG_3: pattern = pBang3; break; case TYPE_BANG_4: pattern = pBang4; break; default: return; } /* отобразим картинку */ PlotFigure(pattern,16,16,19, GetX(scene.pBang.X),GetY(scene.pBang.Y)); } /* отобразить ракету в следующую стадию */ static void ShapeRocket(void) { const UCHAR *pattern; int width,height; int xRocket,yRocket; int xRocketFlame,yRocketFlame; /* проверим, нужно рисовать данный объект */ if (!scene.pRocket.show) return; /* раситаем смещения для реактивного ранца и пламяни */ switch (scene.pRacket.type) { case TYPE_RACKET_NORMAL: case TYPE_RACKET_GUN: xRocket = scene.pRocket.X + 4; yRocket = scene.pRocket.Y + 6; xRocketFlame = scene.pRocket.X + 4; yRocketFlame = scene.pRocket.Y + 18; break; case TYPE_RACKET_EXTEND: xRocket = scene.pRocket.X + 12; yRocket = scene.pRocket.Y + 6; xRocketFlame = scene.pRocket.X + 12; yRocketFlame = scene.pRocket.Y + 18; break; default: return; } /* отобразим ракетку */ pattern = GetRacketType(scene.pRacket.type,&width); if (!pattern) return; PlotFigure(pattern,width,width,13, GetX(scene.pRocket.X),GetY(scene.pRocket.Y)); /* отобразим реактивный ранец */ pattern = GetBonusType(BONUS_ROCKET_PACK,&width,&height); if (!pattern) return; PlotFigure(pattern,width,width,height, GetX(xRocket),GetY(yRocket)); /* отобразим пламя из реактивного ранца */ switch (scene.pRocket.type) { case TYPE_ROCKET_0: pattern = pRocketFlame1; break; case TYPE_ROCKET_1: pattern = pRocketFlame2; /* скорректируем положение рисунка пламяни по координате 'X' */ xRocketFlame++; break; default: return; } PlotFigure(pattern,20,20,16, GetX(xRocketFlame),GetY(yRocketFlame)); } /* отобразить пульки */ static void ShapeBullet(void) { int i; /* переберем все пульки */ for (i = 0; i < BULLETS_COUNT; i++) { LPPICTURE lpBullet = &scene.pBullet[i]; const UCHAR *pattern; /* отобразим пульку */ if (lpBullet->show) { if (lpBullet->type < TYPE_BULLET_PLOP_0) { switch (lpBullet->type) { case TYPE_BULLET_0: pattern = pBullet; break; case TYPE_BULLET_1: pattern = pBullet + 4; break; default: continue; } /* отобразим картинку */ PlotSurface(pattern,8,4,8, GetX(lpBullet->X),GetY(lpBullet->Y)); } else { switch (lpBullet->type) { case TYPE_BULLET_PLOP_0: pattern = pPlop; break; case TYPE_BULLET_PLOP_1: pattern = pPlop + 8; break; case TYPE_BULLET_PLOP_2: pattern = pPlop + 16; break; case TYPE_BULLET_PLOP_3: pattern = pPlop + 24; break; default: continue; } /* отобразим картинку */ PlotSurface(pattern,32,8,8, GetX(lpBullet->X),GetY(lpBullet->Y)); } } } } /* отобразить осколки ракетки */ static void ShapeSlivers(void) { LPFULL_PICTURE lpPicture; const UCHAR *pattern; int i; /* проверим, нужно рисовать данный объект */ if (!scene.pSlivers.show) return; /* отобразим все картинки */ for (i = 0; i < SLIVERS_COUNT; i++) { /* получим указатель на описание осколка */ lpPicture = &scene.pSlivers.picture[i]; /* отобразим тень */ if (lpPicture->shadow.show) { /* сформируем укозатель на фигуру */ pattern = pSlivers + lpPicture->shadow.type * 5 + 35 * 7; /* отобразим фигуру */ PlotFigure(pattern,35,5,5, GetX(lpPicture->shadow.X),GetY(lpPicture->shadow.Y)); } /* отобразим фигуру */ if (lpPicture->picture.show) { /* сформируем укозатель на фигуру */ pattern = pSlivers + lpPicture->picture.type * 7; /* отобразим фигуру */ PlotFigure(pattern,35,7,7, GetX(lpPicture->picture.X),GetY(lpPicture->picture.Y)); } } } /* накладывает тень от кирпичей на определенный цвет */ static void PlotShade(int x, int y, UINT color, UINT key) { UINT *video; int width,height; /* получим цвета */ color = palette[color]; key = palette[key]; /* заполним прямоугольник */ video = ptImage + y * SCREEN_WIDTH + x; for (height = 0; height < 8; height++) { for (width = 0; width < 16; width++) { UINT *p = video + (width * SCALE); if (*p == key) { *(p) = color; *(p + 1) = color; *(p + SCREEN_WIDTH) = color; *(p + SCREEN_WIDTH + 1) = color; } } video += SCREEN_WIDTH * 2; } } /* отобразить тень от кирпичей */ static void ShapeShadow(void) { int x,y; /* переберем все кирпичи */ for (y = 0; y < 12; y++) { for (x = 0; x < 15; x++) { /* если поле пустое то пропустим его */ if (scene.block[y][x]) { /* * Если это крайнии позиции, а так же снизу или * снизу правее пусто, то отображаем тень. */ if (x == 14 || y == 11 || !scene.block[y+1][x] || !scene.block[y+1][x+1]) { int px = x * (16 * 2) + (16 * 2) + GAME_X; int py = y * (8 * 2) + (8 * 2) + (32 * 2) + GAME_Y; /* сделаем программный блитинг */ PlotShade(px,py, scene.background+CL_SHADE_YELLOW_BACK, scene.background+CL_YELLOW_BACK); } } } } /* тень от левой стенки */ for (y = 1; y < WIN_GAME_HEIGHT / 8; y++) PlotShade(GetX(0),GetY(y*8), scene.background+CL_SHADE_YELLOW_BACK, scene.background+CL_YELLOW_BACK); /* тень от верхней стенки */ for (x = 1; x < WIN_GAME_WIDTH / 16; x++) PlotShade(GetX(x*16),GetY(8), scene.background+CL_SHADE_YELLOW_BACK, scene.background+CL_YELLOW_BACK); } /* отобразить ограждение */ static void ShapeBarrier(void) { int i; /* нарисуем левую стенку */ PlotPattern(pBarLeft3,8,8,8,GetX(0),GetY(0)); PlotPattern(pBarLeft1,8,8,8,GetX(0),GetY(8)); PlotPattern(pBarLeft2,8,8,8,GetX(0),GetY(8*2)); VLine(GetY(8),GetY(8*3-3),GetX(8),CL_BLACK); /*************************/ PlotPattern(pBarLeft4,8,8,24,GetX(0),GetY(8*3)); /*************************/ PlotPattern(pBarLeft0,8,8,8,GetX(0),GetY(8*6)); PlotPattern(pBarLeft1,8,8,8,GetX(0),GetY(8*7)); PlotPattern(pBarLeft1,8,8,8,GetX(0),GetY(8*8)); PlotPattern(pBarLeft2,8,8,8,GetX(0),GetY(8*9)); for (i = 0; i < 4; i++) { BLOCK block; int p1,p2; p1 = 8 * (6 + i); p2 = 8 * (7 + i) - 1; if (i == 0) p1 += 2; else if (i == 3) p2 -= 2; if (!GetBlock(&block,GetX(8),GetY(p1))) VLine(GetY(p1),GetY(p2),GetX(8),CL_BLACK); } /*************************/ PlotPattern(pBarLeft4,8,8,24,GetX(0),GetY(8*10)); /*************************/ PlotPattern(pBarLeft0,8,8,8,GetX(0),GetY(8*13)); PlotPattern(pBarLeft1,8,8,8,GetX(0),GetY(8*14)); PlotPattern(pBarLeft1,8,8,8,GetX(0),GetY(8*15)); PlotPattern(pBarLeft2,8,8,8,GetX(0),GetY(8*16)); for (i = 0; i < 4; i++) { BLOCK block; int p1,p2; p1 = 8 * (13 + i); p2 = 8 * (14 + i) - 1; if (i == 0) p1 += 2; else if (i == 3) p2 -= 2; if (!GetBlock(&block,GetX(8),GetY(p1))) VLine(GetY(p1),GetY(p2),GetX(8),CL_BLACK); } /*************************/ PlotPattern(pBarLeft4,8,8,24,GetX(0),GetY(8*17)); /*************************/ PlotPattern(pBarLeft0,8,8,8,GetX(0),GetY(8*20)); PlotPattern(pBarLeft1,8,8,8,GetX(0),GetY(8*21)); PlotPattern(pBarLeft1,8,8,8,GetX(0),GetY(8*22)); PlotPattern(pBarLeft2,8,8,8,GetX(0),GetY(8*23)); VLine(GetY(8*20+2),GetY(8*24-3),GetX(8),CL_BLACK); /* нарисуем правую стенку */ PlotPattern(pBarRight3,8,8,8,GetX(8*31),GetY(0)); PlotPattern(pBarRight1,8,8,8,GetX(8*31),GetY(8)); PlotPattern(pBarRight2,8,8,8,GetX(8*31),GetY(8*2)); VLine(GetY(8),GetY(8*3-3),GetX(8*31-1),CL_BLACK); /*************************/ PlotPattern(pBarRight4,8,8,24,GetX(8*31),GetY(8*3)); /*************************/ PlotPattern(pBarRight0,8,8,8,GetX(8*31),GetY(8*6)); PlotPattern(pBarRight1,8,8,8,GetX(8*31),GetY(8*7)); PlotPattern(pBarRight1,8,8,8,GetX(8*31),GetY(8*8)); PlotPattern(pBarRight2,8,8,8,GetX(8*31),GetY(8*9)); for (i = 0; i < 4; i++) { BLOCK block; int p1,p2; p1 = 8 * (6 + i); p2 = 8 * (7 + i) - 1; if (i == 0) p1 += 2; else if (i == 3) p2 -= 2; if (!GetBlock(&block,GetX(8*31-1),GetY(p1))) VLine(GetY(p1),GetY(p2),GetX(8*31-1),CL_BLACK); } /*************************/ PlotPattern(pBarRight4,8,8,24,GetX(8*31),GetY(8*10)); /*************************/ PlotPattern(pBarRight0,8,8,8,GetX(8*31),GetY(8*13)); PlotPattern(pBarRight1,8,8,8,GetX(8*31),GetY(8*14)); PlotPattern(pBarRight1,8,8,8,GetX(8*31),GetY(8*15)); PlotPattern(pBarRight2,8,8,8,GetX(8*31),GetY(8*16)); for (i = 0; i < 4; i++) { BLOCK block; int p1,p2; p1 = 8 * (13 + i); p2 = 8 * (14 + i) - 1; if (i == 0) p1 += 2; else if (i == 3) p2 -= 2; if (!GetBlock(&block,GetX(8*31-1),GetY(p1))) VLine(GetY(p1),GetY(p2),GetX(8*31-1),CL_BLACK); } /*************************/ PlotPattern(pBarRight4,8,8,24,GetX(8*31),GetY(8*17)); /*************************/ PlotPattern(pBarRight0,8,8,8,GetX(8*31),GetY(8*20)); PlotPattern(pBarRight1,8,8,8,GetX(8*31),GetY(8*21)); PlotPattern(pBarRight1,8,8,8,GetX(8*31),GetY(8*22)); PlotPattern(pBarRight2,8,8,8,GetX(8*31),GetY(8*23)); VLine(GetY(8*20+2),GetY(8*24-3),GetX(8*31-1),CL_BLACK); /* нарисуем верхнюю стенку */ PlotPattern(pBarTop1,8,8,8,GetX(8),GetY(0)); PlotPattern(pBarTop1,8,8,8,GetX(8*2),GetY(0)); PlotPattern(pBarTop2,8,8,8,GetX(8*3),GetY(0)); HLine(GetX(9),GetX(8*4-3),GetY(8),CL_BLACK); /*************************/ PlotPattern(pBarTop5,24,24,8,GetX(8*4),GetY(0)); /*************************/ PlotPattern(pBarTop3,8,8,8,GetX(8*7),GetY(0)); PlotPattern(pBarTop1,8,8,8,GetX(8*8),GetY(0)); PlotPattern(pBarTop1,8,8,8,GetX(8*9),GetY(0)); PlotPattern(pBarTop1,8,8,8,GetX(8*10),GetY(0)); PlotPattern(pBarTop4,8,8,8,GetX(8*11),GetY(0)); HLine(GetX(8*7+2),GetX(8*12-3),GetY(8),CL_BLACK); /*************************/ PlotPattern(pBarTop5,24,24,8,GetX(8*12),GetY(0)); /*************************/ PlotPattern(pBarTop3,8,8,8,GetX(8*15),GetY(0)); PlotPattern(pBarTop4,8,8,8,GetX(8*16),GetY(0)); HLine(GetX(8*15+2),GetX(8*17-3),GetY(8),CL_BLACK); /*************************/ PlotPattern(pBarTop5,24,24,8,GetX(8*17),GetY(0)); /*************************/ PlotPattern(pBarTop3,8,8,8,GetX(8*20),GetY(0)); PlotPattern(pBarTop1,8,8,8,GetX(8*21),GetY(0)); PlotPattern(pBarTop1,8,8,8,GetX(8*22),GetY(0)); PlotPattern(pBarTop1,8,8,8,GetX(8*23),GetY(0)); PlotPattern(pBarTop4,8,8,8,GetX(8*24),GetY(0)); HLine(GetX(8*20+2),GetX(8*25-3),GetY(8),CL_BLACK); /*************************/ PlotPattern(pBarTop5,24,24,8,GetX(8*25),GetY(0)); /*************************/ PlotPattern(pBarTop0,8,8,8,GetX(8*28),GetY(0)); PlotPattern(pBarTop1,8,8,8,GetX(8*29),GetY(0)); PlotPattern(pBarTop1,8,8,8,GetX(8*30),GetY(0)); HLine(GetX(8*28+2),GetX(8*31-2),GetY(8),CL_BLACK); } /* отображает сообщение с учетом прозрачности */ static void PlotMessage(const UCHAR *pattern, int pitchPattern, int width, int height, int x, int y) { UINT *video,color; int i,j; /* расчитаем точку от которой начинается прорисовка поверхности */ video = ptImage + y * SCREEN_WIDTH + x; color = palette[CL_WHITE]; /* отобразим поверхность */ for (i = 0; i < height; i++) { for (j = 0; j < width; j++) { UINT *p; /* проверим пиксель на прозрачность */ if (pattern[j]) continue; /* отобразим пиксель белым цветом */ p = video + (j * SCALE); *(p) = color; *(p + 1) = color; *(p + SCREEN_WIDTH) = color; *(p + SCREEN_WIDTH + 1) = color; } /* переместимся на следующие строчки поверхностей */ video += SCREEN_WIDTH * 2; pattern += pitchPattern; } } /* * Отображает сообщение. * Размер сообщения: 160,68 * Координата верхней левой точки: 88,132 */ static void ShapeMessage(void) { const UCHAR *p; UINT *v,pixel; int i,j,x,y,X,Y; /* отобразить сообщение */ if (!scene.message.show) return; /* расчитаем оконные координаты */ X = GetX(88); Y = GetY(132); /* очистим поле где отображается сообщение */ v = ptImage + Y * SCREEN_WIDTH + X; pixel = palette[CL_SCREEN_BACK]; for (i = 0; i < 68; i++, v += SCREEN_WIDTH) { for (j = 0; j < 160; j++) v[j] = pixel; } /* отобразим сообщение */ if (scene.message.flags == MESSAGE_ROUND) { TCHAR buff[32]; /* строка 'player' */ x = X + 8 * SCALE; y = Y + 6 * SCALE; PlotMessage(pPlayer,47,47,10,x,y); /* номер игрока */ p = pDigitMsg + scene.message.player * 6; x = X + (8 * 8 + 1) * SCALE; y = Y + (6 * SCALE); PlotMessage(p,60,6,8,x,y); /* строка 'round' */ x = X + (8 + 1) * SCALE; y = Y + (6 + 8 + 6) * SCALE; PlotMessage(pRound,39,39,8,x,y); /* номер раунда */ _stprintf(buff,_T("%02d"),scene.message.round); for (i = 0; i < 2; i++) { p = pDigitMsg + (buff[i] - _T('0')) * 6; x = X + (i * 8 + 7 * 8 + 1) * SCALE; y = Y + (6 + 8 + 6) * SCALE; PlotMessage(p,60,6,8,x,y); } } else { /* информация об паузе */ if (scene.message.pause) { /* отобразим цифру */ p = pDigitMsg + scene.message.pause * 6; x = X + 37 * SCALE; y = Y + 13 * SCALE; PlotMessage(p,60,6,8,x,y); } else { x = X + 20 * SCALE; y = Y + 15 * SCALE; PlotMessage(pPause,39,39,8,x,y); } } } /* отобразить отладочную информацию */ static void ShapeDebug(void) { TCHAR sBuff[256]; /* сформируем отображаемую строку */ _stprintf(sBuff,sFormatDebug,giFps,giFrame,lSpeedDraw); TextOut(ghMemDC,dwDebugX,dwDebugY,sBuff,lstrlen(sBuff)); } /* производит заливку игровой поверхности */ static void ShapeFillScreen(void) { UINT *video,pixel1,pixel2; int x,y; /* зальем задний фон и игровое поле */ video = ptImage; pixel1 = palette[CL_SCREEN_BACK]; pixel2 = palette[scene.background+CL_YELLOW_BACK]; for (y = 0; y < SCREEN_HEIGHT; y++, video += SCREEN_WIDTH) { for (x = 0; x < SCREEN_WIDTH; x++) { if (((x >= GAME_X) && (x < GAME_X + GAME_WIDTH)) && ((y >= GAME_Y) && (y < GAME_Y + GAME_HEIGHT))) video[x] = pixel2; else video[x] = pixel1; } } } /* производит заливку заднего фона экрана */ static void ShapeFillBackScreen(void) { UINT *video,pixel; int x,y; /* зальем задний фон */ video = ptImage; pixel = palette[CL_SCREEN_BACK]; for (y = 0; y < SCREEN_HEIGHT; y++, video += SCREEN_WIDTH) { for (x = 0; x < SCREEN_WIDTH; x++) video[x] = pixel; } } /* нарисовать очередной кадр */ void GameDrawScene(void) { DWORD dwTime; /* получим время для начала отсчета */ if (giDebug) dwTime = timeGetTime(); /* очистим поверхность (заливаем цветом фона) */ if (!scene.on) { ShapeFillBackScreen(); /* пропускаем отрисовку сцены */ goto _EXIT; } else ShapeFillScreen(); /* отобразим рисунок игрового поля */ ShapeBackground(); /* отобразим очки игроков */ ShapeScore(); /* отобразить круги откланения */ ShapeSwerves(); /* отобразим количество жизней */ ShapeLives(); /* отобразить тень от мячика */ ShapeShadowBall(); /* отобразить кирпичи */ ShapeBlock(); /* обвести кирпичи черной линией */ ShapeLineOfBlock(); /* отобразим мячик */ ShapeBall(); /* отобразить тень от бомбы */ ShapeBombShadow(); /* отобразить ракетку */ ShapeRacket(); /* отобразить бомбу */ ShapeBomb(); /* отобразить летающее существо */ ShapeAlien(); /* отобразить взрыв летающего существа */ ShapeBang(); /* отобразить пульки или его хлопки */ ShapeBullet(); /* отобразим падающий приз */ ShapeBonus(); /* отобразить осколки ракетки */ ShapeSlivers(); /* отобразим ракету в следующую стадию */ ShapeRocket(); /* отобразить тень */ ShapeShadow(); /* отобразим сообщение */ ShapeMessage(); /* отобразим ограждение */ ShapeBarrier(); _EXIT: /* расчитаем время заполнения сцены */ if (giDebug) { lSpeedBuff[pSpeed] = timeGetTime() - dwTime; if (++pSpeed >= TIME_BUFF) { int i,sum; for (i = sum = 0; i < TIME_BUFF; i++) sum += lSpeedBuff[i]; lSpeedDraw = sum / TIME_BUFF; pSpeed = 0; } /* отобразим отладочную информацию */ ShapeDebug(); } } /* создание сцены */ void GameCreateScene(void) { } /* * Отображает сообщение 'game over'. * Размер сообщения: 160,68 * Координата верхней левой точки: 88,132 */ static void ShapeGameOver(void) { const UCHAR *p; UINT *v,pixel; int x,y,X,Y; /* расчитаем оконные координаты */ X = GetX(88); Y = GetY(132); /* очистим поле где отображается сообщение */ v = ptImage + Y * SCREEN_WIDTH + X; pixel = palette[CL_SCREEN_BACK]; for (y = 0; y < 68; y++, v += SCREEN_WIDTH) { for (x = 0; x < 160; x++) v[x] = pixel; } /* отобразим строку 'game' */ x = X + 13; y = Y + 7 * SCALE; PlotMessage(pGame,31,31,8,x,y); /* отобразим строку 'over' */ x += (31 + 8) * SCALE; PlotMessage(pOver,28,28,6,x,y); /* отобразим строку 'player' */ x = X + 8 * SCALE; y = Y + (6 + 7 + 6) * SCALE; PlotMessage(pPlayer,47,47,10,x,y); /* отобразим номер игрока */ p = pDigitMsg + 1 * 6; x = X + (8 * 8 + 1) * SCALE; PlotMessage(p,60,6,8,x,y); } /* разрушить сцену, выводит натпись 'game over' */ void GameDrawGameOver(void) { DWORD dwTime; /* получим время для начала отсчета */ if (giDebug) dwTime = timeGetTime(); /* зальем задний фон и игровое поле */ ShapeFillScreen(); /* отобразим рисунок игрового поля */ ShapeBackground(); /* отобразим очки игроков */ ShapeScore(); /* отобразить круги откланения */ ShapeSwerves(); /* отобразить кирпичи */ ShapeBlock(); /* обвести кирпичи черной линией */ ShapeLineOfBlock(); /* отобразить тень */ ShapeShadow(); /* отобразим ограждение */ ShapeBarrier(); /* отобразим сообщение 'game over' */ ShapeGameOver(); /* расчитаем время заполнения сцены */ if (giDebug) { lSpeedBuff[pSpeed] = timeGetTime() - dwTime; if (++pSpeed >= TIME_BUFF) { int i,sum; for (i = sum = 0; i < TIME_BUFF; i++) sum += lSpeedBuff[i]; lSpeedDraw = sum / TIME_BUFF; pSpeed = 0; } /* отобразим отладочную информацию */ ShapeDebug(); } } /* подготовка модуля рисования игрового процесса */ int GameInitDraw(void) { return 0; } /* начальная инициализация модуля рисования игрового процесса */ int InitDrawGame(void) { UCHAR buff[16*8]; int y,x; /* получим параметры шрифта */ if (giDebug) { TEXTMETRIC tm; /* расчитаем положение для дебажного сообщения */ GetTextMetrics(ghMemDC,&tm); dwDebugX = GAME_X + 2 + (GAME_WIDTH - _tcslen(sFormatDebug) * (tm.tmAveCharWidth - 1)) / 2; dwDebugY = GAME_Y - (tm.tmHeight + 4); } /* * Создадим шаблон, содержащий рисунки блоков, * одна поверхность содержит шесть разных кирпичей. */ for (y = 0; y <= 5; y++) { UCHAR color1,color2; /* расчитаем цвет кирпича */ switch (y) { case 0: color1 = CL_BLACK; color2 = CL_YELLOW; break; case 1: color1 = CL_WHITE; color2 = CL_ROSY; break; case 2: color1 = CL_WHITE; color2 = CL_RED; break; case 3: color1 = CL_BLACK; color2 = CL_GREEN; break; case 4: color1 = CL_WHITE; color2 = CL_BLUE; break; default: color1 = CL_WHITE; color2 = CL_BLACK; break; } /* заполняем строчку фигурой и ее анимацией */ for (x = 0; x < 7; x++) { const UCHAR *from; UCHAR *to; int i; /* сформируем укозатель на шаблон изображения */ switch (x) { case 0: from = pBlock; break; case 1: from = pAnimBlock0; break; case 2: from = pAnimBlock1; break; case 3: from = pAnimBlock2; break; case 4: from = pAnimBlock3; break; case 5: from = pAnimBlock4; break; default: from = pAnimBlock5; break; } /* сформируем изображение */ for (i = 0; i < 16 * 8; i++) buff[i] = from[i] ? color2 : color1; /* переносим изображение на поверхность */ to = pBlocks + y * (16 * 7 * 8) + x * 16; from = buff; for (i = 0; i < 8; i++) { memcpy(to,from,16); to += 16 * 7; from += 16; } } } /* * Сформируем цветовую палитру. */ /* задний фон окна */ palette[CL_SCREEN_BACK] = RGB32BIT(0,0,60); /* задний фон экрана */ /* цвета фона игрового поля и теней на нем */ palette[CL_YELLOW_BACK] = RGB32BIT(247,247,0); /* фон желтый */ palette[CL_GREEN_BACK] = RGB32BIT(0,247,0); /* фон зеленый */ palette[CL_SKY_BACK] = RGB32BIT(0,247,247); /* фон голубой */ palette[CL_WHITE_BACK] = RGB32BIT(247,247,247); /* фон белый */ palette[CL_SHADE_YELLOW_BACK] = RGB32BIT(200,200,0); /* фон тень желтый */ palette[CL_SHADE_GREEN_BACK] = RGB32BIT(0,200,0); /* фон тень зеленный */ palette[CL_SHADE_SKY_BACK] = RGB32BIT(0,200,200); /* фон тень голубой */ palette[CL_SHADE_WHITE_BACK] = RGB32BIT(200,200,200); /* фон тень белый */ /* цвета кирпичеков */ palette[CL_BLACK] = RGB32BIT(0,0,0); /* черный */ palette[CL_WHITE] = RGB32BIT(248,248,248); /* белый */ palette[CL_YELLOW] = RGB32BIT(248,248,0); /* желтый */ palette[CL_ROSY] = RGB32BIT(248,0,248); /* розовый */ palette[CL_RED] = RGB32BIT(248,0,0); /* красный */ palette[CL_BLUE] = RGB32BIT(0,0,248); /* синий */ palette[CL_GREEN] = RGB32BIT(0,200,0); /* зеленый */ return 0; } /* деинициализация модуля рисования кадра */ void ReleaseDrawGame(void) { }