如何使用java图形上的布尔值使砖块消失?

如何使用java图形上的布尔值使砖块消失?,java,graphics,boolean,Java,Graphics,Boolean,我正在学校用Java制作Atari Arkanoid的演示版。我如何使用布尔值使砖块在被击中后消失?它必须先碰撞,然后消失,而不是重新出现 //brickbase import java.awt.*; public class Brickbase { private int myX; // x and y coordinates of center private int myY; private int myXWidth

我正在学校用Java制作Atari Arkanoid的演示版。我如何使用布尔值使砖块在被击中后消失?它必须先碰撞,然后消失,而不是重新出现

    //brickbase
    import java.awt.*;
    public class Brickbase
    {
       private int myX; // x and y coordinates of center
       private int myY;
       private int myXWidth;
       private int myYWidth;
       private Color myColor;

       public Brickbase(int x, int y, int xWidth, int yWidth, Color c)
       {
          myX = x;
          myY = y;
          myXWidth = xWidth;
          myYWidth = yWidth;
          myColor = c;  
       }
        // accessor methods
       public int getX()
       {
          return myX;
       }
       public int getY()
       {
          return myY;
       }
       public int getXWidth()
       {
          return myXWidth;
       }
       public int getYWidth()
       {
          return myYWidth;
       }
       public Color getColor() 
       { 
          return myColor;
       }
       // modifier methods
       public void setX(int x)
       {
          myX= x;
       }

       public void setXWidth(int xWidth)
       {
          myXWidth = xWidth;
       }

       public void setY(int y)
       { 
          myY=y;
       }

       public void setYWidth(int yWidth)
       {
          myYWidth =yWidth;
       }
       public void jump(int rightEdge, int bottomEdge)
       {
          myX= rightEdge;
          myY= bottomEdge;

       }

       public void setColor(java.awt.Color c)
       {
          myColor = c;
       }
        //   instance methods

       public void draw(Graphics myBuffer) 
       {
            myBuffer.setColor(getColor());
             myBuffer.fillRect(getX(), getY(), getXWidth(),                 getYWidth());

       }   

       public boolean inBrickbase(arkBall ark)
       {
          for(int x = getX(); x <= getX() + getXWidth(); x++)           //starts at upper left corner(x,y)
             for(int y = getY(); y <= getY() + getYWidth(); y++)
                if(distance(x, y, ark.getX(), ark.getY()) <= ark.getRadius() ) //checks every point on the bumper
                   return true;            
          return false;
       }  



       private double distance(double x1, double y1, double x2, double y2)
       {
          return Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2));
       }    
    }
//brickbase
导入java.awt.*;
公共级砖基
{
private int myX;//中心的x和y坐标
私家密室;
私有int myXWidth;
密威茨私人酒店;
私家色彩;
公共砖基(整数x、整数y、整数xWidth、整数yWidth、彩色c)
{
myX=x;
myY=y;
myXWidth=xWidth;
myYWidth=yWidth;
霉色=c;
}
//存取器方法
公共int getX()
{
返回myX;
}
公共int getY()
{
返回myY;
}
公共int getXWidth()
{
返回myXWidth;
}
public int getYWidth()
{
返回myYWidth;
}
公共颜色getColor()
{ 
返回颜色;
}
//修正方法
公共无效集合x(整数x)
{
myX=x;
}
公共void setXWidth(int xWidth)
{
myXWidth=xWidth;
}
公共空间设置(整数y)
{ 
myY=y;
}
公共无效设置宽度(整数宽度)
{
myYWidth=yWidth;
}
公共无效跳转(int-righedge,int-bottomEdge)
{
myX=右边缘;
myY=底边;
}
公共void setColor(java.awt.Color c)
{
霉色=c;
}
//实例方法
公共空白绘制(图形缓冲区)
{
setColor(getColor());
fillRect(getX(),getY(),getXWidth(),getYWidth());
}   
公共布尔inBrickbase(arkBall-ark)
{
对于(intx=getX();x所以,您需要(通常称为“标志”)

此“标志”的目的是管理一个状态,并提供一种可以检查该特定状态的方法

在这种情况下,我们希望在满足某些条件时使砖块不可见

因此,让我们首先将“flag”作为实例字段引入
Brickbase

public class Brickbase {

    private boolean visible = true;
亲爱的,我们知道我们有办法确定砖块是否可见,并可能改变这种状态

所以,很明显,我们可能要做的第一件事是根据“国旗”的状态来决定砖块是否应该上漆,可能类似于

public void draw(Graphics myBuffer) {
    if (visible) {
        myBuffer.setColor(getColor());
        myBuffer.fillRect(getX(), getY(), getXWidth(), getYWidth());
    }
}
public boolean inBrickbase(arkBall ark) {
    if (visible) {
        for (int x = getX(); x <= getX() + getXWidth(); x++) //starts at upper left corner(x,y)
        {
            for (int y = getY(); y <= getY() + getYWidth(); y++) {
                if (distance(x, y, ark.getX(), ark.getY()) <= ark.getRadius()) //checks every point on the bumper
                {
                    visible = false;
                    return true;
                }
            }
        }
    }
    return false;
}
接下来,我们想以某种方式改变我们的“旗帜”的状态,在你的情况下,当砖块被击中时,可能类似于

public void draw(Graphics myBuffer) {
    if (visible) {
        myBuffer.setColor(getColor());
        myBuffer.fillRect(getX(), getY(), getXWidth(), getYWidth());
    }
}
public boolean inBrickbase(arkBall ark) {
    if (visible) {
        for (int x = getX(); x <= getX() + getXWidth(); x++) //starts at upper left corner(x,y)
        {
            for (int y = getY(); y <= getY() + getYWidth(); y++) {
                if (distance(x, y, ark.getX(), ark.getY()) <= ark.getRadius()) //checks every point on the bumper
                {
                    visible = false;
                    return true;
                }
            }
        }
    }
    return false;
}
public boolean-inBrickbase(arkBall-ark){
如果(可见){
对于(int x=getX();x