簡體   English   中英

使用MouseAdapter在Java中的Tic Tac Toe游戲

[英]Tic Tac Toe game in Java using MouseAdapter

我有一個CLickableBox類,該類可以為我創建框,現在需要創建它,以便在單擊時可以在適當位置顯示X或O。 這是ClickableBox類。

 import java.awt.event.MouseAdapter;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.Container;


public class ClickableBox extends MouseAdapter {

  private int x, y, width, height;
  private Color borderColor, backColor, oldColor;
  private boolean drawBorder, clicked;
  private Container parent;

  public ClickableBox(int x, int y, int width, int height, Color borderColor, 
      Color backColor, boolean drawBorder, Container parent) {

    this.x = x;
    this.y = y;
    this.width = width;
    this.height = height;
    this.borderColor = borderColor;
    this.backColor = backColor;
    this.drawBorder = drawBorder;
    this.parent = parent;



  }

  public void draw(Graphics g) {

    oldColor = g.getColor();
    g.setColor(backColor);
    g.fillRect(x, y, width, height);
    if(drawBorder) {
        g.setColor(borderColor);
        g.drawRect(x, y, width, height);
    }
    g.setColor(oldColor);
  }

  public void mouseReleased(MouseEvent e) {
    if(x < e.getX() && e.getX() < x + width &&
         y < e.getY() && e.getY() < y + height) {
        clicked = true;
        parent.repaint();
    }
  }

  public boolean isClicked() {
    return clicked;
  }


  public int getX() {
    return x;
  }

  public void setX(int x) {
    this.x = x;
  }

  public int getY() {
    return y;
  }

  public void setY(int y) {
    this.y = y;
  }

  public int getWidth() {
    return width;
  }

  public void setWidth(int width) {
    this.width = width;
  }

  public int getHeight() {
    return height;
  }

  public void setHeight(int height) {
    this.height = height;
  }

  public Color getBorderColor() {
    return borderColor;
  }

  public void setBorderColor(Color borderColor) {
    this.borderColor = borderColor;
  }

  public Color getBackColor() {
    return backColor;
  }

  public void setBackColor(Color backColor) {
    this.backColor = backColor;
  }

  public Color getOldColor() {
    return oldColor;
  }

  public void setOldColor(Color oldColor) {
    this.oldColor = oldColor;
  }

  public boolean isDrawBorder() {
    return drawBorder;
  }

  public void setDrawBorder(boolean drawBorder) {
    this.drawBorder = drawBorder;
  }



  public void setClicked(boolean clicked) {
    this.clicked = clicked;
}
}

TicTacToeBox類應擴展ClickableBox,以便每個框都將成為一個偵聽器。 需要對其進行設計,以使每個Box對象都能夠自行處理-它知道是否單擊了它,如果知道,則是否將顯示x或o。

TicTacToeBox類是我遇到的麻煩。 這就是我需要的游戲板。 對此有什么建議嗎? 以下是到目前為止我的TicTacToeBox(不多):

一些方向和/或幫助將不勝感激! 謝謝。

import java.awt.Color;
import java.awt.Container;


public class TicTacToeBox extends ClickableBox {

  public TicTacToeBox(int x, int y, int width, int height, Color borderColor,
      Color backColor, boolean drawBorder, boolean mask, Container parent)
  {
    super(x, y, width, height, borderColor, backColor, drawBorder, parent);

  }
}

也許您需要重寫mouseReleased() -像這樣:

public void mouseReleased(MouseEvent e) {
  if ( this.value == NONE ) {
    if ( currentTurn == Turn.X ) {
      this.value = X;
    }
    else {
      this.value = O;
    }
  }
  super.mouseReleased();
}

使用一些全局currentTurn變量來跟蹤其轉彎,並使用一個value字段表示此框的當前值。 您可能還想覆蓋draw()以使其呈現“ X”或“ O” ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM