자바 GUI 오목 게임 실현

8638 단어 자바GUI오목
본 논문 의 실례 는 자바 가 오목 게임 GUI 를 실현 하 는 것 을 여러분 에 게 공유 하 였 으 며,구체 적 인 내용 은 다음 과 같 습 니 다.
인용 패키지

//{Cynthia Zhang}
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.LineBorder;
import javax.swing.JOptionPane;
import javax.swing.ImageIcon;
import java.awt.Image;
import com.sun.image.codec.jpeg.*;
사전 설정

//extends JApplet {

 // Indicate which player has a turn, initially it is the X player
 private char whoseTurn = 'X';
 final int SIZE = 15;
 static boolean ISOVER = false;

 // Create and initialize cells
 private final Cell[][] cell = new Cell[SIZE][SIZE];

 // Create and initialize a status label
 private final JLabel jlblStatus = new JLabel("X's turn to play",JLabel.CENTER);
배경 판 설정

// Initialize UI
 @Override
 public void init() {
 // Panel p to hold cells
 JPanel p = new JPanel();
 p.setLayout(new GridLayout(SIZE, SIZE, 0, 0));
 for (int i = 0; i < SIZE; i++) {
  for (int j = 0; j < SIZE; j++) {
  Cell ce = new Cell();
  ce.setBackground(new Color(150,88,42)); //      !
  p.add(cell[i][j] = ce);
  }
 }
 // Set line borders on the cells panel and the status label
 p.setBackground(new Color(143,105,94)); //      !
 jlblStatus.setBorder(new LineBorder(new Color(255,255,255), 2)); //      !
 
 // Place the panel and the label to the applet
 this.getContentPane().add(p, BorderLayout.CENTER);
 this.getContentPane().add(jlblStatus, BorderLayout.SOUTH);
 }
주요 프레임 단락

// This main method enables the applet to run as an application
public static void main(String[] args) {
 // Create a frame
 JFrame frame = new JFrame("Tic Tac Toe");

 // Create an instance of the applet
 Homework8 applet = new Homework8();

 // Add the applet instance to the frame
 frame.getContentPane().add(applet, BorderLayout.CENTER);

 // Invoke init() and start()
 applet.init();
 applet.start();

 // Display the frame
 frame.setSize(600, 600);
 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 frame.setVisible(true);
 }
꽉 찼 는 지 아 닌 지 를 판단 하 다

// Determine if the cells are all occupied
 public boolean isFull() {
 for (int i = 0; i < SIZE; i++) {
  for (int j = 0; j < SIZE; j++) {
  if (cell[i][j].getToken() == ' ') {
   return false;
  }
  }
 }
 return true;
 }
이 겼 는 지 안 이 겼 는 지 를 판단 하 다
8 황후 와 비슷 해서 그런 배열 이 네 가지 방향 을 최적화 하 는 것 을 고려 할 수 있 습 니 다.여 기 는 비교적 게 으 릅 니 다.

// Determine if the player with the specified token wins
 public boolean isWon(char token) {
 int winNum = 5; // define the max num for a rule
 for (int indexX = 0; indexX < SIZE; indexX++) {
  for (int indexY = 0; indexY < SIZE; indexY++){
  // in row check cell[indexX][indexY...indexY+winNum-1] 
  if (indexY+winNum-1<SIZE){
   boolean flag=true;
   for (int y =indexY;y<indexY+winNum;y++)
   if (cell[indexX][y].getToken() != token){
    flag=false; break;
   }
   if (flag==true) return true;
  }
  
  // in row check cell[indexX...indexX+winNum-1][indexY] 
  if (indexX+winNum-1<SIZE){
   boolean flag=true;
   for (int x =indexX;x<indexX+winNum;x++)
   if (cell[x][indexY].getToken() != token){
    flag=false; break;
   }
   if (flag==true) return true;
  }
  
  // check cell[indexX...indexX+winNum-1][indexY...indexY+winNum-1)
  if (indexX+winNum-1<SIZE && indexY+winNum-1<SIZE){
   boolean flag=true;
   for (int x =indexX,y=indexY;x<indexX+winNum;x++,y++)
   if (cell[x][y].getToken() != token){
    flag=false; break;
   }
   if (flag==true) return true;
  }
  
  // check cell[indexX...indexX+winNum-1][indexY...indexY+winNum-1)
  if (indexX+winNum-1<SIZE && indexY-winNum+1>=0){
   boolean flag=true;
   for (int x =indexX,y=indexY;x<indexX+winNum;x++,y--)
   if (cell[x][y].getToken() != token){
    flag=false; break;
   }
   if (flag==true) return true;
  }
  }
 }
 return false;
 }
바둑 알 을 두다

// An inner class for a cell
 public class Cell extends JPanel implements MouseListener {

 // Token used for this cell
 private char token = ' ';

 public Cell() {
  setBorder(new LineBorder(Color.black, 1)); // Set cell's border
  addMouseListener(this); // Register listener
 }

 // The getter method for token
 public char getToken() {
  return token;
 }

 // The setter method for token
 public void setToken(char c) {
  token = c;
  repaint();
 }
그림 가 져 오기

// Paint the cell
 @Override
 public void paintComponent(Graphics g) {
  if (token == 'X') {
  ImageIcon icon = new ImageIcon("C:\\Users\\Lenovo\\Desktop\\Black.png");
  Image image = icon.getImage();
  g.drawImage(image,0,0,35,35,this); 
  }else if (token=='O'){
  ImageIcon icon = new ImageIcon("C:\\Users\\Lenovo\\Desktop\\White.png");
  Image image = icon.getImage();
  g.drawImage(image,0,0,35,35,this);  
  }
  super.paintComponents(g);
 }
게임 종료 잠 금 및 팝 업 창

// Handle mouse click on a cell
 @Override
 public void mouseClicked(MouseEvent e) {
  if (ISOVER) return; // if game is over, any issue should be forbidden
  int response=-1;
  if (token == ' ') // If cell is not occupied
  {
  if (whoseTurn == 'X') // If it is the X player's turn
  {
   setToken('X'); // Set token in the cell
   whoseTurn = 'O'; // Change the turn
   jlblStatus.setText("The White's Turn"); // Display status
   if (isWon('X')) {
   jlblStatus.setText("The Black Won! The Game Is Over!");
   response = JOptionPane.showConfirmDialog(null, "The Black Won! The Game Is Over!
" +"Do you want to quit?"," ",JOptionPane.YES_NO_OPTION); ISOVER = true; if (response == 0) System.exit(0); // choose "Yes" than quit; } } else if (whoseTurn == 'O') // If it is the O player's turn { setToken('O'); // Set token in the cell whoseTurn = 'X'; // Change the turn jlblStatus.setText("The Black's Turn"); // Display status if (isWon('O')) { jlblStatus.setText("The White Won! The Game Is Over!"); response = JOptionPane.showConfirmDialog(null, "The White Won! The Game Is Over!
" +"Do you want to quit?"," ",JOptionPane.YES_NO_OPTION); ISOVER = true; if (response == 0) System.exit(0); // choose "Yes" than quit; } } if (isFull()) { jlblStatus.setText("Plain Game! The Game Is Over!"); response = JOptionPane.showConfirmDialog(null, "Plain Game! The Game Is Over!
" +"Do you want to quit?"," ",JOptionPane.YES_NO_OPTION); ISOVER = true; if (response == 0) System.exit(0); // choose "Yes" than quit; } } }
기타 바둑 알 정보

@Override
 public void mousePressed(MouseEvent e) {
  // TODO: implement this java.awt.event.MouseListener method;
 }

 @Override
 public void mouseReleased(MouseEvent e) {
  // TODO: implement this java.awt.event.MouseListener method;
 }

 @Override
 public void mouseEntered(MouseEvent e) {
  // TODO: implement this java.awt.event.MouseListener method;
 }

 @Override
 public void mouseExited(MouseEvent e) {
  // TODO: implement this java.awt.event.MouseListener method;
 }
 }
}
그림 표시

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기