자바 오목 실현(상세 소스 첨부)
학습 목적:자바 에서 swing 류 와 자바 기초 지식의 공고 함 을 숙지 합 니 다.(문장 끝 에 소스 코드 파일 과 포 장 된 jar 파일 이 있 습 니 다)
효과 그림:
사고방식:**1.먼저 Frame 프레임 워 크 를 구축 하여 메뉴 옵션 과 버튼 클릭 이 벤트 를 설정 합 니 다.
MyFrame.java 파일 코드 는 다음 과 같 습 니 다.
package StartGame;
import javax.swing.ButtonGroup;
import javax.swing.Icon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JRadioButtonMenuItem;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Toolkit;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
//
public class MyFrame extends JFrame {
// static boolean canPlay1 = false;
final MyPanel panel = new MyPanel();
public MyFrame() {
//
this.setSize(500, 600); //
this.setTitle(" "); //
int width = Toolkit.getDefaultToolkit().getScreenSize().width;//
int height = Toolkit.getDefaultToolkit().getScreenSize().height;//
this.setLocation((width - 500) / 2, (height - 500) / 2); // ( )
this.setResizable(false); //
// this.setLocationRelativeTo(null);//
/*
*
*/
//
JMenuBar bar = new JMenuBar();
this.setJMenuBar(bar);
//
JMenu menu1 = new JMenu(" "); //
JMenu menu2 = new JMenu(" ");
JMenu menu3 = new JMenu(" ");
bar.add(menu1); //
bar.add(menu2);
bar.add(menu3);
JMenu menu4 = new JMenu(" "); // “ ” “ ”
menu2.add(menu4);
// JMenuItem item1=new JMenuItem(" ");
// JMenuItem item2=new JMenuItem(" ");
// “”
JRadioButtonMenuItem item1 = new JRadioButtonMenuItem(" ");
JRadioButtonMenuItem item2 = new JRadioButtonMenuItem(" ");
// item1
item1.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
Icon icon = new Icon() {
@Override
public void paintIcon(Component c, Graphics g, int x, int y) {
// TODO Auto-generated method stub
}
@Override
public int getIconWidth() {
// TODO Auto-generated method stub
return 0;
}
@Override
public int getIconHeight() {
// TODO Auto-generated method stub
return 0;
}
};
Object[] options = { " ", " , " };
int n = JOptionPane.showOptionDialog(null, " ", " ", 0, 1, icon, options, " ");
if (n == 0) {
panel.setIsManAgainst(true);
panel.Start();
item1.setSelected(true);
}
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
});
// item2 ,
item2.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
Icon icon = new Icon() {
@Override
public void paintIcon(Component c, Graphics g, int x, int y) {
// TODO Auto-generated method stub
}
@Override
public int getIconWidth() {
// TODO Auto-generated method stub
return 0;
}
@Override
public int getIconHeight() {
// TODO Auto-generated method stub
return 0;
}
};
Object[] options = { " ", " , " };
int n = JOptionPane.showOptionDialog(null, " ", " ", 0, 1, icon, options, " ");
if (n == 0) {
panel.setIsManAgainst(false);
panel.Start();
item2.setSelected(true);
}
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
});
//
ButtonGroup bg = new ButtonGroup();
bg.add(item1);
bg.add(item2);
//
menu4.add(item1);
menu4.add(item2);
item2.setSelected(true);
//
JMenu menu5 = new JMenu(" "); // “ ” “ ”
menu2.add(menu5);
//
JRadioButtonMenuItem item3 = new JRadioButtonMenuItem(" ");
JRadioButtonMenuItem item4 = new JRadioButtonMenuItem(" ");
// item3 ,
item3.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
Icon icon = new Icon() {
@Override
public void paintIcon(Component c, Graphics g, int x, int y) {
// TODO Auto-generated method stub
}
@Override
public int getIconWidth() {
// TODO Auto-generated method stub
return 0;
}
@Override
public int getIconHeight() {
// TODO Auto-generated method stub
return 0;
}
};
Object[] options = { " ", " , " };
int n = JOptionPane.showOptionDialog(null, " ", " ", 0, 1, icon, options, " ");
if (n == 0) {
panel.setIsBlack(true);
panel.Start();
item3.setSelected(true);
}
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
});
// item4
item4.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
Icon icon = new Icon() {
@Override
public void paintIcon(Component c, Graphics g, int x, int y) {
// TODO Auto-generated method stub
}
@Override
public int getIconWidth() {
// TODO Auto-generated method stub
return 0;
}
@Override
public int getIconHeight() {
// TODO Auto-generated method stub
return 0;
}
};
Object[] options = { " ", " , " };
int n = JOptionPane.showOptionDialog(null, " ", " ", 0, 1, icon, options, " ");
if (n == 0) {
panel.setIsBlack(false);
panel.Start();
item4.setSelected(true);
}
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
});
//
ButtonGroup bg1 = new ButtonGroup();
bg1.add(item3);
bg1.add(item4);
//
menu5.add(item3);
menu5.add(item4);
item3.setSelected(true);
// “ ”
JMenuItem menu6 = new JMenuItem(" ");
menu3.add(menu6);
/*
*
*/
//
JMenuItem menu7 = new JMenuItem(" ");
menu1.add(menu7);
JMenuItem menu8 = new JMenuItem(" ");
menu1.add(menu8);
menu7.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
panel.Start();
// panel.repaint();
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
});
menu8.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
Icon icon = new Icon() {
@Override
public void paintIcon(Component c, Graphics g, int x, int y) {
// TODO Auto-generated method stub
}
@Override
public int getIconWidth() {
// TODO Auto-generated method stub
return 0;
}
@Override
public int getIconHeight() {
// TODO Auto-generated method stub
return 0;
}
};
Object[] options = { " ", " , " };
int n = JOptionPane.showOptionDialog(null, " ", " ", 0, 1, icon, options, " ");
if (n == 0) {
panel.Start();
}
// panel.repaint();
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
});
//
JMenuItem menu9 = new JMenuItem(" ");
menu1.add(menu9);
menu9.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
Icon icon = new Icon() {
@Override
public void paintIcon(Component c, Graphics g, int x, int y) {
// TODO Auto-generated method stub
}
@Override
public int getIconWidth() {
// TODO Auto-generated method stub
return 0;
}
@Override
public int getIconHeight() {
// TODO Auto-generated method stub
return 0;
}
};
Object[] options = { " ", " , " };
int n = JOptionPane.showOptionDialog(null, " ", " ", 0, 1, icon, options, " ");
if (n == 0) {
System.exit(0);//
}
// panel.repaint();
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
});
//
JRadioButtonMenuItem item5 = new JRadioButtonMenuItem(" ");//
JRadioButtonMenuItem item6 = new JRadioButtonMenuItem(" ");
JRadioButtonMenuItem item7 = new JRadioButtonMenuItem(" ");
// JRadioButtonMenuItem item8= new JRadioButtonMenuItem(" ");
ButtonGroup bg3 = new ButtonGroup();//
bg3.add(item5);
bg3.add(item6);
bg3.add(item7);
// bg3.add(item8);
JMenu menu10 = new JMenu(" ");//
menu2.add(menu10);
menu10.add(item5);//
menu10.add(item6);
menu10.add(item7);
// menu2.add(item8);
item5.setSelected(true);//
//
item5.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
Icon icon = new Icon() {
@Override
public void paintIcon(Component c, Graphics g, int x, int y) {
// TODO Auto-generated method stub
}
@Override
public int getIconWidth() {
// TODO Auto-generated method stub
return 0;
}
@Override
public int getIconHeight() {
// TODO Auto-generated method stub
return 0;
}
};
Object[] options = { " ", " , " };
int n = JOptionPane.showOptionDialog(null, " ", " ", 0, 1, icon, options, " ");
if (n == 0) {
panel.setGameDifficulty(0);
panel.Start();
item5.setSelected(true);
}
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
});
//
item6.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
Icon icon = new Icon() {
@Override
public void paintIcon(Component c, Graphics g, int x, int y) {
// TODO Auto-generated method stub
}
@Override
public int getIconWidth() {
// TODO Auto-generated method stub
return 0;
}
@Override
public int getIconHeight() {
// TODO Auto-generated method stub
return 0;
}
};
Object[] options = { " ", " , " };
int n = JOptionPane.showOptionDialog(null, " ", " ", 0, 1, icon, options, " ");
if (n == 0) {
panel.setGameDifficulty(1);
panel.Start();
item6.setSelected(true);
}
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
});
//
item7.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
Icon icon = new Icon() {
@Override
public void paintIcon(Component c, Graphics g, int x, int y) {
// TODO Auto-generated method stub
}
@Override
public int getIconWidth() {
// TODO Auto-generated method stub
return 0;
}
@Override
public int getIconHeight() {
// TODO Auto-generated method stub
return 0;
}
};
Object[] options = { " ", " , " };
int n = JOptionPane.showOptionDialog(null, " ", " ", 0, 1, icon, options, " ");
if (n == 0) {
panel.setGameDifficulty(2);
panel.Start();
item7.setSelected(true);
}
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
});
//
menu6.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
Icon icon = new Icon() {
@Override
public void paintIcon(Component c, Graphics g, int x, int y) {
// TODO Auto-generated method stub
}
@Override
public int getIconWidth() {
// TODO Auto-generated method stub
return 0;
}
@Override
public int getIconHeight() {
// TODO Auto-generated method stub
return 0;
}
};
JOptionPane.showMessageDialog(null, " : ");
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
});
/*
*
*/
Container con = this.getContentPane(); //
con.add(panel); //
/*
*
*/
}
}
2.두 번 째 단 계 는 바둑판 을 표시 하 는 용 기 를 설정 합 니 다.파일 원본 코드 는 MyPanel.java 입 니 다.
package StartGame;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Panel;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.image.*;
import java.io.File;
import java.net.URL;
import java.util.Arrays;
import java.util.Random;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
//
public class MyPanel extends JPanel implements MouseListener, Runnable {
private static final Toolkit ResourceUtil = null;
public Image boardImg; //
static int[][] allChess = new int[15][15]; //
static int[][] temporaryChess = new int[15][15];
int x;//
int y;//
Boolean canPlay = false; // ,
Boolean isBlack = true;// ,
Boolean isManAgainst = false; //
String message = " ";
Thread t = new Thread(this);
int maxTime = 120;
int blackTime = 120;
int whiteTime = 120;
String blackMessage = " ";
String whiteMessage = " ";
static int gameDifficulty = 0;// ,0 ,1 ,2 ,3
// isBlack
public boolean getIsBlack() {
return this.isBlack;
}
// isBlack
public void setIsBlack(boolean isBlack) {
this.isBlack = isBlack;
}
// isManAgainst
public boolean getIsManAgainst() {
return this.isManAgainst;
}
// isManAgainst
public void setIsManAgainst(boolean isManAgainst) {
this.isManAgainst = isManAgainst;
}
// isManAgainst
public int getGameDifficulty() {
return this.gameDifficulty;
}
// setGameDifficulty
public void setGameDifficulty(int gameDifficulty) {
this.gameDifficulty = gameDifficulty;
}
//
public MyPanel() {
boardImg = Toolkit.getDefaultToolkit().getImage("./src/StartGame/fiveCHessBourd.jpg");
this.repaint();
//
addMouseListener((MouseListener) this);
// addMouseMotionListener((MouseMotionListener) this);
// this.requestFocus();
t.start();
t.suspend();//
// t.resume();
}
//
@Override
public void paint(Graphics g) {
super.paint(g);
int imgWidth = boardImg.getWidth(this); //
int imgHeight = boardImg.getHeight(this); //
int FWidth = getWidth();
int FHeight = getHeight();
String message; //
int x = (FWidth - imgWidth) / 2;
int y = (FHeight - imgHeight) / 2;
g.drawImage(boardImg, x, y, null); //
g.setFont(new Font(" ", 0, 14));
g.drawString(" :" + blackTime, 30, 470);
g.drawString(" :" + whiteTime, 260, 470);
//
for (int i = 0; i < 15; i++) {
g.drawLine(30, 30 + 30 * i, 450, 30 + 30 * i);
g.drawLine(30 + 30 * i, 30, 30 + 30 * i, 450);
}
//
g.fillRect(240 - 5, 240 - 5, 10, 10); //
g.fillRect(360 - 5, 360 - 5, 10, 10); //
g.fillRect(360 - 5, 120 - 5, 10, 10); //
g.fillRect(120 - 5, 360 - 5, 10, 10);//
g.fillRect(120 - 5, 120 - 5, 10, 10);//
//
for (int i = 0; i < 15; i++) {
for (int j = 0; j < 15; j++) {
// if (allChess[i][j] == 1) {
// //
// int tempX = i * 30 + 30;
// int tempY = j * 30 + 30;
// g.fillOval(tempX - 7, tempY - 7, 14, 14);
// }
// if (allChess[i][j] == 2) {
// //
// int tempX = i * 30 + 30;
// int tempY = j * 30 + 30;
// g.setColor(Color.WHITE);
// g.fillOval(tempX - 7, tempY - 7, 14, 14);
// g.setColor(Color.BLACK);
// g.drawOval(tempX - 7, tempY - 7, 14, 14);
// }
draw(g, i, j); //
}
}
}
//
@Override
public void mousePressed(MouseEvent e) {
// x = e.getX();//
// y = e.getY();//
// if (x >= 29 && x <= 451 && y >= 29 && y <= 451) { //
//
// }
if (canPlay == true) {//
x = e.getX(); //
y = e.getY();
if (isManAgainst == true) {//
manToManChess();
} else { // ,
manToMachine();
}
}
}
//
private boolean checkWin(int x, int y) {
// TODO Auto-generated method stub
boolean flag = false;
//
int count = 1;
// :allChess[x][y] y
int color = allChess[x][y];
//
count = this.checkCount(x, y, 1, 0, color);
if (count >= 5) {
flag = true;
} else {
//
count = this.checkCount(x, y, 0, 1, color);
if (count >= 5) {
flag = true;
} else {
//
count = this.checkCount(x, y, 1, -1, color);
if (count >= 5) {
flag = true;
} else {
//
count = this.checkCount(x, y, 1, 1, color);
if (count >= 5) {
flag = true;
}
}
}
}
return flag;
}
//
private int checkCount(int x, int y, int xChange, int yChange, int color) {
// TODO Auto-generated method stub
int count = 1;
int tempX = xChange;
int tempY = yChange;
while (x + xChange >= 0 && x + xChange <= 14 && y + yChange >= 0 && y + yChange <= 14
&& color == allChess[x + xChange][y + yChange]) {
count++;
if (xChange != 0) {
xChange++;
}
if (yChange != 0) {
if (yChange > 0) {
yChange++;
} else {
yChange--;
}
}
}
xChange = tempX;
yChange = tempY;
while (x - xChange >= 0 && x - xChange <= 14 && y - yChange >= 0 && y - yChange <= 14
&& color == allChess[x - xChange][y - yChange]) {
count++;
if (xChange != 0) {
xChange++;
}
if (yChange != 0) {
if (yChange > 0) {
yChange++;
} else {
yChange--;
}
}
}
return count;
}
//
private int checkCountMachine(int x, int y, int xChange, int yChange, int color) {
// TODO Auto-generated method stub
int count = 0;
int tempX = xChange;
int tempY = yChange;
while (x + xChange >= 0 && x + xChange <= 14 && y + yChange >= 0 && y + yChange <= 14
&& color == allChess[x + xChange][y + yChange]) {
count++;
if (xChange != 0) {
xChange++;
}
if (yChange != 0) {
if (yChange > 0) {
yChange++;
} else {
yChange--;
}
}
}
xChange = tempX;
yChange = tempY;
while (x - xChange >= 0 && x - xChange <= 14 && y - yChange >= 0 && y - yChange <= 14
&& color == allChess[x - xChange][y - yChange]) {
count++;
if (xChange != 0) {
xChange++;
}
if (yChange != 0) {
if (yChange > 0) {
yChange++;
} else {
yChange--;
}
}
}
return count;
}
public void paintConmponents(Graphics g) {
super.paintComponents(g);
}
//
public void draw(Graphics g, int i, int j) {
if (allChess[i][j] == 1) {
g.setColor(Color.black);//
g.fillOval(30 * i + 30 - 7, 30 * j + 30 - 7, 14, 14);
g.drawString(message, 230, 20);
}
if (allChess[i][j] == 2) {
g.setColor(Color.white);//
g.fillOval(30 * i + 30 - 7, 30 * j + 30 - 7, 14, 14);
g.drawString(message, 230, 20);
}
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void run() {
// TODO Auto-generated method stub
//
if (maxTime > 0) {
while (true) {
// System.out.println(canPlay + "11");
if (isManAgainst) {
if (isBlack) {
blackTime--;
if (blackTime == 0) {
JOptionPane.showMessageDialog(this, " , !");
}
} else {
whiteTime--;
if (whiteTime == 0) {
JOptionPane.showMessageDialog(this, " , !");
}
}
} else {
// ,
blackTime--;
if (blackTime == 0) {
JOptionPane.showMessageDialog(this, " , !");
}
//
}
blackMessage = blackTime / 3600 + ":" + (blackTime / 60 - blackTime / 3600 * 60) + ":"
+ (blackTime - blackTime / 60 * 60);
whiteMessage = whiteTime / 3600 + ":" + (whiteTime / 60 - whiteTime / 3600 * 60) + ":"
+ (whiteTime - whiteTime / 60 * 60);
this.repaint();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
// ,
public void Start() {
this.canPlay = true;
for (int i = 0; i < 14; i++) {
for (int j = 0; j < 14; j++) {
allChess[i][j] = 0;
}
}
if (canPlay == true) {
t.resume();
}
this.repaint();
JOptionPane.showMessageDialog(this, " , ");
if (isBlack == false && isManAgainst == false) {
machineChess(gameDifficulty);
}
// allChess=new int[19][19]
// message = " ";
//
// isBlack = true;
// blackTime = maxTime;
// whiteTime = maxTime;
// if (maxTime > 0) {
// blackMessage = maxTime / 3600 + ":" + (maxTime / 60 - maxTime / 3600
// * 60) + ":"
// + (maxTime - maxTime / 60 * 60);
// whiteMessage = maxTime / 3600 + ":" + (maxTime / 60 - maxTime / 3600
// * 60) + ":"
// + (maxTime - maxTime / 60 * 60);
// t.resume();
// } else {
// blackMessage = " ";
// whiteMessage = " ";
// }
// this.repaint();// ,
}
//
public void manToManChess() {
if (x >= 29 && x <= 451 && y >= 29 && y <= 451) {
// System.out.println(" :"+x+"--"+y);
x = (x + 15) / 30 - 1; //
y = (y + 15) / 30 - 1;
if (allChess[x][y] == 0) {
//
if (isBlack == true) {
allChess[x][y] = 1;
isBlack = false;
blackTime = 120;
message = " ";
} else {
allChess[x][y] = 2;
isBlack = true;
whiteTime = 120;
message = " ";
}
}
// 5
boolean winFlag = this.checkWin(x, y);
this.repaint(); //
if (winFlag == true) {
JOptionPane.showMessageDialog(this, " ," + (allChess[x][y] == 1 ? " " : " ") + " !");
canPlay = false;
}
} else {
// JOptionPane.showMessageDialog(this,
// " , !!!");
}
}
//
public void manToMachine() {
if (x >= 29 && x <= 451 && y >= 29 && y <= 451) {
// System.out.println(" :"+x+"--"+y);
x = (x + 15) / 30 - 1; //
y = (y + 15) / 30 - 1;
if (allChess[x][y] == 0) {
//
if (isBlack == true) {
allChess[x][y] = 1;
this.repaint(); //
machineChess(gameDifficulty);
isBlack = true;
blackTime = 120;
message = " ";
whiteTime = 120;
boolean winFlag = this.checkWin(x, y);
this.repaint(); //
if (winFlag == true) {
JOptionPane.showMessageDialog(this, " ," + (allChess[x][y] == 1 ? " " : " ") + " !");
canPlay = false;
}
} else {
allChess[x][y] = 1;
// allChess[x][y] = 2;
this.repaint();
isBlack = false;
whiteTime = 120;
blackTime = 120;
boolean winFlag = this.checkWin(x, y);
this.repaint(); //
if (winFlag == true) {
JOptionPane.showMessageDialog(this, " ," + (allChess[x][y] == 1 ? " " : " ") + " !");
canPlay = false;
}
machineChess(gameDifficulty);
}
}
// 5
// boolean winFlag = this.checkWin(x, y);
// this.repaint(); //
//
// if (winFlag == true) {
// JOptionPane.showMessageDialog(this, " ," + (allChess[x][y] ==
// 1 ? " " : " ") + " !");
// canPlay = false;
// }
}
}
//
public void machineChess(int gameDifficulty) {
if (gameDifficulty == 0) {
int i, j;
boolean chessSucceed = true;//
while (chessSucceed) {
i = (int) (Math.random() * 15);
j = (int) (Math.random() * 15);
if (allChess[i][j] == 0) {
allChess[i][j] = 2;
chessSucceed = false;
}
}
} else if (gameDifficulty == 1) {
int max = 0;
int m = 0, n = 0;
int figureSort[] = new int[4];//
for (int i = 0; i < 15; i++) {
for (int j = 0; j < 15; j++) {
if (allChess[i][j] == 0) {
figureSort[0] = checkCountMachine(i, j, 0, 1, 1);
figureSort[1] = checkCountMachine(i, j, 1, 0, 1);
figureSort[2] = checkCountMachine(i, j, 1, -1, 1);
figureSort[3] = checkCountMachine(i, j, 1, 1, 1);
sortFourFigure(figureSort);
temporaryChess[i][j] = figureSort[0] * 12 + figureSort[1] * 25 + figureSort[2] * 50//
+ figureSort[3] * 100;
}
// System.out.print(temporaryChess[i][j] + " ");
}
// System.out.print("
");
}
// System.out.print("=============================
");
for (int i = 0; i < 15; i++) {
for (int j = 0; j < 15; j++) {
if (temporaryChess[i][j] > max && allChess[i][j] != 2 && allChess[i][j] != 1) {
m = i;
n = j;
max = temporaryChess[i][j];
}
}
}
allChess[m][n] = 2;
} else if (gameDifficulty == 2) {
} else {
}
this.repaint();
}
//
public void sortFourFigure(int n[]) {
Arrays.sort(n);//
}
}
3.마지막 으로 전체 게임 의 입구 주 함수 StartEntrance.java 설정
package StartGame;
import javax.swing.JFrame;
public class StartEntrance {
//public static boolean canPlay =false;
public static void main(String[] args) {
//
MyFrame myFrame = new MyFrame();
myFrame.setVisible(true); //
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //
}
}
상기 모든 코드 는 디 버 깅 을 통 과 했 고 인간 과 컴퓨터 의 알고리즘 은 비교적 간단 하 며 간단 한 수비 기능 을 실현 할 수 있다.자바 소스 코드:링크
포 장 된 jar 파일:링크
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.