打砖块游戏:如何打砖块?

时间:2019-05-18 19:04:28

标签: java processing

我正在尝试使用Java进行破砖游戏,我在球和积木之间进行了重击,但是我不明白如何使砖碰到球时消失。我想我应该使用布尔值。 我还是个初学者,所以我不上课,等等。

我试图做一个无效的检查砖是否已被触摸,但仍然不能正常工作,我的问题是在无效的draw_Brick()函数中。

int movementX, movementY;
int x, y;
int w, z;
int b, v;
int n, m;
int g, h;

void setup() 
{
  size(600, 600);
  background(0);
  x = 200;
  y = 300; 
  movementX = -3;
  movementY = 6; 
  w = 280;
  z = 400;
}
void draw() 
{
  Clear();
  movement();
  pounding();
  dessiner();
  draw_Brick();
}
void Clear() 
{  
  background(0);
}
void dessiner() 
{
  smooth();
  fill(255);
  rect(w, z, 85, 25);
  fill(255, 0, 0);
  ellipse(x, y, 20, 20);
  fill(255);
  text("movementX: "+movementX, 480, 570);
  text("movementY: "+movementY, 480, 583);
}
void movement() 
{
  x = x + movementX;
  y = y + movementY;

  w = (mouseX);
}
void draw_Brick()
{
  for (int n = 0; n < 3; n = n + 1) {
    for (int m = 0; m < 3; m = m + 1) {
      int b=m*250;
      int v=n*70;
      int g=85;
      int h=25;
      fill(255, 0, 0);
      rect(b, v, g, h);
      println("y: "+y);
      println("m: "+m);

      if (y<v+25 && y>v && x<b+85 && x>b) {
        movementY = -movementY;
        //g=0;
        //h=0;
        fill(255, 255, 255);
        rect(b, v, g, h);
      }
    }
  }
}
void pounding() 
{
  // si on est trop à droite et que le déplacement horizontal est positif
  if (x > width-10 && movementX > 0) 
  {
    movementX = -movementX; // inverser la valeur
  }
  // si on est trop bas et le déplacement vertical est positif
  if (y > width-10 && movementY > 0) 
  { 
    movementY = -movementY; // rendre négative la valeur
  }
  // si on est trop haut et le déplacement vertical est negatif
  if (y < 10 && movementY < 10) 
  {
    movementY = abs(movementY); // rendre positive cette valeur
  }
  //pounding sur la console
  //if (y>z-15 && x<w+85 && x>w)
  //{
  //movementY = -movementY; // inverser la valeur
  //}
  if (y<z+25 && y>z && x<w+85 && x>w) {
    movementY = -movementY; // inverser la valeur
  }
  if (x < 10 && movementX < 10)
  {
    movementX = -movementX;
  }
}

2 个答案:

答案 0 :(得分:1)

因此,您的设置方式将非常困难。最好的选择是参加Brick课程。您要面对的挑战与砖块从屏幕上消失的关系不大,而与砖块消失后球反弹的位置有关。现在是如何设置的,看起来您只是在球到达屏幕上的某些区域时就将球反转了,这意味着它实际上并未与积木互动,因此,如果使积木消失(可以在上方绘制一个矩形球)仍然会从原来的位置反弹。您可以通过为屏幕上每个有砖块的区域设置一个布尔值来做一些事情,但是随后pounding()方法中的条件将开始失控,尤其是当您的游戏变大时(多排砖块,例如)。通过将这些东西作为对象(砖块,球和球拍),您可以管理它们之间的直接交互,因此,不仅检查球是否在砖块所在的某个位置,还可以检查是否球实际上击中了一块砖,然后将其取出。

答案 1 :(得分:0)

从本质上讲,您将必须使用设置方式来“撤消”砖块。最好创建砖对象,这样,当您知道已联系它们时,只需删除它们即可。