示例#1
0
 public static int getHousePieceFrom(int p)
 {
     // given a piece with a house on it, get the corresponding house piece.
     // Returns the failure piece if no house is on it.
     if (Pieces.houseNumber(p) == 0)
     {
         return(createFailurePiece());
     }
     return(createHousePiece(Pieces.houseNumber(p)));
 }
示例#2
0
 public Coordinates locateHouse(int houseNumber)
 {
     for (int i = 0; i < this.height; i++)
     {
         for (int j = 0; j < this.width; j++)
         {
             if (Pieces.houseNumber(this.board[i, j]) == houseNumber)
             {
                 return(new Coordinates(j, i, false));
             }
         }
     }
     return(new Coordinates(0, 0, true));
 }
示例#3
0
 public static int combinePieces(int p1, int p2)
 {
     // Combines a piece that is a person or house, with a regular piece.  Order is unimportant.
     // Returns the failure piece if neither piece is a plain person or house.
     if (Pieces.isTile(p1))
     {
         int t = p1; p1 = p2; p2 = t;
     }
     if (Pieces.isPerson(p1) && Pieces.isTile(p2))
     {
         return(Pieces.setPersonNumber(p2, Pieces.personNumber(p1)));
     }
     if (Pieces.isHouse(p1) && Pieces.isTile(p2))
     {
         return(Pieces.setHouseNumber(p2, Pieces.houseNumber(p1)));
     }
     return(Pieces.createFailurePiece());
 }
示例#4
0
 public int distanceToPartner(int p, Coordinates c)
 {
     // Given a person or house piece, and proposed coordinates for placing it, compute
     // the distance to its corresponding partner.  Returns Integer.MAX_VALUE if the
     // partner is not found or the input is not a pure person/house piece.
     if (Pieces.isPerson(p))
     {
         return(this.distance(this.locateHouse(Pieces.personNumber(p)), c));
     }
     else if (Pieces.isHouse(p))
     {
         return(this.distance(this.locatePerson(Pieces.houseNumber(p)), c));
     }
     else
     {
         return(int.MaxValue);
     }
 }
示例#5
0
 public static bool isHouse(int p)
 {      // true if the piece is JUST a house piece (all the rest zero)
     return(((p & 0b1111000111111111111111) == 0) && Pieces.houseNumber(p) > 0);
 }