2017-07-12 40 views
2

我有一個問題,我需要讓我從外部文件「不」相互重疊的話。我有超過50個單詞,它們在運行時具有隨機文本大小和位置,但它們重疊。如何確保字符串不會在java處理中彼此重疊?

如何讓他們「不」相互重疊?結果可能看起來像一個詞雲。

,如果你認爲我的代碼,將有助於他們在這裏

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

@KenWhite謝謝!我不知道如何編輯一篇文章,因爲我是stockoverflow中的新成員......儘管謝謝你:)我現在將編輯它並刪除我不需要的評論 –

+0

你會發現一個[edit]鏈接權利在問題左下角的標籤下方。 :-) –

+0

@KenWhite哦,我的!找到了!非常感謝! –

回答

0

堆棧溢出是不是真的適用於一般的「我怎麼做這個」式的問題。如果你發佈了更具體的「我試過X,預期Y,但是改爲Z」類型的問題,你會有更好的運氣。但我會盡力在一般意義上提供幫助:

您需要break your problem down into smaller pieces,然後逐個處理這些作品。

例如,您可以隔離您的問題,以確保矩形不會重疊,從而可以進一步細分。有很多方法可以做到這一點:

您可以使用網格佈局您的矩形。找出一行文字佔用了多少個正方形,然後在網格中找到該單詞適合的位置。例如,您可以使用類似布爾值的二維數組。

或者您可以生成一個隨機的位置,然後檢查是否有一個矩形。如果是這樣,請選擇一個新的隨機位置,直到找到一個清晰的位置。

在任何情況下,您可能需要使用collision detection(矩形或矩形矩形)來確定矩形是否重疊。

從小開始。創建一個僅在屏幕上顯示兩個矩形的小示例程序。首先對它們的位置進行硬編碼,但是如果它們碰撞,則使它們變紅。從那裏開始工作。使它成爲可以使用鼠標添加矩形,但只有在沒有重疊的情況下才允許用戶添加矩形。然後添加隨機位置選擇。如果您遇到特定的問題,請發帖MCVE,我們會從那裏開始。祝你好運。

+0

謝謝你的凱文... –