2012-04-17 13 views
2

私は現在、Swing/Awtを使用してJavaにグラフィックスドクソルバープログラムを書いています。
http://zitowolf.net/sudoku/images/bd6x6.png http://zitowolf.net/sudoku/images/bd8x8.png
6x6のボードと8x8のボードスクロールボードでボックスを着色するためのアルゴリズム

A:だから私は、私はボード上の(太い線でマークされた)日陰に、これらは(3×3や2×3箱で)されている方法はボックスを望んでいたことを決めましたプログラム内のボードは、基本的にint[dimension][dimension]アレイとして表され、プログラムは4x4 - > 16x16の寸法のボードを受け入れます。

問題は、行または列の隣のボックスに同じ陰影が付いていないことを確認することです。 GUIシェーディング・プロセス自体は問題ではありませんが、四角形を影付きボックスの一部として網掛けする必要があるかどうかを確認してください。

私はこの問題のための単純なアルゴリズムを二重for-loopで実行しようとしましたが、妥当なパターンはまだ得られていません。ここまでのアルゴリズムは、他のすべてのボックスを左上から右下に色付けするという前提に基づいています。これは6x6のバリアントでは機能しません。なぜなら、色付きのボックス→白いボックス→白いボックスというシーケンスがあるからです。

ここで誰かがアルゴリズムや別のアプローチを提案できますか?必要に応じてさらに情報を提供します。とても有難い。

答えて

2
bool should_shade(x,y,size_x,size_y) 
//sizes are size of small box and position x,y count from 0 
{ 
    return ((x/size_x + y/size_y) % 2) == 0; //division is integer division 

} 
+0

私はこのリターンステートメントを 'Java'でどのように書き直すのですか?コンパイラは次のようになります: '... operator! intには適用できません。 –

+0

@hesse fixed ... –

+0

これはすごくうまくいった! 'should_shade(i、j、boxWidth、boxHeight)'で動作させるために 'x/size_y'と' y/size_x'に部品を変更しました。ここで、 'boxWidth'は列の数であり、' boxHeight'のボックス内の行。私はこの算術がなぜ機能するのかを知りませんが、それは最高です! –