Java 在循环中连续添加和删除形状?
我试图编写一个程序,显示10个随机着色和随机定位的框,但根据分配,“屏幕上只显示最后10个随机框。也就是说,当绘制第11个框时,删除绘制的第一个框。当绘制第12个框时,删除第2个框,依此类推” 我不知道该怎么做,因为我能得到的最远结果是使用for循环来显示10个随机框 这就是我到目前为止所做的:Java 在循环中连续添加和删除形状?,java,loops,for-loop,Java,Loops,For Loop,我试图编写一个程序,显示10个随机着色和随机定位的框,但根据分配,“屏幕上只显示最后10个随机框。也就是说,当绘制第11个框时,删除绘制的第一个框。当绘制第12个框时,删除第2个框,依此类推” 我不知道该怎么做,因为我能得到的最远结果是使用for循环来显示10个随机框 这就是我到目前为止所做的: package acm.graphics; import acm.graphics.*; import acm.program.*; import java.awt.*; import java.ut
package acm.graphics;
import acm.graphics.*;
import acm.program.*;
import java.awt.*;
import java.util.Random;
import javax.swing.*;
public class ShootingStar extends GraphicsProgram
{
public void run()
{
final int width = 800;
final int height = 600;
final int boxWidth = 50;
final int maxBoxes = 10;
this.setSize(width, height);
Random random = new Random();
for( int i = 0; i<=maxBoxes ;i++) {
float r = random.nextFloat();
float b = random.nextFloat();
float g = random.nextFloat();
Color randColor = new Color(r,g,b);
GRect r1 = new GRect(boxWidth, boxWidth);
r1.setFilled(true);
r1.setColor(randColor);
GPoint x = new GPoint(random.nextInt(width),
random.nextInt(height));
add(r1, x);
}
this.pause(100);
}
}
封装acm.graphics;
导入acm图形。*;
导入acm.程序。*;
导入java.awt.*;
导入java.util.Random;
导入javax.swing.*;
公共类ShootingStar扩展图形程序
{
公开募捐
{
最终整数宽度=800;
最终内部高度=600;
最终整型箱宽=50;
最终整型MaxBox=10;
此.setSize(宽度、高度);
随机=新随机();
对于(int i=0;i您只迭代了十次,这只会生成十个框,对吗?让我们从这里开始。maxbox应该大于10(我不知道您试图做什么的细节,所以我不能说maxbox应该是什么)
基本上,您希望将这些框的信息存储在某个位置,然后将最后十项取出。您可以使用一个数组来完成此操作。如果您要推到主数组的末尾,则只需弹出最后十项,然后绘制框。一种方法是:
public class Test {
private int boxWidth, boxHeight = 50;
private GRect[] rects;
private int first;//keep track of oldest rectangle
public Test()
{
this.rects = new GRect[10];
this.first = 0;
}
void drawRects()
{
//for each rectangle, draw it
}
void addRect()
{
this.rects[first] = new GRect(boxWidth, boxHeight);
first++;
first = first % 10; //keeps it within 0-9 range
}
}
只需调用addRect()每当需要添加新矩形时,新矩形将替换最旧的矩形。您应该真正提到当前代码的问题所在。实现所需的矩形缺少什么?当前它仅显示10个随机框,但不会继续添加和删除框。请在纸上思考此问题。伪代码是什么需要吗?