こんなことがしたいのかな?
Java
1import java.awt.Graphics;
2import java.awt.Color;
3import javax.swing.JFrame;
4import javax.swing.JPanel;
5
6class Main extends JFrame {
7 public static final int blank = 0, black = 1, white = 2;
8 public static final int width = 8, height = 8;
9 public static final int gs = 80;
10 public int[][] board = new int[height][width];
11
12 public static void main(String[] args) { new Main(); }
13
14 Main() {
15 setDefaultCloseOperation(EXIT_ON_CLOSE);
16 setSize(650, 680);
17 setTitle("Othello");
18 setLocationRelativeTo(null);
19 setResizable(false);
20 add(new Board()); //描画領域の追加
21 setVisible(true);
22 initBoard();
23 }
24
25 void initBoard() {
26 for (int i = 0; i < height; i++)
27 for (int j = 0; j < width; j++)
28 board[i][j] = blank;
29 board[3][4] = board[4][3] = black;
30 board[3][3] = board[4][4] = white;
31 }
32
33 class Board extends JPanel {
34 public void paintComponent(Graphics g) {
35 g.setColor(new Color(0, 128, 128)); // 色を指定
36 g.fillRect(0, 0, gs * width, gs * height); // 全体を塗りつぶす
37 g.setColor(Color.black);
38 for (int i = 0; i < height; i++)
39 g.drawLine(gs * i, 0, gs * i, gs * height); // 縦線を引く
40 for (int i = 0; i < width; i++)
41 g.drawLine(0, gs * i, gs * width, gs * i); // 横線を引く
42 g.drawRect(0, 0, gs * width, gs * height); // 外枠(矩形)を描画
43 for (int i = 0; i < width; i++) {
44 for (int j = 0; j < height; j++) {
45 int b = board[i][j];
46 if (b != blank) {
47 g.setColor(b == black ? Color.black : Color.white);
48 g.fillOval(gs*i+4, gs*j+4, gs-8, gs-8);
49 }
50 }
51 }
52 }
53 }
54}
追記
ファイルを Main.java と Board.java に分割できるように
class Board を独立させました。
マウスボタンをクリックしたときの処理を追加してみました。
Java
1import java.awt.Graphics;
2import java.awt.Color;
3import java.awt.event.MouseAdapter;
4import java.awt.event.MouseEvent;
5import javax.swing.JFrame;
6import javax.swing.JPanel;
7
8class Main extends JFrame {
9
10 public static void main(String[] args) { new Main(); }
11
12 Main() {
13 setSize(650, 680);
14 setTitle("Othello");
15 setLocationRelativeTo(null);
16 setResizable(false);
17 setDefaultCloseOperation(EXIT_ON_CLOSE); // [x]ボタンで終了
18 add(new Board()); // 描画領域の追加
19 setVisible(true);
20 }
21}
22
23class Board extends JPanel {
24 static final int blank = 0, black = 1, white = 2;
25 static final int width = 8, height = 8;
26 static final int gs = 80;
27
28 int[][] board = new int[height][width];
29 int turn = black;
30
31 Board() {
32 for (int i = 0; i < height; i++)
33 for (int j = 0; j < width; j++) board[i][j] = blank;
34 board[3][3] = board[4][4] = white;
35 board[3][4] = board[4][3] = black;
36
37 addMouseListener(new MouseAdapter() {
38 public void mousePressed(MouseEvent e) {
39 int x = e.getX() / gs, y = e.getY() / gs;
40 if (x < 8 && y < 8) {
41 board[x][y] = turn;
42 turn = black + white - turn;
43 repaint();
44 }
45 }
46 });
47 }
48
49 public void paintComponent(Graphics g) {
50 g.setColor(new Color(0, 128, 128)); // 色を指定
51 g.fillRect(0, 0, gs * width, gs * height); // 全体を塗りつぶす
52
53 g.setColor(Color.black);
54 for (int i = 0; i < height; i++)
55 g.drawLine(gs * i, 0, gs * i, gs * height); // 縦線を引く
56 for (int i = 0; i < width; i++)
57 g.drawLine(0, gs * i, gs * width, gs * i); // 横線を引く
58 g.drawRect(0, 0, gs * width, gs * height); // 外枠(矩形)を描画
59
60 for (int i = 0; i < height; i++) {
61 for (int j = 0; j < width; j++) {
62 int piece = board[i][j];
63 if (piece != blank) {
64 g.setColor(piece == black ? Color.black : Color.white);
65 g.fillOval(gs * i + 4, gs * j + 4, gs - 8, gs - 8);
66 }
67 }
68 }
69 }
70}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。