如何使用java图形上的布尔值使砖块消失?
我正在学校用Java制作Atari Arkanoid的演示版。我如何使用布尔值使砖块在被击中后消失?它必须先碰撞,然后消失,而不是重新出现如何使用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
//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