//소스입니다//
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class TMproject extends JFrame {
JLabel map[][] = new JLabel[14][14];
int mapcheck[][] = new int[14][14];
int gameset = 0;// 맵체크
int bcheck;// 블랙돌규칙체크
int wcheck;// 흰돌규칙체크
int mapRule[][] = new int[14][14];
int clickX, clickY;
// Object map[][] = new JLabel[14][14];
int i, j;
int oX, oY;
int stoncolor = 2;
ImageIcon white = new ImageIcon("image/whitebig.png");
ImageIcon black = new ImageIcon("image/blackbig.png");
// Image img = omokstone.getImage();
TMproject() {
setTitle("폴리텍 오목킹");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c = getContentPane();
JPanel panel = new omokBoard();
c.add(panel);
panel.setLayout(null);
for (i = 0; i <= 13; i++) {
for (j = 0; j <= 13; j++) {
oX = 35 + i * 60;
oY = 35 + j * 60;
mapcheck[i][j] = 1;
map[i][j] = new JLabel();
map[i][j].setVisible(true);
map[i][j].setLocation(oX, oY);
map[i][j].setSize(50, 50);
/*
* map [i][j].getX(); map [i][j].getY();
*/
System.out.println(map[i][j].getX() + " ~~~~" + map[i][j].getY());
}
}
for (i = 0; i <= 13; i++) {
for (j = 0; j <= 13; j++) {
panel.add(map[i][j]);
}
}
panel.addMouseListener(new moveListener());
System.out.println(clickX);
// panel.addMouseListener(arg0);
setSize(1300, 900);
setVisible(true);
}
class omokBoard extends JPanel {
ImageIcon icon = new ImageIcon("image/brown.jpg");
Image img = icon.getImage();
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.black);
g.drawImage(img, 40, 40, this);
for (int i = 1; i <= 14; i++) {
g.drawLine(60, i * 60, 840, i * 60);
g.drawLine(i * 60, 60, i * 60, 840);
}
}
}
class moveListener extends MouseAdapter {
public void mousePressed(MouseEvent e) {
if (gameset != 1 && gameset != 2) {
int x = e.getX();
int y = e.getY();
if (x < 840 && y < 840 && x > 60 && y > 60) {
for (int i = 14; i > -1; i--) {
if (x < 35 + i * 60) {
clickX = i - 1;
}
if (y < 35 + i * 60) {
clickY = i - 1;
}
}
if (mapcheck[clickX][clickY] == 1) {
System.out.println(clickX + "----------" + clickY);
if (stoncolor % 2 == 1) {
map[clickX][clickY].setIcon(white);
mapRule[clickY][clickX] = 1;
} else if (stoncolor % 2 == 0) {
map[clickX][clickY].setIcon(black);
mapRule[clickY][clickX] = -1;
}
// x축 규칙 시작
if (clickX < 10) {
if (stoncolor % 2 == 0) {
if (mapRule[clickY][clickX + 1] == -1 && mapRule[clickY][clickX + 2] == -1
&& mapRule[clickY][clickX + 3] == -1 && mapRule[clickY][clickX + 4] == -1) {
bcheck++;
}
} else if (stoncolor % 2 == 1) {
if (mapRule[clickY][clickX + 1] == 1 && mapRule[clickY][clickX + 2] == 1
&& mapRule[clickY][clickX + 3] == 1 && mapRule[clickY][clickX + 4] == 1) {
wcheck++;
}
}
}
if (clickX > 3) {
if (stoncolor % 2 == 0) {
if (mapRule[clickY][clickX - 1] == -1 && mapRule[clickY][clickX - 2] == -1
&& mapRule[clickY][clickX - 3] == -1 && mapRule[clickY][clickX - 4] == -1) {
bcheck++;
}
} else if (stoncolor % 2 == 1) {
if (mapRule[clickY][clickX - 1] == 1 && mapRule[clickY][clickX - 2] == 1
&& mapRule[clickY][clickX - 3] == 1 && mapRule[clickY][clickX - 4] == 1) {
wcheck++;
}
}
}
// x축 규칙 끝
// y축 규칙 시작
if (clickY < 10) {
if (stoncolor % 2 == 0) {
if (mapRule[clickY + 1][clickX] == -1 && mapRule[clickY + 2][clickX] == -1
&& mapRule[clickY + 3][clickX] == -1 && mapRule[clickY + 4][clickX] == -1) {
bcheck++;
}
} else if (stoncolor % 2 == 1) {
if (mapRule[clickY + 1][clickX] == 1 && mapRule[clickY + 2][clickX] == 1
&& mapRule[clickY + 3][clickX] == 1 && mapRule[clickY + 4][clickX] == 1) {
wcheck++;
}
}
}
if (clickY > 3) {
if (stoncolor % 2 == 0) {
if (mapRule[clickY - 1][clickX] == -1 && mapRule[clickY - 2][clickX] == -1
&& mapRule[clickY - 3][clickX] == -1 && mapRule[clickY - 4][clickX] == -1) {
bcheck++;
}
} else if (stoncolor % 2 == 1) {
if (mapRule[clickY - 1][clickX] == 1 && mapRule[clickY - 2][clickX] == 1
&& mapRule[clickY - 3][clickX] == 1 && mapRule[clickY - 4][clickX] == 1) {
wcheck++;
}
}
}
// y축규칙끝
if (clickX < 10 && clickY < 10) {// z축규칙
if (stoncolor % 2 == 0) {
if (mapRule[clickY + 1][clickX + 1] == -1 && mapRule[clickY + 2][clickX + 2] == -1
&& mapRule[clickY + 3][clickX + 3] == -1
&& mapRule[clickY + 4][clickX + 4] == -1) {
bcheck++;
}
} else if (stoncolor % 2 == 1) {
if (mapRule[clickY + 1][clickX + 1] == 1 && mapRule[clickY + 2][clickX + 2] == 1
&& mapRule[clickY + 3][clickX + 3] == 1
&& mapRule[clickY + 4][clickX + 4] == 1) {
wcheck++;
}
}
}
if (clickX > 3 && clickY > 3) {
if (stoncolor % 2 == 0) {
if (mapRule[clickY - 1][clickX - 1] == -1 && mapRule[clickY - 2][clickX - 2] == -1
&& mapRule[clickY - 3][clickX - 3] == -1
&& mapRule[clickY - 4][clickX - 4] == -1) {
bcheck++;
} // 흑의 z축규칙
} else if (stoncolor % 2 == 1) {
if (mapRule[clickY - 1][clickX - 1] == 1 && mapRule[clickY - 2][clickX - 2] == 1
&& mapRule[clickY - 3][clickX - 3] == 1
&& mapRule[clickY - 4][clickX - 4] == 1) {
wcheck++;
} // 흑의 z축규칙
}
}
if (clickX > 3 && clickY < 10) {
if (stoncolor % 2 == 0) {
if (mapRule[clickY + 1][clickX - 1] == -1 && mapRule[clickY + 2][clickX - 2] == -1
&& mapRule[clickY + 3][clickX - 3] == -1
&& mapRule[clickY + 4][clickX - 4] == -1) {
bcheck++;
} // 흑의 z축규칙
} else if (stoncolor % 2 == 1) {
if (mapRule[clickY + 1][clickX - 1] == 1 && mapRule[clickY + 2][clickX - 2] == 1
&& mapRule[clickY + 3][clickX - 3] == 1
&& mapRule[clickY + 4][clickX - 4] == 1) {
wcheck++;
} // 흑의 z축규칙
}
}
if (clickX < 10 && clickY > 3) {
if (stoncolor % 2 == 0) {
if (mapRule[clickY - 1][clickX + 1] == -1 && mapRule[clickY - 2][clickX + 2] == -1
&& mapRule[clickY - 3][clickX + 3] == -1
&& mapRule[clickY - 4][clickX + 4] == -1) {
bcheck++;
} // 흑의 z축규칙
} else if (stoncolor % 2 == 1) {
if (mapRule[clickY - 1][clickX + 1] == 1 && mapRule[clickY - 2][clickX + 2] == 1
&& mapRule[clickY - 3][clickX + 3] == 1
&& mapRule[clickY - 4][clickX + 4] == 1) {
wcheck++;
} // 흑의 z축규칙
}
}
// 2대2
if (clickX < 12 && clickX > 1) {
if (stoncolor % 2 == 0) {
if (mapRule[clickY][clickX + 1] == -1 && mapRule[clickY][clickX + 2] == -1
&& mapRule[clickY][clickX - 1] == -1 && mapRule[clickY][clickX - 2] == -1) {
bcheck++;
}
} else if (stoncolor % 2 == 1) {
if (mapRule[clickY][clickX + 1] == 1 && mapRule[clickY][clickX + 2] == 1
&& mapRule[clickY][clickX - 1] == 1 && mapRule[clickY][clickX - 2] == 1) {
wcheck++;
}
}
}
if (clickY < 12 && clickY > 1) {
if (stoncolor % 2 == 0) {
if (mapRule[clickY + 1][clickX] == -1 && mapRule[clickY - 1][clickX] == -1
&& mapRule[clickY + 2][clickX] == -1 && mapRule[clickY - 2][clickX] == -1) {
bcheck++;
}
} else if (stoncolor % 2 == 1) {
if (mapRule[clickY + 1][clickX] == 1 && mapRule[clickY + 2][clickX] == 1
&& mapRule[clickY - 1][clickX] == 1 && mapRule[clickY - 2][clickX] == 1) {
wcheck++;
}
}
}
if ((clickY < 12 && clickY > 1) && (clickX < 12 && clickX > 1)) {
if (stoncolor % 2 == 0) {
if (mapRule[clickY - 1][clickX + 1] == -1 && mapRule[clickY - 2][clickX + 2] == -1
&& mapRule[clickY + 1][clickX - 1] == -1
&& mapRule[clickY + 2][clickX - 2] == -1) {
bcheck++;
} // 흑의 z축규칙
} else if (stoncolor % 2 == 1) {
if (mapRule[clickY - 1][clickX + 1] == 1 && mapRule[clickY - 2][clickX + 2] == 1
&& mapRule[clickY + 1][clickX - 1] == 1
&& mapRule[clickY + 2][clickX - 2] == 1) {
wcheck++;
} // 흑의 z축규칙
}
}
if ((clickY < 12 && clickY > 1) && (clickX < 12 && clickX > 1)) {
if (stoncolor % 2 == 0) {
if (mapRule[clickY - 1][clickX - 1] == -1 && mapRule[clickY - 2][clickX - 2] == -1
&& mapRule[clickY + 1][clickX + 1] == -1
&& mapRule[clickY + 2][clickX + 2] == -1) {
bcheck++;
} // 흑의 z축규칙
} else if (stoncolor % 2 == 1) {
if (mapRule[clickY - 1][clickX - 1] == 1 && mapRule[clickY - 2][clickX + 2] == 1
&& mapRule[clickY + 1][clickX + 1] == 1
&& mapRule[clickY + 2][clickX + 2] == 1) {
wcheck++;
} // 흑의 z축규칙
}
} // 2대2끝
// 1대3 3대1x축 규칙 시작
if (clickX < 11 && clickX > 0) {
if (stoncolor % 2 == 0) {
if (mapRule[clickY][clickX + 1] == -1 && mapRule[clickY][clickX + 2] == -1
&& mapRule[clickY][clickX + 3] == -1 && mapRule[clickY][clickX - 1] == -1) {
bcheck++;
}
} else if (stoncolor % 2 == 1) {
if (mapRule[clickY][clickX + 1] == 1 && mapRule[clickY][clickX + 2] == 1
&& mapRule[clickY][clickX + 3] == 1 && mapRule[clickY][clickX - 1] == 1) {
wcheck++;
}
}
}
if (clickX > 2 && clickX < 13) {
if (stoncolor % 2 == 0) {
if (mapRule[clickY][clickX - 1] == -1 && mapRule[clickY][clickX - 2] == -1
&& mapRule[clickY][clickX - 3] == -1 && mapRule[clickY][clickX + 1] == -1) {
bcheck++;
}
} else if (stoncolor % 2 == 1) {
if (mapRule[clickY][clickX - 1] == 1 && mapRule[clickY][clickX - 2] == 1
&& mapRule[clickY][clickX - 3] == 1 && mapRule[clickY][clickX + 1] == 1) {
wcheck++;
}
}
}
// x축끝
if (clickY < 11 && clickY < 0) {
if (stoncolor % 2 == 0) {
if (mapRule[clickY + 1][clickX] == -1 && mapRule[clickY + 2][clickX] == -1
&& mapRule[clickY + 3][clickX] == -1 && mapRule[clickY - 1][clickX] == -1) {
bcheck++;
}
} else if (stoncolor % 2 == 1) {
if (mapRule[clickY + 1][clickX] == 1 && mapRule[clickY + 2][clickX] == 1
&& mapRule[clickY + 3][clickX] == 1 && mapRule[clickY - 1][clickX] == 1) {
wcheck++;
}
}
}
if (clickY > 2 && clickY < 13) {
if (stoncolor % 2 == 0) {
if (mapRule[clickY - 1][clickX] == -1 && mapRule[clickY - 2][clickX] == -1
&& mapRule[clickY - 3][clickX] == -1 && mapRule[clickY + 1][clickX] == -1) {
bcheck++;
}
} else if (stoncolor % 2 == 1) {
if (mapRule[clickY - 1][clickX] == 1 && mapRule[clickY - 2][clickX] == 1
&& mapRule[clickY - 3][clickX] == 1 && mapRule[clickY + 1][clickX] == 1) {
wcheck++;
}
}
}
// y축끝
// Z축시작
if (clickY < 11 && clickX < 11) {
if (stoncolor % 2 == 0) {
if (mapRule[clickY + 1][clickX + 1] == -1 && mapRule[clickY + 2][clickX + 2] == -1
&& mapRule[clickY + 3][clickX + 3] == -1
&& mapRule[clickY - 1][clickX - 1] == -1) {
bcheck++;
}
} else if (stoncolor % 2 == 1) {
if (mapRule[clickY + 1][clickX + 1] == 1 && mapRule[clickY + 2][clickX + 2] == 1
&& mapRule[clickY + 3][clickX + 3] == 1
&& mapRule[clickY - 1][clickX - 1] == 1) {
wcheck++;
}
}
}
if (clickY > 2 && clickX > 2) {
if (stoncolor % 2 == 0) {
if (mapRule[clickY - 1][clickX - 1] == -1 && mapRule[clickY - 2][clickX - 2] == -1
&& mapRule[clickY - 3][clickX - 3] == -1
&& mapRule[clickY + 1][clickX + 1] == -1) {
bcheck++;
}
} else if (stoncolor % 2 == 1) {
if (mapRule[clickY - 1][clickX - 1] == 1 && mapRule[clickY - 2][clickX - 2] == 1
&& mapRule[clickY - 3][clickX - 3] == 1
&& mapRule[clickY + 1][clickX + 1] == 1) {
wcheck++;
}
}
}
if (clickX < 11 && clickY > 2) {
if (stoncolor % 2 == 0) {
if (mapRule[clickY - 1][clickX + 1] == -1 && mapRule[clickY - 2][clickX + 2] == -1
&& mapRule[clickY - 3][clickX + 3] == -1
&& mapRule[clickY + 1][clickX - 1] == -1) {
bcheck++;
}
} else if (stoncolor % 2 == 1) {
if (mapRule[clickY - 1][clickX + 1] == 1 && mapRule[clickY - 2][clickX + 2] == 1
&& mapRule[clickY - 3][clickX + 3] == 1
&& mapRule[clickY + 1][clickX - 1] == 1) {
wcheck++;
}
}
}
if (clickX > 2 && clickY < 11) {
if (stoncolor % 2 == 0) {
if (mapRule[clickY + 1][clickX - 1] == -1 && mapRule[clickY + 2][clickX - 2] == -1
&& mapRule[clickY + 3][clickX - 3] == -1
&& mapRule[clickY - 1][clickX + 1] == -1) {
bcheck++;
}
} else if (stoncolor % 2 == 1) {
if (mapRule[clickY + 1][clickX - 1] == 1 && mapRule[clickY + 2][clickX - 2] == 1
&& mapRule[clickY + 3][clickX - 3] == 1
&& mapRule[clickY - 1][clickX + 1] == 1) {
wcheck++;
}
}
}
// Z축끝
if (bcheck == 1 || wcheck == 1) {
if (bcheck == 1) {
gameset = 1;
}
if (wcheck == 1) {
gameset = 2;
}
}
if (gameset == 1) {
JOptionPane.showMessageDialog(getParent(), "흑돌우승!!");
}
if (gameset == 2) {
JOptionPane.showMessageDialog(getParent(), "백돌우승!!");
}
stoncolor++;
mapcheck[clickX][clickY] = 0;
}
}
}
}
}
public static void main(String[] args) {
new TMproject();
}
}
일단 제가 만든 오목알고리즘인데요..
실행창은 저렇게뜨고 여기 오목판 옆에 라벨을 붙이고싶은데 패널에 라벨을 아무리붙일려고 해봐도 안되더라고요.. 어떻게해야 오목판옆에 라벨을 달수있을까요
오 잼겠다 나는 나중에 javaFX로 만들어야지