SNAKE GAME
// Glcd module connections
char GLCD_DataPort at PORTD;
sbit GLCD_CS1 at RC0_bit;
sbit GLCD_CS2 at RC1_bit;
sbit GLCD_RS at RC2_bit;
sbit GLCD_RW at RC3_bit;
sbit GLCD_EN at RC4_bit;
sbit GLCD_RST at RC5_bit;
sbit GLCD_CS1_Direction at TRISC0_bit;
sbit GLCD_CS2_Direction at TRISC1_bit;
sbit GLCD_RS_Direction at TRISC2_bit;
sbit GLCD_RW_Direction at TRISC3_bit;
sbit GLCD_EN_Direction at TRISC4_bit;
sbit GLCD_RST_Direction at TRISC5_bit;
// End Glcd module connections
//--------------------------BUTTON CONNECTIONS
sbit keyUp at RB4_bit;
sbit keyLeft at RB5_bit;
sbit keyDown at RB6_bit;
sbit keyRight at RB7_bit;
sbit keyB at RB3_bit;
sbit keyA at RB2_bit;
#define CODE_EMPTY '.'
#define CODE_FOOD 3
#define CODE_SNAKE 219
#define GLCD_LEFT 0
#define GLCD_RIGHT 64
#define OFFSET_FOOD 0
#define OFFSET_SNVE 8
#define OFFSET_SNHO 16
#define OFFSET_SNDL 24
#define OFFSET_SNUL 32
#define OFFSET_SNUR 40
#define OFFSET_SNDR 48
#define OFFSET_SNHU 56
#define OFFSET_SNHR 64
#define OFFSET_SNHD 72
#define OFFSET_SNHL 80
#define OFFSET_SNTU 88
#define OFFSET_SNTR 96
#define OFFSET_SNTD 104
#define OFFSET_SNTL 112
void glcdFillScreen(unsigned short color) {
glcd_fill(color);
}
unsigned long _Randseed;
unsigned int random(void) {
_Randseed = _Randseed * 1103515245 + 12345;
return ((unsigned int)(_Randseed >> 16) );
}
void srandom(unsigned long seed) {
_Randseed = seed;
}
const unsigned short BITMAP[] = {0b00011110, // food
0b00100001,
0b01000001,
0b10000010,
0b10000010,
0b01000001,
0b00100001,
0b00011110,
0b00000000, // snake_vertical
0b00000000,
0b11101110,
0b11101110,
0b01110111,
0b01110111,
0b00000000,
0b00000000,
0b00001100, // snake_horizontal
0b00111100,
0b00111100,
0b00110000,
0b00001100,
0b00111100,
0b00111100,
0b00110000,
0b00001100, // snake_down_left
0b00111100,
0b11111100,
0b11101000,
0b01111000,
0b01100000,
0b00000000,
0b00000000,
0b00001100, // snake_up_left
0b00111100,
0b00111110,
0b00010110,
0b00011111,
0b00000111,
0b00000000,
0b00000000,
0b00000000, // snake_up_right
0b00000000,
0b00000110,
0b00011110,
0b00010111,
0b00111111,
0b00111100,
0b00110000,
0b00000000, // snake_down_right
0b00000000,
0b11100000,
0b11111000,
0b01101000,
0b01111100,
0b00111100,
0b00110000,
0b00000000, // snake_head_up // link up, head looks down
0b01110000,
0b10011110,
0b11111110,
0b11111111,
0b10011111,
0b01110000,
0b00000000,
0b00111100, // snake_head_right // link right
0b01011010,
0b01011010,
0b01111110,
0b00111100,
0b00111100,
0b00111100,
0b00110000,
0b00000000, // snake_head_down // link down
0b00001110,
0b11111001,
0b11111111,
0b01111111,
0b01111001,
0b00001110,
0b00000000,
0b00001100, // snake_head_left // link left
0b00111100,
0b00111100,
0b00111100,
0b01111110,
0b01011010,
0b01011010,
0b00111100,
0b00000000, // snake_tail_up // link up
0b00000000,
0b00101110,
0b11101110,
0b11110111,
0b00110111,
0b00000000,
0b00000000,
0b00011000, // snake_tail_right // link right
0b00011000,
0b00111100,
0b00110000,
0b00001100,
0b00111100,
0b00111100,
0b00110000,
0b00000000, // snake_tail_down // link down
0b00000000,
0b11101100,
0b11101111,
0b01110111,
0b01110100,
0b00000000,
0b00000000,
0b00001100, // snake_tail_left // link left
0b00111100,
0b00111100,
0b00110000,
0b00001100,
0b00111100,
0b00011000,
0b00011000};
wow!
ReplyDeletethis is interesting, I'd never thought of something like that 8-)