00001 //---------------------------------------------------------------------------- 00002 /** @file 00003 */ 00004 //---------------------------------------------------------------------------- 00005 00006 #ifndef HEXPOINT19x19_HPP 00007 #define HEXPOINT19x19_HPP 00008 00009 /** A location on a Hex board. A HexPoint's neighbours can be 00010 calculated only when considering what size board the point is in. 00011 See ConstBoard for an example board layout. 00012 00013 @note The order of these points if very important. There are 00014 several pieces of code that rely on this ordering 00015 (StoneBoard::GetBoardID() is one of them). Change this only if you 00016 know what you are doing! 00017 */ 00018 typedef enum 00019 { 00020 /** Dummy point. */ 00021 INVALID_POINT = 0, 00022 00023 /** Point used to denote a resign move by a player. 00024 00025 @todo since this is not really a point on a board, should we 00026 create a HexMove class and put this there? */ 00027 RESIGN = 1, 00028 00029 /** Point used to denote a swap move by a player. 00030 00031 @todo since this is not really a point on a board, should 00032 we create a HexMove class and put this there? */ 00033 SWAP_PIECES = 2, 00034 00035 /** The top edge. */ 00036 NORTH = 3, 00037 00038 /** The right edge. */ 00039 EAST = 4, 00040 00041 /** The bottom edge. */ 00042 SOUTH = 5, 00043 00044 /** The left edge. */ 00045 WEST = 6, 00046 00047 /** @name Interior cells. */ 00048 // @{ 00049 00050 HEX_CELL_A1, HEX_CELL_B1, HEX_CELL_C1, HEX_CELL_D1, HEX_CELL_E1, 00051 HEX_CELL_F1, HEX_CELL_G1, HEX_CELL_H1, HEX_CELL_I1, HEX_CELL_J1, 00052 HEX_CELL_K1, HEX_CELL_L1, HEX_CELL_M1, HEX_CELL_N1, HEX_CELL_O1, 00053 HEX_CELL_P1, HEX_CELL_Q1, HEX_CELL_R1, HEX_CELL_S1, 00054 00055 HEX_CELL_A2, HEX_CELL_B2, HEX_CELL_C2, HEX_CELL_D2, HEX_CELL_E2, 00056 HEX_CELL_F2, HEX_CELL_G2, HEX_CELL_H2, HEX_CELL_I2, HEX_CELL_J2, 00057 HEX_CELL_K2, HEX_CELL_L2, HEX_CELL_M2, HEX_CELL_N2, HEX_CELL_O2, 00058 HEX_CELL_P2, HEX_CELL_Q2, HEX_CELL_R2, HEX_CELL_S2, 00059 00060 HEX_CELL_A3, HEX_CELL_B3, HEX_CELL_C3, HEX_CELL_D3, HEX_CELL_E3, 00061 HEX_CELL_F3, HEX_CELL_G3, HEX_CELL_H3, HEX_CELL_I3, HEX_CELL_J3, 00062 HEX_CELL_K3, HEX_CELL_L3, HEX_CELL_M3, HEX_CELL_N3, HEX_CELL_O3, 00063 HEX_CELL_P3, HEX_CELL_Q3, HEX_CELL_R3, HEX_CELL_S3, 00064 00065 HEX_CELL_A4, HEX_CELL_B4, HEX_CELL_C4, HEX_CELL_D4, HEX_CELL_E4, 00066 HEX_CELL_F4, HEX_CELL_G4, HEX_CELL_H4, HEX_CELL_I4, HEX_CELL_J4, 00067 HEX_CELL_K4, HEX_CELL_L4, HEX_CELL_M4, HEX_CELL_N4, HEX_CELL_O4, 00068 HEX_CELL_P4, HEX_CELL_Q4, HEX_CELL_R4, HEX_CELL_S4, 00069 00070 HEX_CELL_A5, HEX_CELL_B5, HEX_CELL_C5, HEX_CELL_D5, HEX_CELL_E5, 00071 HEX_CELL_F5, HEX_CELL_G5, HEX_CELL_H5, HEX_CELL_I5, HEX_CELL_J5, 00072 HEX_CELL_K5, HEX_CELL_L5, HEX_CELL_M5, HEX_CELL_N5, HEX_CELL_O5, 00073 HEX_CELL_P5, HEX_CELL_Q5, HEX_CELL_R5, HEX_CELL_S5, 00074 00075 HEX_CELL_A6, HEX_CELL_B6, HEX_CELL_C6, HEX_CELL_D6, HEX_CELL_E6, 00076 HEX_CELL_F6, HEX_CELL_G6, HEX_CELL_H6, HEX_CELL_I6, HEX_CELL_J6, 00077 HEX_CELL_K6, HEX_CELL_L6, HEX_CELL_M6, HEX_CELL_N6, HEX_CELL_O6, 00078 HEX_CELL_P6, HEX_CELL_Q6, HEX_CELL_R6, HEX_CELL_S6, 00079 00080 HEX_CELL_A7, HEX_CELL_B7, HEX_CELL_C7, HEX_CELL_D7, HEX_CELL_E7, 00081 HEX_CELL_F7, HEX_CELL_G7, HEX_CELL_H7, HEX_CELL_I7, HEX_CELL_J7, 00082 HEX_CELL_K7, HEX_CELL_L7, HEX_CELL_M7, HEX_CELL_N7, HEX_CELL_O7, 00083 HEX_CELL_P7, HEX_CELL_Q7, HEX_CELL_R7, HEX_CELL_S7, 00084 00085 HEX_CELL_A8, HEX_CELL_B8, HEX_CELL_C8, HEX_CELL_D8, HEX_CELL_E8, 00086 HEX_CELL_F8, HEX_CELL_G8, HEX_CELL_H8, HEX_CELL_I8, HEX_CELL_J8, 00087 HEX_CELL_K8, HEX_CELL_L8, HEX_CELL_M8, HEX_CELL_N8, HEX_CELL_O8, 00088 HEX_CELL_P8, HEX_CELL_Q8, HEX_CELL_R8, HEX_CELL_S8, 00089 00090 HEX_CELL_A9, HEX_CELL_B9, HEX_CELL_C9, HEX_CELL_D9, HEX_CELL_E9, 00091 HEX_CELL_F9, HEX_CELL_G9, HEX_CELL_H9, HEX_CELL_I9, HEX_CELL_J9, 00092 HEX_CELL_K9, HEX_CELL_L9, HEX_CELL_M9, HEX_CELL_N9, HEX_CELL_O9, 00093 HEX_CELL_P9, HEX_CELL_Q9, HEX_CELL_R9, HEX_CELL_S9, 00094 00095 HEX_CELL_A10, HEX_CELL_B10, HEX_CELL_C10, HEX_CELL_D10, HEX_CELL_E10, 00096 HEX_CELL_F10, HEX_CELL_G10, HEX_CELL_H10, HEX_CELL_I10, HEX_CELL_J10, 00097 HEX_CELL_K10, HEX_CELL_L10, HEX_CELL_M10, HEX_CELL_N10, HEX_CELL_O10, 00098 HEX_CELL_P10, HEX_CELL_Q10, HEX_CELL_R10, HEX_CELL_S10, 00099 00100 HEX_CELL_A11, HEX_CELL_B11, HEX_CELL_C11, HEX_CELL_D11, HEX_CELL_E11, 00101 HEX_CELL_F11, HEX_CELL_G11, HEX_CELL_H11, HEX_CELL_I11, HEX_CELL_J11, 00102 HEX_CELL_K11, HEX_CELL_L11, HEX_CELL_M11, HEX_CELL_N11, HEX_CELL_O11, 00103 HEX_CELL_P11, HEX_CELL_Q11, HEX_CELL_R11, HEX_CELL_S11, 00104 00105 HEX_CELL_A12, HEX_CELL_B12, HEX_CELL_C12, HEX_CELL_D12, HEX_CELL_E12, 00106 HEX_CELL_F12, HEX_CELL_G12, HEX_CELL_H12, HEX_CELL_I12, HEX_CELL_J12, 00107 HEX_CELL_K12, HEX_CELL_L12, HEX_CELL_M12, HEX_CELL_N12, HEX_CELL_O12, 00108 HEX_CELL_P12, HEX_CELL_Q12, HEX_CELL_R12, HEX_CELL_S12, 00109 00110 HEX_CELL_A13, HEX_CELL_B13, HEX_CELL_C13, HEX_CELL_D13, HEX_CELL_E13, 00111 HEX_CELL_F13, HEX_CELL_G13, HEX_CELL_H13, HEX_CELL_I13, HEX_CELL_J13, 00112 HEX_CELL_K13, HEX_CELL_L13, HEX_CELL_M13, HEX_CELL_N13, HEX_CELL_O13, 00113 HEX_CELL_P13, HEX_CELL_Q13, HEX_CELL_R13, HEX_CELL_S13, 00114 00115 HEX_CELL_A14, HEX_CELL_B14, HEX_CELL_C14, HEX_CELL_D14, HEX_CELL_E14, 00116 HEX_CELL_F14, HEX_CELL_G14, HEX_CELL_H14, HEX_CELL_I14, HEX_CELL_J14, 00117 HEX_CELL_K14, HEX_CELL_L14, HEX_CELL_M14, HEX_CELL_N14, HEX_CELL_O14, 00118 HEX_CELL_P14, HEX_CELL_Q14, HEX_CELL_R14, HEX_CELL_S14, 00119 00120 HEX_CELL_A15, HEX_CELL_B15, HEX_CELL_C15, HEX_CELL_D15, HEX_CELL_E15, 00121 HEX_CELL_F15, HEX_CELL_G15, HEX_CELL_H15, HEX_CELL_I15, HEX_CELL_J15, 00122 HEX_CELL_K15, HEX_CELL_L15, HEX_CELL_M15, HEX_CELL_N15, HEX_CELL_O15, 00123 HEX_CELL_P15, HEX_CELL_Q15, HEX_CELL_R15, HEX_CELL_S15, 00124 00125 HEX_CELL_A16, HEX_CELL_B16, HEX_CELL_C16, HEX_CELL_D16, HEX_CELL_E16, 00126 HEX_CELL_F16, HEX_CELL_G16, HEX_CELL_H16, HEX_CELL_I16, HEX_CELL_J16, 00127 HEX_CELL_K16, HEX_CELL_L16, HEX_CELL_M16, HEX_CELL_N16, HEX_CELL_O16, 00128 HEX_CELL_P16, HEX_CELL_Q16, HEX_CELL_R16, HEX_CELL_S16, 00129 00130 HEX_CELL_A17, HEX_CELL_B17, HEX_CELL_C17, HEX_CELL_D17, HEX_CELL_E17, 00131 HEX_CELL_F17, HEX_CELL_G17, HEX_CELL_H17, HEX_CELL_I17, HEX_CELL_J17, 00132 HEX_CELL_K17, HEX_CELL_L17, HEX_CELL_M17, HEX_CELL_N17, HEX_CELL_O17, 00133 HEX_CELL_P17, HEX_CELL_Q17, HEX_CELL_R17, HEX_CELL_S17, 00134 00135 HEX_CELL_A18, HEX_CELL_B18, HEX_CELL_C18, HEX_CELL_D18, HEX_CELL_E18, 00136 HEX_CELL_F18, HEX_CELL_G18, HEX_CELL_H18, HEX_CELL_I18, HEX_CELL_J18, 00137 HEX_CELL_K18, HEX_CELL_L18, HEX_CELL_M18, HEX_CELL_N18, HEX_CELL_O18, 00138 HEX_CELL_P18, HEX_CELL_Q18, HEX_CELL_R18, HEX_CELL_S18, 00139 00140 HEX_CELL_A19, HEX_CELL_B19, HEX_CELL_C19, HEX_CELL_D19, HEX_CELL_E19, 00141 HEX_CELL_F19, HEX_CELL_G19, HEX_CELL_H19, HEX_CELL_I19, HEX_CELL_J19, 00142 HEX_CELL_K19, HEX_CELL_L19, HEX_CELL_M19, HEX_CELL_N19, HEX_CELL_O19, 00143 HEX_CELL_P19, HEX_CELL_Q19, HEX_CELL_R19, HEX_CELL_S19, 00144 00145 // @} 00146 00147 /** The invalid HexPoint. */ 00148 FIRST_INVALID 00149 00150 } HexPoint; 00151 00152 //---------------------------------------------------------------------------- 00153 00154 #endif