如何确保字符串在java处理中不会相互重叠?

时间:2017-07-12 00:13:15

标签: string random processing overlap overlapping

我遇到了一个问题,我需要从外部文件中提取单词" 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++ ;
      }

   }

1 个答案:

答案 0 :(得分:0)

Stack Overflow并非真正针对一般&#34;我如何做到这一点&#34;输入问题。如果你发布一个更具体的&#34;我试过X,期望Y,但是得到Z而不是#34;你会有更好的运气。类型问题。但我会在一般意义上尝试提供帮助:

你需要break your problem down into smaller pieces,然后一次一个地接受这些作品。

例如,您可以将问题隔离到确保矩形不重叠,这样您就可以进一步分解。有很多方法可以做到这一点:

您可以使用网格来布置矩形。计算一行文本占用的平方数,然后在网格中找到该单词适合的位置。例如,您可以使用类似布尔值的2D数组。

或者你可以生成一个随机位置,然后检查那里是否已经是一个矩形。如果是这样,请选择一个新的随机位置,直到找到一个清晰的位置。

在任何情况下,您可能需要使用collision detection(点矩形或矩形矩形)来确定矩形是否重叠。

从小处开始。创建一个只显示屏幕上两个矩形的小示例程序。首先对它们的位置进行硬编码,但如果它们发生碰撞则会变成红色。从那里开始工作。使它可以使用鼠标添加矩形,但只有在没有重叠的情况下才允许用户添加它们。然后添加随机位置选择。如果您遇到特定步骤,请发布MCVE,我们就会从那里开始。祝你好运。