示例#1
0
        public bool is_adjacent(iTile A, iTile B)
        {
            int row_A = A.get_row();
            int row_B = B.get_row();
            int col_A = A.get_col();
            int col_B = B.get_col();

            if (Math.Abs(row_A - row_B) > 1 || Math.Abs(col_A - col_B) > 1)
                return false;

            if (row_A % 2 == 0)
            {
                if (col_B - col_A == 1)
                    return false;
            }

            if (row_A % 2 == 1)
            {
                if (col_A - col_B == 1)
                    return false;
            }

            return true;
        }
示例#2
0
        /* haven't tested.. should be working.. */
        public List<iTile> Get_Family(iTile Central)
        {
            List<iTile> ret = new List<iTile>();

            if(Central.get_col() != 0)
                ret.Add(map[Central.get_row()][Central.get_col() - 1]);

            if(Central.get_col() != map_width - 1)
                ret.Add(map[Central.get_row()][Central.get_col() + 1]);

            if(Central.get_row() % 2 == 0){
                if(Central.get_row() == 0){
                    if(Central.get_col() == 0){
                        ret.Add(map[Central.get_row() + 1][Central.get_col()]);
                    }
                    else{
                        ret.Add(map[Central.get_row() + 1][Central.get_col()]);
                        ret.Add(map[Central.get_row() + 1][Central.get_col() - 1]);
                    }
                }
                else if(Central.get_row() == map_height - 1){
                    if(Central.get_col() == 0){
                        ret.Add(map[Central.get_row() - 1][Central.get_col()]);
                    }
                    else{
                        ret.Add(map[Central.get_row() - 1][Central.get_col()]);
                        ret.Add(map[Central.get_row() - 1][Central.get_col() - 1]);
                    }
                }
                else{
                    if(Central.get_col() == 0){
                        ret.Add(map[Central.get_row() - 1][Central.get_col()]);
                        ret.Add(map[Central.get_row() + 1][Central.get_col()]);
                    }
                    else{
                        ret.Add(map[Central.get_row() - 1][Central.get_col()]);
                        ret.Add(map[Central.get_row() - 1][Central.get_col() - 1]);
                        ret.Add(map[Central.get_row() + 1][Central.get_col()]);
                        ret.Add(map[Central.get_row() + 1][Central.get_col() - 1]);
                    }
                }
            }
            else{
                if(Central.get_row() == map_height - 1){
                    if(Central.get_col() == map_width - 1){
                        ret.Add(map[Central.get_row() - 1][Central.get_col()]);
                    }
                    else{
                        ret.Add(map[Central.get_row() - 1][Central.get_col()]);
                        ret.Add(map[Central.get_row() - 1][Central.get_col() + 1]);
                    }
                }
                else{
                    if(Central.get_col() == map_width - 1){
                        ret.Add(map[Central.get_row() - 1][Central.get_col()]);
                        ret.Add(map[Central.get_row() + 1][Central.get_col()]);
                    }
                    else{
                        ret.Add(map[Central.get_row() - 1][Central.get_col()]);
                        ret.Add(map[Central.get_row() - 1][Central.get_col() + 1]);
                        ret.Add(map[Central.get_row() + 1][Central.get_col()]);
                        ret.Add(map[Central.get_row() + 1][Central.get_col() + 1]);
                    }
                }
            }

            return ret;
        }