No older revisions available
No older revisions available
~cpp
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class TicTacToe extends JFrame {
private static final int O = 1;
private static final int X = 2;
int board[][];
int turn = 1;
Image notImage;
Image crossImage;
boolean exit = false;
public TicTacToe() {
board = new int[3][3];
setBounds(10, 10, 800, 600);
setBackground(Color.white);
show();
addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (exit)
JOptionPane.showMessageDialog(
null,
"Player" + turn + "Win!");
else {
int row, col;
if (100 <= e.getX()
&& e.getX() <= 400
&& 100 <= e.getY()
&& e.getY() <= 400) {
row = (int) ((e.getX() - 100) / 100);
col = (int) ((e.getY() - 100) / 100);
if (!checkBoard(row, col)) {
board[row][col] = turn;
if (turn == O)
turn = X;
else
turn = O;
}
}
repaint();
if (checkWin()) {
if (turn == 1)
turn = 2;
else
turn = 1;
JOptionPane.showMessageDialog(
null,
"Player" + turn + "Win!");
}
}
}
});
}
public boolean checkBoard(int r, int c) {
if (board[r][c] != 0)
return true;
else
return false;
}
public boolean checkWin() {
for (int i = 0; i < 3; i++) {
if ((board[i][0] == O && board[i][1] == O && board[i][2] == O)
|| (board[i][0] == X && board[i][1] == X && board[i][2] == X)
|| (board[0][i] == O && board[1][i] == O && board[2][i] == O)
|| (board[0][i] == X && board[1][i] == X && board[2][i] == X)) {
exit = true;
return true;
}
}
if ((board[0][0] == O && board[1][1] == O && board[2][2] == O)
|| (board[0][0] == X && board[1][1] == X && board[2][2] == X)
|| (board[0][2] == O && board[1][1] == O && board[2][0] == O)
|| (board[0][2] == X && board[1][1] == X && board[2][0] == X))
{
exit = true;
return true;
}
return false;
}
public static void main(String args[]) {
TicTacToe ttt = new TicTacToe();
ttt.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public void paint(Graphics g) {
setTitle("Player " + turn + " 차례");
for (int i = 0; i <= 3; i++) {
g.drawLine(100, 100 + 100 * i, 400, 100 + 100 * i);
g.drawLine(100 + 100 * i, 100, 100 + 100 * i, 400);
}
for (int i = 0; i <= 2; i++)
for (int j = 0; j <= 2; j++)
if (board[i][j] == 1)
g.drawOval(100 + 100 * i, 100 + 100 * j, 100, 100);
else if (board[i][j] == 2) {
g.drawLine(
100 + 100 * i,
100 + 100 * j,
200 + 100 * i,
200 + 100 * j);
g.drawLine(
100 + 100 * i,
200 + 100 * j,
200 + 100 * i,
100 + 100 * j);
}
}
}