/* Space INVADERS V0.2 * * by: Fabian Bremerich * Thanx to: Peter F. * * date: Mi, 08.03.2006 * */ #ifndef INVADERS2_H #define INVADERS2_H #include #include "../../config.h" #include "../../pixel.h" /****************************************************************/ /* GLOBALE VAR */ /****************************************************************/ #define P 3 extern uint16_t const peter[8]; extern uint16_t const hans[7]; /****************************************************************/ /* DEFINES */ /****************************************************************/ #define START_LIVES 3 #define SPACESHIP_LINE 1 #define GUARD_LINE (NUM_ROWS - 3) #define MAX_INVADER_HEIGHT 8 #define MAX_INVADER_WIDTH 12 #define MAX_INVADER_LIVES 3 #define POINTS_FOR_HIT 5 #define POINTS_FOR_KILL 25 #define POINTS_FOR_SPACESHIP 75 #define POINTS_FOR_LEVEL 100 #define MAX_SHOTS 7 #define MIN_SPEED 70 #define SPEED_INC_RATE 2 #define SPEED_INC_VALUE 3 #define MAX_LEVEL 5 #define SHOOTING_RATE 6 #define INVADER_SHOOTING_SPEED 10 #define CANNON_SHOOTING_SPEED 4 #define SPACESHIP_SPEED 30 #define NO_SPACESHIP 255 #define CANNON_SPEED 2 #define WAIT_MS 15 typedef struct { signed char x; signed char y; } spixel; typedef struct { unsigned char map[MAX_INVADER_WIDTH][MAX_INVADER_HEIGHT]; spixel pos; unsigned char speed; unsigned char speedinc; signed char direction; unsigned char isEdged; } Invaders; typedef struct { unsigned char pos; unsigned char lives; } Spaceship; typedef struct { unsigned char pos; unsigned char ready; } Cannon; typedef struct { unsigned char lives; unsigned int points; } Player; typedef unsigned char offScreen_t[NUMPLANE + 1][NUM_ROWS][LINEBYTES]; /****************************************************************/ /* FUNCTIONS */ /****************************************************************/ void borg_invaders(); /*----------------------main_level_funcs-------------------------*/ void procSpaceship(Spaceship * sp); void procCannon(Cannon * cn, pixel * shot); void procInvaders(Invaders * iv, pixel st[MAX_SHOTS]); void procShots(Invaders * iv, Player * pl, Cannon * cn, Spaceship * sc, unsigned char guards[NUM_COLS], pixel st[MAX_SHOTS], pixel * shot); unsigned char getStatus(Invaders * iv); /*----------------------Initialization---------------------------*/ void initGuards(unsigned char guards[NUM_COLS]); void initInvaders(Invaders * iv, unsigned char lv); /*----------------------getter/setter----------------------------*/ unsigned char getInvaderPixel(Invaders * iv, unsigned char x, unsigned char y); void setInvaderPixel(Invaders * iv, unsigned char x, unsigned char y, unsigned char val); void setGuardPixel(unsigned char *guards, unsigned char x, unsigned char y, unsigned char val); inline static unsigned char getGuardPixel(unsigned char *guards, unsigned char x, unsigned char y) { if (x < NUM_COLS && y == GUARD_LINE) return guards[x]; return 0; } /*----------------------drawing Method---------------------------*/ void draw(offScreen_t offscreen, Invaders * iv, Spaceship * sc, Player * pl, Cannon * cn, unsigned char *guards, pixel *st, pixel * shot); #endif /* INVADERS2_H */