@@ -0,0 +1,2569 @@
+public class Contract %7B%0A    /**%0A     * The member of the partnership who introduced the strain of the contract.%0A     */%0A    private final int DECLARER;%0A%0A    /**%0A     * A doubled or redoubled contract will result in higher scores.%0A     */%0A    private final int DOUBLED;%0A%0A    /**%0A     * The players need to take 6 more than the rank of the contract.%0A     */%0A    private final int RANK;%0A%0A    /**%0A     * The trump suit of the contract.%0A     */%0A    private final int STRAIN;%0A%0A    /**%0A     * Create the default contract (1S by North).%0A     */%0A    public Contract() %7B%0A        this(1, Rules.NOTRUMP, 0, Rules.NORTH);%0A    %7D%0A%0A    /**%0A     * Create a contract from four ints.%0A     *%0A     * @param rank 1-7, inclusive%0A     * @param strain %7B@code Rules.CLUBS%7D, %7B@code Rules.DIAMONDS%7D,%0A     *               %7B@code Rules.HEARTS%7D, %7B@code Rules.SPADES%7D, or%0A     *               %7B@code Rules.NOTRUMP%7D%0A     * @param doubled 0 if undoubled, 1 if doubled, or 2 if redoubled%0A     * @param declarer %7B@code Rules.NORTH%7D, %7B@code Rules.EAST%7D,%0A     *                 %7B@code Rules.SOUTH%7D, or %7B@code Rules.WEST%7D%0A     */%0A    public Contract(int rank, int strain, int doubled, int declarer) %7B%0A        this.DECLARER = declarer;%0A        this.DOUBLED = doubled;%0A        this.RANK = rank;%0A        this.STRAIN = strain;%0A    %7D%0A%0A    /**%0A     * Create a contract from the highest bid.%0A     *%0A     * @param b the highest bid in the auction%0A     * @param doubled 0 if undoubled, 1 if doubled, or 2 if redoubled%0A     * @param declarer %7B@code Rules.NORTH%7D, %7B@code Rules.EAST%7D,%0A     *                 %7B@code Rules.SOUTH%7D, or %7B@code Rules.WEST%7D%0A     */%0A    public Contract(Bid b, int doubled, int declarer) %7B%0A        this(b.rank(), b.strain(), doubled, declarer);%0A    %7D%0A%0A    /**%0A     * Get the rank of the contract.%0A     *%0A     * @return 1-7, inclusive%0A     */%0A    public int rank() %7B return this.RANK; %7D%0A%0A    /**%0A     * Get the strain of the contract.%0A     *%0A     * @return %7B@code Rules.CLUBS%7D, %7B@code Rules.DIAMONDS%7D,%0A     *         %7B@code Rules.HEARTS%7D, %7B@code Rules.SPADES%7D, or%0A     *         %7B@code Rules.NOTRUMP%7D%0A     */%0A    public int strain() %7B return this.STRAIN; %7D%0A%0A    /**%0A     * Get whether the contract was doubled.%0A     *%0A     * @return 0 if undoubled, 1 if doubled, or 2 if redoubled%0A     */%0A    public int doubled() %7B return this.DOUBLED; %7D%0A%0A    /**%0A     * Get the player who introduced the strain of the contract.%0A     *%0A     * @return %7B@code Rules.NORTH%7D, %7B@code Rules.EAST%7D,%0A     *         %7B@code Rules.SOUTH%7D, or %7B@code Rules.WEST%7D%0A     */%0A    public int declarer() %7B return this.DECLARER; %7D%0A%7D%0A

Add a Contract class.