2012-03-29 1 views
0

私のためにボックスを作成するCLickableBoxクラスがあります。クリックすると、XまたはOのいずれかが表示されるようにする必要があります。ここにClickableBoxクラスがあります。MouseAdapterを使ったJavaのTic Tac Toeゲーム

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を拡張する必要があります。クリックされたかどうかを知っていて、そうであれば、xまたはoを表示するかどうかは、それぞれのBoxオブジェクトが自分自身で処理するように設計する必要があります。

TicTacToeBoxクラスは私が問題を抱えています。これが私のゲームボードに必要なものです。簡単にこれを実装する方法に関する提案はありますか?以下はこれまでのTicTacToeBoxです(それほど多くはありません):

いくつかの方向性および/または支援をいただければ幸いです!ありがとう。そのターン、それがあるのを追跡するためにいくつかのグローバルcurrentTurn変数で

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

、およびvalueフィールドは、どのような現在の値を表すためにこのような何かを -

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); 

    } 
} 
+0

どのような部分が問題を引き起こしていますか? – kevingreen

+0

TicTacToeBoxに実装する方法がわかりません。ボックスがクリックされたときの機能は、XまたはOに変わります。 – MontyTheMack

答えて

1

はおそらく、あなたはmouseReleased()をオーバーライドする必要がありますこの箱はあります。あなたはおそらくdraw()をオーバーライドして、 "X"または "O"をレンダリングすることもできます...