JAVA 一题 急.

来源:百度知道 编辑:UC知道 时间:2024/05/09 17:08:32
这道题是游戏里面的,游戏里玩家点击NPC时出现的对话,所以要点到哪个,那个就说出第一句话,然后是第二句话,最后就一直循环最后一句话,现在把人物和对话换成是数字来表达,就是用10到50代表50句话,用0到9代表10个人,把那50句话分别给0到9这10个人,每个人5句话,是固定的,然后编写程序,要0到9中的随机一个人说话,假如10到14是0要说的,程序就依次输出10,11,12,13,14,最后就不断循环14,其他也一样,不过10到14就不能给1到9输出了

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class Game {
NPC[] npcs = new NPC[10];

Random ram = new Random();

// 存放50句话
List allWords = new ArrayList();

public void init() {
// 初始化50句话
for (int i = 1; i <= 50; i++) {
allWords.add(String.valueOf(i));
}
// 初始化10个NPC
for (int i = 0; i < 10; i++) {
System.out.print("init NPC" +i +":");
this.npcs[i] = new NPC(i);
for (int j = 0; j < 5; j++) {
// 给每个NPC随机分配5句话
String word = getRamWord();
System.out.print(word + " ");
this.npcs[i].addWords(word);
}
System.out.println();
}
}

private String getRamWord() {
//开始有50句,每次随机取。
int idx = ram.nextInt(allWords.size());
// 每取一句,减少一句,避免重复
return (String) allWords.remove(idx);
}