我用Java.But写了一个Hang Man游戏的代码,我写不出合适的代码,也找不到计算用户分数的方法,并在用户端打印出来,用0:stop.Here命令是分数计算规则;
分数的计算方法是单词的字母数减去当前显示的字母数。这里的“表”分数是5-4=1,因为当用户猜测时,已经显示了4个字母。
如果用户猜测不正确,分数为0如果在猜测之前完成了男子的图形,则分数为0
同一用户玩游戏的每一次都是一个会话,同一个词不能被计算机容纳。如果“表”是作为“事物”持有的,那么它就不能在同一会话中被计算机再次持有。
当用户在主菜单中按0时,会话结束。
播放次数、正确猜测次数和用户总分都会显示在屏幕上。
此外,我有一个问题,以防止随机选择的单词数组中的重复
import java.util.Random;
import java.util.Scanner;
public class CEVIK_CAGATAY{
public static char[] star;
public static void main (String args[])
{
char game[];
int category;
int correct=0;
Scanner input = new Scanner(System.in);
Random r = new Random();
int totalplay=0;
int totalscore=0;
String man[] = new String[7];
man[2] = " --\n o |\n/ |\n |\n_____\n";
man[3] = " --\n o |\n/| |\n |\n_____\n";
man[4] = " --\n o |\n/|\\|\n |\n_____\n";
man[5] = " --\n o |\n/|\\|\n/ |\n_____\n";
man[6] = " --\n o |\n/|\\|\n/ \\|\n_____\n";
String arr[]={"serhat","cagatay","begum","emre","berk","ali","veli","istanbul",
"ankara","mersin","izmir","antalya","new york","samsun","kedi","kopek",
"kus","ayi","bocek","karinca","manda","masa","pencil","bag","clock","televison","book","glass"};
int arr1 []={6,7 };
System.out.println("0 To Stop,1 to Continue");
category=input.nextInt();
while(category!=0){
System.out.println("0 To STop,1 to Continue");
String word = arr[r.nextInt(arr.length)];
for(int i=0; i<arr.length;i++) {
if(arr[i]==word){
int letterlength=arr1[i];
}
//letterlength-existedlength=guessremain;
}
int count = word.length();
char[] CharArr=word.toCharArray();
char[] star = word.toCharArray();
for(int i=0;i<star.length;i++)
{
star[i] = '*';
System.out.print(star[i]);
}
for (int i=1; i<=5; i++)
{
System.out.printf ("\nGuess a Letter:");
char letter= input.next().charAt(0);
for (int j=0;j<CharArr.length; j++)
{
if(letter == star[j])
{
System.out.println("this word already exist");
}
else
{
if(letter==CharArr[j])
{
star[j]=letter;
i--;
System.out.printf("CORRECT GUESS!\n");
correct++;
}
}
}
System.out.print(star);
switch(i+0)
{
case 1: System.err.printf("Strike 1\n");
System.out.println(man[2]);
break;
case 2: System.err.printf("Strike 2\n");
System.out.println(man[3]);
break;
case 3: System.err.printf("Strike 3\n");
System.out.println(man[4]);
break;
case 4: System.err.printf("Strike 4\n");
System.out.println(man[5]);
break;
case 5: System.err.printf("Strike5\n");
System.err.printf("You're out!!! The word is Not_Matched\n");
System.out.println(man[6]);
break;
}
System.out.printf("\n");
if((new String(word)).equals(new String(star)))
{
System.err.printf("Winner Winner\n");
break;
}
}
totalplay++;
totalscore+=correct;
System.out.println("CONTINUE 1,STOP 0");
category=input.nextInt();
if(category==0) {
System.out.println(totalplay);
System.out.println(totalscore);
}
}
}
}发布于 2016-01-11 06:16:42
去掉以下for循环。除了抛出数组索引越界错误外,它没有任何用途。您的程序在没有它的情况下运行。也要确保实践语言的最佳实践(例如用于命名变量的camelCase )。它使人们更容易理解您的代码。
for(int i=0; i<arr.length;i++) {
if(arr[i]==word){
int letterlength=arr1[i];
}
//letterlength-existedlength=guessremain;
}https://stackoverflow.com/questions/34711086
复制相似问题