次のようなクラスSquareがあるとします。
class Square{
private String letter;
private boolean isfilled;
}
これで、スクラブルボードに15x15の正方形があることがわかりました。ボードクラスでSquareクラスを使用し、左に余裕があるかどうか、右に余裕があるかどうかなどの制約を確認して、スクラブルボードを作成する方法を教えてもらえますか?
次のようなクラスSquareがあるとします。
class Square{
private String letter;
private boolean isfilled;
}
これで、スクラブルボードに15x15の正方形があることがわかりました。ボードクラスでSquareクラスを使用し、左に余裕があるかどうか、右に余裕があるかどうかなどの制約を確認して、スクラブルボードを作成する方法を教えてもらえますか?
私はScrabbleのルールに完全には精通していませんが、あなたが言ったことを考えると、Squareインスタンスの2次元配列を定義します。
private Square squares[][] = new Square[15][15];
おそらく、コンストラクターでこれらの正方形をインスタンス化する必要があります。
その後、いくつかの座標を指定して値を設定するためのインターフェイスを提供する必要があります。
public void setSquare(int x, int y, String value)
この文字列を指定された正方形に設定します。また、文字列が空またはnull(どちらかお好みの方)の場合、正方形が「未設定」になるようにすることもできます。このメソッドは、パラメーターが範囲内(0〜14以内)にある場合にもパラメーターを検証する必要があります。次のような別の関数でその検証を実装することもできます。
public boolean isValidCoordinate(int x, int y)
したがって、配列の有効なインデックスセットの範囲を超える問題が発生することはあまりありません。代わりに、すべての側に正方形のバッファを使用してボードを定義できます。
private Square squares[][] = new Square[17][17];
このボードでは、有効な正方形は1〜16のみです。1または17のxまたはy値は無効です。
個人的には、オブジェクトの正方形を定義する代わりに、単純に文字列を使用します(それがオブジェクトで行う唯一のことである場合)
private String squares[][] = new String[17][17];
ヌル文字列または空の文字列のいずれかが設定されていません。それ以外の場合、正方形に他のメソッドを実装する場合は、それらのクラスを定義しても問題ないと思います。