자바 오목 게임 의 전체 코드 구현
머리말
요 이틀 동안 여가 시간 에 오목 종목 을 만들어 서 여러분 께 보 여 드 렸 습 니 다.화면 은 이 렇 습 니 다.
화면 이 매우 못 생 겼 다 는 것 을 알 고 있 습 니 다.저 는 몇 년 동안 PS 기반 을 가지 고 있 지만 지식 이 얕 고 심미관 이 만 족 스 럽 지 못 합 니 다.이렇게 하 는 것 은 정말 한계 입 니 다.(사실은 제 가 하기 가 귀 찮 습 니 다)여러분 은 그냥 보 세 요.
아래 에 코드 를 놓 아서 여러분 의 참 고 를 편리 하 게 하기 위해 서 저 는 거의 모든 코드 에 주석 을 표시 합 니 다.
테스트 클래스 코드
public class Test {
public static void main(String[] args) {
MyJFrame mj=new MyJFrame();
mj.myJFrame();
}
}
MyJFrame 클래스 코드
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class MyJFrame extends JFrame implements MouseListener {
int qx = 20, qy = 40, qw = 490, qh = 490;// 、
int bw = 150, bh = 50, bx = 570, by = 150;// 、
int x = 0, y = 0;//
int[][] SaveGame = new int[15][15];//
int qc = 1;// =2, =1
int qn = 0;//
boolean canplay = true;//
String go = " ";//
//---------------------------------------------------------------------------------------------------------------------
//
public void myJFrame() {
this.setTitle(" "); //
this.setSize(800, 550); //
this.setResizable(false); // =
this.setDefaultCloseOperation(MyJFrame.EXIT_ON_CLOSE);//
int width = Toolkit.getDefaultToolkit().getScreenSize().width;//
int height = Toolkit.getDefaultToolkit().getScreenSize().height;//
// System.out.println(" :"+width);//
// System.out.println(" :"+height);//
this.setLocation((width - 800) / 2, (height - 600) / 2); //
this.addMouseListener(this);
this.setVisible(true); // =
}
//---------------------------------------------------------------------------------------------------------------------
// paint ,
public void paint(Graphics g) {
//
BufferedImage bi = new BufferedImage(800, 550, BufferedImage.TYPE_INT_ARGB);
Graphics g2 = bi.createGraphics();
//
BufferedImage image = null;
try {
image = ImageIO.read(new File("D:/#Java/ /tp/wzqbj.jpg"));
} catch (IOException e) {
e.printStackTrace();
}
g2.drawImage(image, 10, 10, this);//
g2.setColor(Color.BLACK);//
g2.setFont(new Font(" ", 10, 50));//
g2.drawString(" ", 525, 100);//
//
g2.setColor(Color.getHSBColor(30, (float) 0.10, (float) 0.90));//
g2.fillRect(qx, qy, qw, qh);//
//
g2.setColor(Color.WHITE);//
g2.fillRect(bx, by, bw, bh);//
g2.setFont(new Font(" ", 10, 30));//
g2.setColor(Color.black);//
g2.drawString(" ", 615, 185);//
//
g2.setColor(Color.LIGHT_GRAY);//
g2.fillRect(bx, by + 60, bw, bh);//
g2.setFont(new Font(" ", 10, 30));//
g2.setColor(Color.WHITE);//
g2.drawString(" ", 615, 245);//
//
g2.setColor(Color.GRAY);//
g2.fillRect(bx, by + 120, bw, bh);//
g2.setFont(new Font(" ", 10, 30));//
g2.setColor(Color.WHITE);//
g2.drawString(" ", 615, 305);//
//
g2.setColor(Color.getHSBColor(30, (float) 0.10, (float) 0.90));//
g2.fillRect(550, 350, 200, 150);//
g2.setColor(Color.black);//
g2.setFont(new Font(" ", 10, 20));//
g2.drawString(" ", 610, 380);//
g2.drawString(go, 610, 410);//
g2.drawString(" : ", 560, 440);//
g2.drawString(" :", 560, 465);//
g2.drawString("qq 717535996", 560, 490);//
g2.setColor(Color.BLACK);//
//
for (int x = 0; x <= qw; x += 35) {
g2.drawLine(qx, x + qy, qw + qx, x + qy);//
g2.drawLine(x + qx, qy, x + qx, qh + qy);//
}
//
for (int i = 3; i <= 11; i += 4) {
for (int y = 3; y <= 11; y += 4) {
g2.fillOval(35 * i + qx - 3, 35 * y + qy - 3, 6, 6);//
}
}
//
for (int i = 0; i < 15; i++) {
for (int j = 0; j < 15; j++) {
if (SaveGame[i][j] == 1)//
{
int sx = i * 35 + qx;
int sy = j * 35 + qy;
g2.setColor(Color.BLACK);
g2.fillOval(sx - 13, sy - 13, 26, 26);//
}
if (SaveGame[i][j] == 2)//
{
int sx = i * 35 + qx;
int sy = j * 35 + qy;
g2.setColor(Color.WHITE);
g2.fillOval(sx - 13, sy - 13, 26, 26);//
g2.setColor(Color.BLACK);
g2.drawOval(sx - 13, sy - 13, 26, 26);//
}
}
}
g.drawImage(bi, 0, 0, this);
// g.drawRect(20, 20, 20, 20);//
}
//---------------------------------------------------------------------------------------------------------------------
//
private boolean WinLose() {
boolean flag = false;//
int count = 1;//
int color = SaveGame[x][y];//
//
int i = 1;//
while (color == SaveGame[x + i][y]) {
count++;
i++;
}
i = 1;//
while (color == SaveGame[x - i][y]) {
count++;
i++;
}
if (count >= 5) {
flag = true;
}
//
count = 1;
i = 1;//
while (color == SaveGame[x][y + i]) {
count++;
i++;
}
i = 1;//
while (color == SaveGame[x][y - i]) {
count++;
i++;
}
if (count >= 5) {
flag = true;
}
// ( )
count = 1;
i = 1;//
while (color == SaveGame[x - i][y - i]) {
count++;
i++;
}
i = 1;//
while (color == SaveGame[x + i][y + i]) {
count++;
i++;
}
if (count >= 5) {
flag = true;
}
// ( )
count = 1;
i = 1;//
while (color == SaveGame[x + i][y - i]) {
count++;
i++;
}
i = 1;//
while (color == SaveGame[x - i][y + i]) {
count++;
i++;
}
if (count >= 5) {
flag = true;
}
return flag;
}
//---------------------------------------------------------------------------------------------------------------------
//
public void Initialize() {
//
for (int i = 0; i < 15; i++) {
for (int j = 0; j < 15; j++) {
SaveGame[i][j] = 0;
}
}
//
qc = 1;
go = " ";
}
//---------------------------------------------------------------------------------------------------------------------
@Override//
public void mouseClicked(MouseEvent e) {
}
@Override//
public void mousePressed(MouseEvent e) {
//
x = e.getX();
y = e.getY();
//
if (canplay == true) {
//
if (x > qx && x < qx + qw && y > qy && y < qy + qh) {
//
if ((x - qx) % 35 > 17) {
x = (x - qx) / 35 + 1;
} else {
x = (x - qx) / 35;
}
if ((y - qy) % 35 > 17) {
y = (y - qy) / 35 + 1;
} else {
y = (y - qy) / 35;
}
//
if (SaveGame[x][y] == 0) {
SaveGame[x][y] = qc;
qn = 0;
} else {
qn = 1;
}
//
if (qn == 0) {
if (qc == 1) {
qc = 2;
go = " ";
} else {
qc = 1;
go = " ";
}
}
this.repaint();// paint
//
boolean wl = this.WinLose();
if (wl) {
JOptionPane.showMessageDialog(this, " ," + (SaveGame[x][y] == 1 ? " " : " "));//
canplay = false;
}
// System.out.println(1);//
} else {
// System.out.println(0);//
}
}
//
//
if (e.getX() > bx && e.getX() < bx + bw && e.getY() > by && e.getY() < by + bh) {
//
if (canplay == false) {
// ,
canplay = true;
JOptionPane.showMessageDialog(this, " ");
//
Initialize();
this.repaint();// paint
} else {
// ,
JOptionPane.showMessageDialog(this, " ");
//
Initialize();
this.repaint();// paint
}
}
//
//
if (e.getX() > bx && e.getX() < bx + bw && e.getY() > by + 60 && e.getY() < by + 60 + bh) {
//
if (canplay == true) {
//
int z = 0;
for (int i = 0; i < 15; i++) {
for (int j = 0; j < 15; j++) {
if (SaveGame[i][j] != 0) {
z++;
}
}
}
//
if (z != 0) {
JOptionPane.showMessageDialog(this, " , 。");
} else {
JOptionPane.showMessageDialog(this, " ");
}
} else {
JOptionPane.showMessageDialog(this, " ");
}
}
//
//
if (e.getX() > bx && e.getX() < bx + bw && e.getY() > by + 120 && e.getY() < by + 120 + bh) {
//
if (canplay == true) {
//
if (qc == 1) {
JOptionPane.showMessageDialog(this, " , ");
canplay = false;
} else if (qc == 2) {
JOptionPane.showMessageDialog(this, " , ");
canplay = false;
}
} else {
JOptionPane.showMessageDialog(this, " ");
}
}
}
@Override//
public void mouseReleased(MouseEvent e) {
}
@Override//
public void mouseEntered(MouseEvent e) {
}
@Override//
public void mouseExited(MouseEvent e) {
}
}
종결 어제 가 직접 테스트 한 것 이기 때문에 주요 기능 은 문제 가 없 을 것 입 니 다.세부 사항 을 무시 할 수 있 습 니 다.잘못된 부분 이 있 으 면 지적 해 주세요.
더 많은 재 미 있 는 클래식 게임 을 통 해 주 제 를 실현 하고 여러분 에 게 공유 합 니 다.
C++클래식 게임 모음
python 클래식 게임 모음
python 러시아 블록 게임 집합
JavaScript 클래식 게임 을 계속 합 니 다.
자바 클래식 게임 모음
javascript 고전 게임 모음
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.