我遇到了一个问题,我需要从外部文件中提取单词" NOT"相互重叠。我有超过50个单词,当你运行它们时会有随机文本大小和位置,但它们重叠。
我怎样才能制作它们" NOT"相互重叠?结果可能看起来像一个文字云。
如果您认为我的代码在这里有帮助,那么
String [] words;
int index = 0;
void setup ()
{
size (500,500);
background (255);
String [] lines = loadStrings ("alice_just_text.txt");
String entireplay = join(lines, " "); //splits it by line
words = splitTokens (entireplay, ",.?!:-;:()03 "); //splits it by word
for (int i = 0; i < 50; i++) {
float x = random(width);
float y = random(height);
int index = int(random(words.length));
textSize (random(60)); //random font size
fill (0);
textAlign (CENTER);
text (words[index], x, y, width/2, height/2);
println(words[index]);
index++ ;
}
}
答案 0 :(得分:0)
Stack Overflow并非真正针对一般&#34;我如何做到这一点&#34;输入问题。如果你发布一个更具体的&#34;我试过X,期望Y,但是得到Z而不是#34;你会有更好的运气。类型问题。但我会在一般意义上尝试提供帮助:
你需要break your problem down into smaller pieces,然后一次一个地接受这些作品。
例如,您可以将问题隔离到确保矩形不重叠,这样您就可以进一步分解。有很多方法可以做到这一点:
您可以使用网格来布置矩形。计算一行文本占用的平方数,然后在网格中找到该单词适合的位置。例如,您可以使用类似布尔值的2D数组。
或者你可以生成一个随机位置,然后检查那里是否已经是一个矩形。如果是这样,请选择一个新的随机位置,直到找到一个清晰的位置。
在任何情况下,您可能需要使用collision detection(点矩形或矩形矩形)来确定矩形是否重叠。
从小处开始。创建一个只显示屏幕上两个矩形的小示例程序。首先对它们的位置进行硬编码,但如果它们发生碰撞则会变成红色。从那里开始工作。使它可以使用鼠标添加矩形,但只有在没有重叠的情况下才允许用户添加它们。然后添加随机位置选择。如果您遇到特定步骤,请发布MCVE,我们就会从那里开始。祝你好运。