假设一个球落在屏幕上并且一旦它撞到边界就会重置:
float BallY = 50; // y value of the ball
float BallX = 260; // x value of the ball
void setup()
{
size(512, 348); //width and height of screen
}
void draw()
{
background(255);
fill(0);
ellipse(BallX, BallY, 15, 15); //ball that will fall
BallY++; //ball's y value increases each frame
if (BallY > height) //if ball's y value is greater than the screen
{
BallY = 0; //reset the y value of the ball back to 0
}
}
如何使我的“if语句”成为“for循环”,例如在屏幕左上方创建一个正方形,并在每次球到达屏幕末尾时在其旁边创建另一个正方形?
因为我的逻辑是这样的:
for(float rectangleX=0; (rectangleX+20) <= width; rectangleX+=40){
for(float Bally=0; Bally<height; Bally++){
rect(rectangleX, 20, 20, 20);
但是我知道一旦程序运行就会创建一行矩形而不是一个接一个,因为球从屏幕上掉出来......我不确定如何把它放在一起。那么解决这个问题的最佳方法是什么?
答案 0 :(得分:1)
你遗失的一件事是记住球击中墙壁的次数。
然后,通过从0到for
的简单counter - 1
循环,您可以绘制矩形。
你需要一个小公式来计算他们的左x坐标,但这不应该太难。
答案 1 :(得分:1)
如上所述,你需要一个柜台。这是一个可能的解决方案:
float BallY = 50; // y value of the ball
float BallX = 260; // x value of the ball
int counter;
void setup()
{
size(512, 348); //width and height of screen
counter = 0;
}
void draw()
{
background(255);
fill(0);
ellipse(BallX, BallY, 15, 15); //ball that will fall
BallY++; //ball's y value increases each frame
if (BallY > height) //if ball's y value is greater than the screen
{
BallY = 0; //reset the y value of the ball back to 0
counter++;
}
for (int i = 0; i < counter; i++) {
rect(i * 20, 0, 20, 20);
}
}
希望这会有所帮助。和平。
编辑: 如果要更改rect的起始x和y位置,可以在for循环中执行:
rect(100 + i * 20, 100, 20, 20);