要求你写一个Java的程序,这个程序的名字叫做“Find Your Words.”

Object Oriented Programming
要求你写一个Java的程序,这个程序的名字叫做“Find Your Words.”下面是游戏的一些特点和在Java程序里面需要应用到的东西。
1) 这个游戏是由2个玩家玩的。
2) 每个玩家在10个单词中轮流的形成有用的词。
这10个单词对于每一个选手是随机挑选的,并且是分配给每一个的玩家。从这10个单词里面,这个电脑的程序必须确定下来里面至少2个是元音(元音字母有:A、E、I、O、U)。一个单词也可以出现2次以上。
3) 对于每一个单词的形成,这个电脑的程序必须;
【1】 检查每个单词都是有效的。
【2】 检查这些所形成的单词们仅仅是玩家所分配到设计的。
【3】 如果这个单词所形成是无效的,那么请展示出单词无效的原因。
【4】 如果这个单词是无效的,这个玩家将会被允许对它进行修改 直到它正确的时候。
4) 检查那个词是否有效,这个电脑的程序必须读和储存处一列的有效的词从一个文本文件。这个Java的编码去读词从一个文本文件深入到数列,这个数列是我们已经给了你的 在那个dictionary.jar 里面。这个电脑 程序将会用它去比较从各个玩家手中所组成的词语。
5) 当一个有效的词所形成之后,这个电脑单词就会计算这个词的笔画,每个词在这个游戏里面是被赋予一个特定的值,就像那个拼字游戏一样 这个笔画对于这个单词仅仅只是计算每一个单词的笔画的总和,这个每一个单词是从命令里面来的。
【1】 这个电脑程序将会展示出从每一个玩家中有效单词笔画。
【2】 同时,这个电脑程序将会展示出从每一个玩家中有效单词笔画总和。
6) 每个玩家也要轮流去组织一个有效的单词直到一个玩家通过他的那个部分。如果一个玩家过了他的那个部分,就到了另外一个玩家的部分了。
【1】 如果一个玩家过关了,他/她就会得到0在那一轮。
7) 这个电脑的程序将会计算每一个玩家的词的笔画直到这个程序停止,对于怎么判断这个程序停止,就是需要每个玩家决定的了 ,他/她说出是否quit,即停止。
8) 当这个程序停止的时候,它将会展现出每个玩家的分数以及宣布哪一个玩家赢了。

下面是电脑程序将会展示出这个程序时怎么运行的,请仔细的观看:
FindYourWords
Letters of player 1 : a c f h i n p r s w
Enter your word (or ‘@’ to pass or ‘!’ to quit) : saw
Total score for word : 6
Total score for game : 6

Letters of player 2 : b c e g n n o t x z
Enter your word (or ‘@’ to pass or ‘!’ to quit): bench
Error : A valid word is formed but one or more letter(s) used are not yours
Enter your word (or ‘@’ to pass or ‘!’ to quit): benc
Error : An invalid word is formed
Enter your word (or ‘@’ to pass or ‘!’ to quit): bet
Total score for word : 5
Total score for game : 5

Letters of player 1 : c e f g h i n p r t
Enter your word (or ‘@’ to pass or ‘!’ to quit): @
Total score for word : 0
Total score for game : 6

Letters of player 2 : a c i g n n o v x z
Enter your word (or ‘@’ to pass or ‘!’ to quit): gain
Total score for word : 5
Total score for game : 10

Letters of player 1 : c e f g h i n p r t
Enter your word (or ‘@’ to pass or ‘!’ to quit): !

Total score for player 1: 6
Total score for player 2: 10
Player 2 won!
最新回答
独白

2024-11-04 14:46:49

package src;

import java.util.Arrays;
import java.util.Scanner;

public class Assigment {

public static String dict[] = FileUtil.readDictFromFile("words.txt");

public static int totalScoreForPlayer1 = 0;
public static int totalScoreForPlayer2 = 0;

public static void main(String[] args) {

Scanner scan = new Scanner(System.in);
String str = null;
int index = 1;
boolean exitFlg = false;
do {

char[] arr = getWords();
System.out.print("Letters of player " + index + ": \n");
diplayOfWords(arr);

boolean flag = false;

do {
System.out.print("Enter your word (or ‘@’ to pass or ‘!’ to quit) : ");
str = scan.next();

if (str.equals("@")) {
break;
} else if (str.equals("!")) {
exitFlg = true;
break;
}

flag = isWithinWords(arr, str);
if (!flag) {
System.out.println("Error : A valid word is formed but one or more letter(s) used are not yours");
continue;
}

flag = isValid(str);

if (!flag) {
System.out.println("Error : An invalid word is formed");
continue;
}

if (flag) {
System.out.println("Total score for word :" + getScoreForWord(str, index));

if (index == 1) {
System.out.println("Total score for game :" + totalScoreForPlayer1);
System.out.println("");
} else if (index == 2) {
System.out.println("Total score for game :" + totalScoreForPlayer2);
System.out.println("");
}

}

} while (!flag && !exitFlg);

if (index == 1) {
index++;
} else if (index == 2) {
index--;
}

} while (!exitFlg);

System.out.println("Total score for player 1:" + totalScoreForPlayer1);
System.out.println("Total score for player 2:" + totalScoreForPlayer2);
if (totalScoreForPlayer1 > totalScoreForPlayer2) {
System.out.println("Player 1 won!");
} else if (totalScoreForPlayer1 < totalScoreForPlayer2){
System.out.println("Player 2 won!");
} else {
System.out.println("TotalScore is same!");
}

}

public static char[] getWords() {
int random = 0;
char[] array = new char[10];

for (int i = 0; i < 8; i++) {
random = (int) (Math.random() * 26 + 97);
char c = (char) random;

array[i] = c;
}

array[8] = getYuanyin();
array[9] = getYuanyin();

Arrays.sort(array);
return array;
}

public static boolean isYuanyin(char c) {

if (c == 97
|| c == 101
|| c == 105
|| c == 111
|| c == 117) {
return true;
}

return false;
}

public static char getYuanyin() {
int random = (int) (Math.random() * 5);
if (random == 0) {
return 'a';
} else if (random == 1) {
return 'e';
} else if (random == 2) {
return 'i';
} else if (random == 3) {
return 'o';
} else {
return 'u';
}
}

public static void diplayOfWords(char[] c) {
for (int i = 0; i < c.length; i++) {
System.out.print(c[i] + " ");
}
}

public static boolean isValid(String str) {
boolean flag = false;

for (int i = 0; i < dict.length; i++) {
if ((str.toUpperCase()).equals(dict[i])) {
flag = true;
}
}

return flag;
}

public static boolean isWithinWords(char[] arr, String str) {
boolean flag = true;

char[] arrStr = str.toCharArray();

for (int i = 0; i < arrStr.length; i++) {
flag = false;
for (int j = 0; j < arr.length; j++) {
if (arrStr[i] == arr[j]) {
flag = true;
break;
}
}

if (flag == false) {
break;
}
}

return flag;
}

public static int getScoreForWord(String str, int index) {

int score = 0;

char[] arrC = str.toCharArray();
for (int i = 0; i < arrC.length; i++) {
switch (arrC[i]) {
case 'a':
case 'e':
case 'i':
case 'o':
case 'n':
case 'r':
case 't':
case 'l':
case 's':
case 'u':
score = score + 1;
break;
case 'd':
case 'G':
score = score + 2;
break;
case 'b':
case 'c':
case 'm':
case 'p':
score = score + 3;
break;
case 'f':
case 'h':
case 'v':
case 'w':
case 'y':
score = score + 4;
break;
case 'k':
score = score + 5;
break;
case 'j':
case 'x':
score = score + 8;
break;
case 'q':
case 'z':
score = score + 10;
break;
default:
break;
}
}

if (index == 1) {
totalScoreForPlayer1 = totalScoreForPlayer1 + score;
} else if (index == 2) {
totalScoreForPlayer2 = totalScoreForPlayer2 + score;
}

return score;
}
}