2009 Number Tile
<< 2009BatteryCharger | APQuestionsTrailIndex | 2008TripFlights >>
NumberTile.java
/**
* @version 11 May 2009
*/
public class NumberTile
{
/** Rotates the tile 90 degrees clockwise
*/
private int[] tile;
public NumberTile(int a, int b, int c, int d)
{
tile = new int[4];
tile[0]=a;
tile[1]=b;
tile[2]=c;
tile[3]=d;
}
public void rotate()
{
int buff=tile[3];
tile[3]=tile[2];
tile[2]=tile[1];
tile[1]=tile[0];
tile[0]=buff;
}
/** @return value at left edge of tile
*/
public int getLeft()
{ return tile[3]; }
/** @return value at right edge of tile
*/
public int getRight()
{ return tile[1]; }
public String toString()
{
return "["+tile[3]+" (top:"+tile[0]+" bottom:"+tile[2]+") "+tile[1]+"]";
}
// There may be instance variables, constructors, and methods that are not shown.
}
TileGame
import java.util.ArrayList;
/**
* @version 11 May 2009
*/
public class TileGame
{
/** represents the game board; guaranteed never to be null */
private ArrayList<NumberTile> board;
public TileGame()
{ board = new ArrayList<NumberTile>(); }
public int getIndexForFit(NumberTile tile)
{ /* to be implemented in part (a) */
return -1;
}
public boolean insertTile(NumberTile tile)
{ /* to be implemented in part (b) */
return false;
}
public void addTile(NumberTile tile)
{
board.add(tile);
}
public String toString()
{
String result="";
for (NumberTile t:board) result+=t.toString();
return result;
}
// There may be instance variables, constructors, and methods that are not shown.
}
NumberTileTester.java
/**
* TileTester.
* @version 11 May 2009
*/
public class TileTester
{
public static void main (String[] args)
{
System.out.println("Test of Tile Rotation");
NumberTile a=new NumberTile(4,3,7,4);
System.out.print(a);
a.rotate();
System.out.print(a);
a.rotate();
System.out.print(a);
a.rotate();
System.out.print(a);
a.rotate();
System.out.print(a);
System.out.println("\n\nTest of Tile Game");
TileGame game=new TileGame();
game.addTile(a);
game.addTile(new NumberTile(6,4,3,3) );
game.addTile(new NumberTile(1,2,3,4) );
game.addTile(new NumberTile(3,2,5,2) );
game.addTile(new NumberTile(5,9,2,2) );
System.out.println(game);
System.out.println("\n\nTest of part a");
NumberTile tile1=new NumberTile(4,2,9,2);
NumberTile tile2=new NumberTile(4,2,9,8);
NumberTile tile3=new NumberTile(0,4,0,0);
NumberTile tile4=new NumberTile(0,0,0,9);
System.out.println("getIndexForFit(tile1) should return 3 or 4: "+game.getIndexForFit(tile1) );
System.out.println("getIndexForFit(tile2) should return -1: "+game.getIndexForFit(tile2) );
System.out.println("getIndexForFit(tile3) should return 0: "+game.getIndexForFit(tile3) );
System.out.println("getIndexForFit(tile4) should return 5: "+game.getIndexForFit(tile4) );
TileGame empty=new TileGame();
System.out.println("empty.getIndexForFit(tile1) should return 0: "+empty.getIndexForFit(tile1) );
System.out.println("\n\nTest of part b");
System.out.println("Before:\n"+game);
System.out.println("Able to insert tile1? "+game.insertTile(tile1));
System.out.println("After tile 1:\n"+game);
System.out.println("Able to insert tile2? "+game.insertTile(tile2));
System.out.println("After tile 2:\n"+game);
}
}
