如何使数组中的每个单词在处理中彼此分开移动?

时间:2017-07-15 01:28:39

标签: java arrays string processing

我知道这是一个逻辑错误,但我有这个程序,我想要显示50个随机单词,50个应该每个展开并将随机移动,但相反,我每次都会得到50个随机单词框架和所有这些都相互重叠然后去了随机的地方..我的代码中我做错了什么?

这是我的表现:

 String [] allWords;
 int index = 0 ;
 float x;
 float y; 


void setup () {

size (500,500);
background (255); //background : white

String [] lines = loadStrings ("alice_just_text.txt"); //imports the 
external file
String text = join(lines, " "); //make into one long string
allWords = splitTokens (text, ",.?!:-;:()03 "); //splits it by word

x = 100; //where they start 
y = 150; 

}


void draw() {

background (255);

for (int i = 0; i < 50; i++) {  //produces 50 words

  x = x + random (-3,3); //makes the words move or shake
  y = y + random (-3,3); //makes the words move or shake

  int index = int(random(allWords.length));  //random selector of words

  textSize (random(10,80)); //random font sizes
  fill (0); //font color: black
  textAlign (CENTER,CENTER);
  text (allWords[index], x, y, width/2, height/2); 
  println(allWords[index]); 
  index++ ;


 }

}

1 个答案:

答案 0 :(得分:0)

你有几个问题。

首先,您只有一个xy变量。您需要跟踪每个字xy变量。你可以使用数组,或者更好,你可以create a class封装一个位置和一个单词。 (无耻的自我推销:我写了这个教程,但我强烈建议阅读它,因为它包含几乎可以做你想做的所有事情的例子。)

其次,您需要准确了解您在for函数的draw()循环中正在做什么。特别是这一行:

int index = int(random(allWords.length));  //random selector of words

这是选择一个随机索引,但你在for函数内的draw()循环中进行,所以这发生了50次,每秒60次。这可能不是你想要做的。

相反,您可能只想在setup()函数中生成一次的随机词。您可以通过创建您创建的类的实例并将它们存储在数组或ArrayList中来完成此操作。