#ifndef LANGUAGE_H #define LANGUAGE_H #include "types.h" //BLAH!!!!!!!!!!!!! // SENSE COMMANDS MASKS #define SENSE_HERE_MASK 0x00 #define SENSE_AHEAD_MASK 0x01 #define SENSE_LEFTAHEAD_MASK 0x02 #define SENSE_RIGHTAHEAD_MASK 0x03 // MARK COMMAND MASK #define MARK_MASK 0x04 // UNMARK COMMAND MASK #define UNMARK_MASK 0x05 // PICKUP COMMAND MASK #define PICKUP_MASK 0x06 // DROP COMMAND MASK #define DROP_MASK 0x07 // TURN COMMAND MASK #define TURNRIGHT_MASK 0x08 #define TURNLEFT_MASK 0x09 // MOVE COMMAND MASK #define MOVE_MASK 0x0A // FLIP COMMAND MASK #define FLIP_MASK 0x0B // FRIEND CONDITION MASK #define FRIEND_MASK 0x00 // FOE CONDITION MASK #define FOE_MASK 0x01 // FRIENDWITHFOOD CONDITION MASK #define FRIENDWITHFOOD_MASK 0x02 // FOEWITHFOOD CONDITION MASK #define FOEWITHFOOD_MASK 0x03 // FOOD CONDITION MASK #define FOOD_MASK 0x04 // ROCK CONDITION MASK #define ROCK_MASK 0x05 // FOEMARKER CONDITION MASK #define FOEMARKER_MASK 0x06 // HOME CONDITION MASK #define HOME_MASK 0x07 // FOEHOME CONDITION MASK #define FOEHOME_MASK 0x08 // MARKER_MASK #define MARKER_MASK 0x09 struct Command { uchar opcode; //one of the above masks ushort arg; //"cond" for sense or "i" for mark etc ushort st1; //next states ushort st2; }; //direction change constants #define LEFTDIR (-1) #define RIGHTDIR (1) //color constants #define RED 0 #define BLACK 1 #define otherColor(x) (1-(x)) #define isColor(x) (((x)==RED) || ((x)==BLACK)) //object types #define ANTRED RED #define ANTBLACK BLACK #define WALL 8 #define EMPTY 16 #define ALY_MARKER_MASK 0x3F #define markerCode(x) ((uchar)(1<<(x))) #define homeCode ((uchar)(1<<7)) #define foodCarryCode ((uchar)(1<<6)) #define BOARD_SZ 101 struct Map { int sizex,sizey; char object[BOARD_SZ][BOARD_SZ]; ushort foodcount[BOARD_SZ][BOARD_SZ]; uchar marker[2][BOARD_SZ][BOARD_SZ]; // colour,x,y }; #endif