打砖块游戏:如何打碎砖块?
Brick Breaking Game: How Do I Break The Bricks?
我正在尝试使用 java 做一个打砖块游戏,我在球和砖块之间进行了撞击,但我不明白如何让砖块在球接触到它们时消失。我想我应该使用布尔值。
我还是个初学者,所以我不使用class,等...
我尝试做一个 void 来检查砖块是否被触摸但仍然不起作用,我的问题出在 void 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;
}
}
你基本上必须 "undraw" 设置它的方式。最好创建砖块对象,这样当您知道它们已被联系时,您可以简单地删除它们。
因此,按照您的设置方式,这将非常困难。最好的选择是制作 Brick class。您将要面对的挑战与砖块从屏幕上消失的关系不大,而与砖块消失后球反弹的位置有关。它现在是如何设置的,看起来你只是在球到达屏幕上的某些区域时反转它,这意味着它实际上并没有与砖块相互作用,所以如果你让砖块消失(可以在上面画一个矩形它的顶部),球仍然会从原来的位置反弹。你可以为屏幕上每个有砖块的区域设置一个布尔值,但是你的 pounding() 方法中的条件将开始失控,尤其是当你的游戏变大时(多行砖块,例如)。通过将这些东西作为对象(砖块、球和桨),您可以管理它们之间的直接交互,因此您不仅可以检查球是否在砖块所在的特定位置,还可以检查小球居然撞到了砖头,然后把砖头移开。
我正在尝试使用 java 做一个打砖块游戏,我在球和砖块之间进行了撞击,但我不明白如何让砖块在球接触到它们时消失。我想我应该使用布尔值。 我还是个初学者,所以我不使用class,等...
我尝试做一个 void 来检查砖块是否被触摸但仍然不起作用,我的问题出在 void 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;
}
}
你基本上必须 "undraw" 设置它的方式。最好创建砖块对象,这样当您知道它们已被联系时,您可以简单地删除它们。
因此,按照您的设置方式,这将非常困难。最好的选择是制作 Brick class。您将要面对的挑战与砖块从屏幕上消失的关系不大,而与砖块消失后球反弹的位置有关。它现在是如何设置的,看起来你只是在球到达屏幕上的某些区域时反转它,这意味着它实际上并没有与砖块相互作用,所以如果你让砖块消失(可以在上面画一个矩形它的顶部),球仍然会从原来的位置反弹。你可以为屏幕上每个有砖块的区域设置一个布尔值,但是你的 pounding() 方法中的条件将开始失控,尤其是当你的游戏变大时(多行砖块,例如)。通过将这些东西作为对象(砖块、球和桨),您可以管理它们之间的直接交互,因此您不仅可以检查球是否在砖块所在的特定位置,还可以检查小球居然撞到了砖头,然后把砖头移开。