ネストされたforループを使用してJavaでチェッカーボードパターンを描画しようとしています。私はこの質問が以前に尋ねられたことは知っていますが、ボード上に背景色を使用しているだけではない2つの異なる色で質問されていません。私はチェッカーの位置を保持するための配列として個々の四角形を使用することを計画しているので、個々の四角形を作成する必要があります。入れ子にされたforループの氷を落として各四角形を作成する方が良いでしょうか?そのショートカットに固執すべきですか?そして、もし私がそれに固執すれば、ネストされたループはどのようにフォーマットされますか(各色ごとに1つ)?チェッカータイルを作成する場合ネストされたforループを持つ2色のチェッカーボードを描画します。各四角はそれぞれ独自のオブジェクトです(Java)
0
A
答えて
1
、私は、x座標のためint
に渡す、とyのような座標:私たちはボード上のタイルを描画する方法を持ってそのように
import java.awt.Color;
import java.awt.Graphics;
public class CheckerTile {
public static final int WIDTH = 100; //width of each tile
public static final int HEIGHT = 100; //height of each tile, most likely same as width so its a square
public static int currentId = 0; //variable to reference unique id for each tile
private int id; //current id of tile
private int x; //x coordinate
private int y; //y coordinate
private int width; //width of tile
private int height; //height of tile
//Default constructor to take x and y coordinate
public CheckerTile(int x, int y) {
this.id = currentId++;
this.x = x;
this.y = y;
width = WIDTH;
height = HEIGHT;
}
public int getId()
{
return id;
}
//draws the tile on the panel.
public void draw(Graphics g)
{
//if the checkerTile's id is divisible by 2, draw it red, otherwise draw it black.
g.setColor(id % 2 == 0 ? Color.RED : Color.black);
g.fillRect(x, y, width, height);
}
}
。今度は、各オブジェクトを作成するときに、currentId
変数をインクリメントし、後でモジュラス演算子を使用して各オブジェクトを個別に色付けすることができます。
私はdraw(Graphics g)
メソッドを追加することにしたので、スウィングを使用していると仮定していますので、javaで再ペイントするときにGraphics
オブジェクトを使用します。別のライブラリを使用している場合は、ボードに描画する方法についていくつかの調査を行う必要があります。
//Creates the JPanel, which needs to be added to JFrame object in main
import java.awt.BorderLayout;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class CheckerBoard extends JPanel {
CheckerTile[][] checkerTiles; //2-dimension array of checkerTiles
public CheckerBoard() {
super();
this.setSize(800,800);
checkerTiles = new CheckerTile[9][9];
//This creates the checkerTiles.
for(int i = 0; i < 9; i++)
{
for(int j = 0; j < 9; j++)
{
checkerTiles[i][j] = new CheckerTile(j * CheckerTile.WIDTH, i * CheckerTile.HEIGHT);
}
}
this.setVisible(true);
//Repaint right away to show results.
repaint();
}
//We need to override this to paint the tiles on the board.
@Override
public void paintComponent(Graphics g)
{
for(int i = 0; i < checkerTiles.length; i++)
{
for(int j = 0; j < checkerTiles[i].length; j++)
{
//call the draw method on each tile.
checkerTiles[i][j].draw(g);
}
}
}
//A demo of adding the panel to a frame and showing the tiles.
public static void main(String[] args)
{
//Create the JFrame and add the CheckerBoard we made to it.
JFrame frame = new JFrame();
frame.setSize(800,800);
frame.setLayout(new BorderLayout());
frame.add(new CheckerBoard(), BorderLayout.CENTER);
frame.setVisible(true);
}
}
:
あなた
JPanel
で今
、それは次のようになります
関連する問題
- 1. それぞれjQueryでネストされたオブジェクトをループする
- 2. forループのOpenGL描画四角形
- 3. Androidの各画面はそれぞれ独自のアクティビティまたはレイアウトですか?
- 4. VBA forそれぞれForネストされた
- 5. キャンバス上に四角形を描画すると、1つの四角形しか描画されない
- 6. それぞれが独自の値を持つ配列を作成する
- 7. 複数の開発者で、それぞれ独自のカスタムソリューションを持つ
- 8. 2色のSpritekitで四角形/円と三角形を描画します。 。 。
- 9. Pythonカメのネストされた四角形を描く
- 10. forループと別個のプリントを持つ星のJava四角形
- 11. 2つのマッパー、それぞれ独自のソースディレクトリ - > 1つの減速機
- 12. それぞれ独自のユーザー名/パスワードを持つ複数のエンドポイントWCF
- 13. それぞれ独自のルートを持つNginx複数の場所
- 14. は2角度:それぞれのコンポーネント
- 15. どのようにオブジェクトの配列をループし、それぞれからキーを取得しますか? (角2)
- 16. D3DPT_TRIANGLESTRIPプリミティブタイプを使用してDirectXで2つの切り離された四角形を描画する方法
- 17. ジャンゴ - 2+私のプロジェクトでは、ユーザーのさまざまなタイプ、独自のカスタムフィールドと権限を持つそれぞれがあります2+ユーザー
- 18. ネストされたforループのコントロールフローグラフを描画するにはどうすればよいですか?
- 19. Java:それぞれの中でそれぞれのために?
- 20. JavaScriptでインスタンス化された各クラスの独自のループ
- 21. ハンドルバー:それぞれのインデックスをネストされた式に渡す
- 22. ネストされたループを持つ三角形の構築
- 23. (それぞれの)ループでコンボボックスが2回生成される
- 24. 各マイクロサービスはそれぞれ独自のプロセスで実行する必要がありますか?
- 25. ネストされたforループのプロパティを追加すると、各ループのforループと同じ値になります
- 26. ネストされたJinja2 forループ
- 27. Python:ネストされたForループ
- 28. ネストされたForループPython
- 29. Cの中でネストされたforループをスピードアップします。
- 30. Ramda js:ネストされたオブジェクトの配列を持つネストされたオブジェクトのレンズ