我正在做一个刽子手项目,我需要一点帮助。 我想显示用户在bluej的终端窗口右侧输入的所有猜测。我想将它存储在一个数组中,并在每个clearScreen()方法后不断地在右侧显示它。这是我的代码。请试一试。
import java.io.*;
public class Hangman
{
String word,clue;
int option;
PrintWriter p = new PrintWriter(System.out,true);
private void clearScreen()
{
System.out.print('\u000C');
}
public void Hang1()
{
p.println(" _______ ");
p.println(" | |");
p.println(" |");
p.println(" |");
p.println(" |");
p.println(" |");
p.println(" |");
p.println("_____|_____ ");
}
public void Hang2()
{
p.println(" _______ ");
p.println(" | |");
p.println(" | ( )");
p.println(" | ");
p.println(" |");
p.println(" |");
p.println(" |");
p.println("_____|_____ ");
}
public void Hang3()
{
p.println(" _______ ");
p.println(" | |");
p.println(" | ( )");
p.println(" | |");
p.println(" | |");
p.println(" | |");
p.println(" |");
p.println("_____|_____ ");
}
public void Hang4()
{
p.println(" _______ ");
p.println(" | |");
p.println(" | ( )");
p.println(" | |");
p.println(" | |");
p.println(" | |");
p.println(" | /");
p.println("_____|_____ ");
}
public void Hang5()
{
p.println(" _______ ");
p.println(" | |");
p.println(" | ( )");
p.println(" | |");
p.println(" | |");
p.println(" | |");
p.println(" | / \\");
p.println("_____|_____ ");
}
public void Hang6()
{
p.println(" _______ ");
p.println(" | |");
p.println(" | ( )");
p.println(" | |");
p.println(" | /|");
p.println(" | |");
p.println(" | / \\");
p.println("_____|_____ ");
}
public void Hang7()
{
p.println(" _______ ");
p.println(" | |");
p.println(" | ( )");
p.println(" | |");
p.println(" | /|\\");
p.println(" | |");
p.println(" | / \\");
p.println("_____|_____ ");
}
public String[] Sports()
{
option = (int)(Math.random()*10);
switch(option)
{
case 0:
{
clue = "He is an Argentine footballer who plays for La Liga club FC Barcelona and is the captain of the Argentina national team, playing mainly as a forward.";
word = "L I O N E L | M E S S I";
}
break;
case 1:
{
clue = "First person to score 200 in ODIs";
word = "S A C H I N | T E N D U L K A R";
}
break;
case 2:
{
clue = "It is a South Asian team sport.";
word = "K A B A D D I";
}
break;
case 3:
{
clue = "It is a two-player board game";
word = "C H E S S";
}
break;
case 4:
{
clue = "It is a team sport in which two teams of six players are separated by a net.";
word = "V O L L E Y B A L L";
}
break;
case 5:
{
clue = "Known as 'The wall'";
word = "R A H U L | D R A V I D";
}
break;
case 6:
{
clue = "World Table Tennis Champion";
word = "Z H A N G | J I K E";
}
break;
case 7:
{
clue = "A famous sport";
word = "F O O T B A L L";
}
break;
case 8:
{
clue = "Played on a hard board divided by a net";
word = "T A B L E | T E N N I S";
}
break;
case 9:
{
clue = "Grandmaster of chess";
word = "V I S H W A N A T A N | A N A N D";
}
break;
}
return new String[] {word,clue};
}
public String[] Movies()
{
option = (int)(Math.random()*10);
switch(option)
{
case 0:
{
clue = "Movie in which Daniel Radcliffe has acted";
word = "T H E | W O M A N | I N | B L A C K";
}
break;
case 1:
{
clue = "It is a 2012 Indian satirical comedy film that satires organized religion directed by Umesh Shukla";
word = "O H | M Y | G O D";
}
break;
case 2:
{
clue = "Schwarzenegger plays the role of a cyborg assassin sent back in time from the year 2029 to 1984 to kill Sarah Connor";
word = "T H E | T E R M I N A T O R";
}
break;
case 3:
{
clue = "It is a movie about 2 kids who become sspies";
word = "S P Y | K I D S";
}
break;
case 4:
{
clue = "This film stars Jason Statham as Frank Martin, a driver for hire – a mercenary transporter who will deliver anything, anywhere – no questions asked – for the right price";
word = "T H E | T R A N S P O R T E R";
}
break;
case 5:
{
clue = "This film tells the story of Jamal Malik, a young man from the Juhu slums of Mumbai who appears on the Indian version of Who Wants to Be a Millionaire?";
word = "S L U M D O G | M I L L I O N A R E";
}
break;
case 6:
{
clue = "Set during the Sierra Leone Civil War in 1996–2001, the film shows a country torn apart by the struggle between government soldiers and rebel forces";
word = "B L O O D | D I A M O N D";
}
break;
case 7:
{
clue = "This film stars Macaulay Culkin as Kevin McCallister, an eight-year-old boy, who is mistakenly left behind when his family flies to Paris for their Christmas vacation";
word = "H O M E | A L O N E";
}
break;
case 8:
{
clue = "This film follows Dominic Toretto, Brian O'Conner and Mia Toretto as they plan a heist to steal $100 million from corrupt businessman Hernan Reyes";
word = "F A S T | F I V E";
}
break;
case 9:
{
clue = "This film consists of many superheroes";
word = "T H E | A V E N G E R S";
}
break;
}
return new String[] {word,clue};
}
public String[] Computers()
{
option = (int)(Math.random()*10);
switch(option)
{
case 0:
{
clue = "The brain of the computer";
word = "C E N T R A L | P R O C E S S I N G | U N I T";
}
break;
case 1:
{
clue = "Stores a real world 2d object in the form of a digital image";
word = "S C A N N E R";
}
break;
case 2:
{
clue = "A screen that displays output from a computer";
word = "M O N I T O R";
}
break;
case 3:
{
clue = "It is a family of computer networking technologies for LANs";
word = "E T H E R N E T";
}
break;
case 4:
{
clue = "It is a computer network that uses Internet Protocol technology to share information, operational systems, or computing services within an organization";
word = "I N T R A N E T";
}
break;
case 5:
{
clue = "It is an IDE for Java";
word = "B L U E J";
}
break;
case 6:
{
clue = "It is an application developed by Microsoft that is used for playing audio, video and viewing images";
word = "W I N D O W S | M E D I A | P L A Y E R";
}
break;
case 7:
{
clue = "It is a software application that provides comprehensive facilities to computer programmers for software development";
word = "I N T E G R A T E D | D E V E L O P M E N T | E N V I R O N M E N T";
}
break;
case 8:
{
clue = "It is a temporary form of computer data storage";
word = "R A N D O M | A C C E S S | M E M O R Y";
}
break;
case 9:
{
clue = "It is a digital circuit that performs arithmetic and logical operations.";
word = "A R I T H M E T I C | A N D | L O G I C | U N I T";
}
break;
}
return new String[] {word,clue};
}
public String[] Food()
{
option = (int)(Math.random()*10);
switch(option)
{
case 0:
{
clue = "It is an Indian food cited as top ten tasty foods of the world";
word = "M A S A L A | D O S A";
}
break;
case 1:
{
clue = "A fruit which has the same name as its colour";
word = "O R A N G E";
}
break;
case 2:
{
clue = "It is an oven-baked, flat, round bread typically topped with a tomato sauce, cheese and various toppings";
word = "P I Z Z A";
}
break;
case 3:
{
clue = "It is a type of staple food made from some type of unleavened dough which is rolled flat and cut into long thin strips";
word = "N O O D L E S";
}
break;
case 4:
{
clue = "Sorry. No clue for this one";
word = "P I N E A P P L E";
}
break;
case 5:
{
clue = "A bun between which a patty is kept";
word = "B U R G E R";
}
break;
case 6:
{
clue = "It is a chat";
word = "P A N I | P U R I";
}
break;
case 7:
{
clue = "Is perfect for completing the idiom - As cool as a ______________";
word = "C U C U M B E R";
}
break;
case 8:
{
clue = "Consists of two or more slices of bread with fillings between them";
word = "S A N D W I C H";
}
break;
case 9:
{
clue = "Sorry. No clue for this one";
word = "P A S T A";
}
break;
}
return new String[] {word,clue};
}
public String[] Countries()
{
option = (int)(Math.random()*10);
switch(option)
{
case 0:
{
clue = "Means 'Rich Coast' in Spanish";
word = "C O S T A | R I C A";
}
break;
case 1:
{
clue = "Sorry. No clue for this one";
word = "I N D I A";
}
break;
case 2:
{
clue = "T&T";
word = "T R I N I D A D | A N D | T O B A G O";
}
break;
case 3:
{
clue = "Consists of nearly one thousand islands";
word = "S O L O M O N | I S L A N D S";
}
break;
case 4:
{
clue = "It's capital is Riyadh";
word = "S A U D I | A R A B I A";
}
break;
case 5:
{
clue = "Lucky guy : You're getting a free letter : P";
word = "T H E | P H I L I P P I N E S";
}
break;
case 6:
{
clue = "The fastest man on Earth is from this country";
word = "J A M A I C A";
}
break;
case 7:
{
clue = "3 movies have been filmed using this country's name";
word = "M A D A G A S C A R";
}
break;
case 8:
{
clue = "Greatest world power";
word = "U N I T E D | S T A T E S | O F | A M E R I C A";
}
break;
case 9:
{
clue = "Lucky guy : You're getting a free letter : Y";
word = "M A L A Y S I A";
}
break;
}
return new String[] {word,clue};
}
public static void main()throws IOException
{
Hangman obj = new Hangman();
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
PrintWriter p = new PrintWriter(System.out,true);
p.println("Lets play HANGMAN");
p.println();
p.println("Enter your choice according to the following options.\nNOTE: Words are related to the topics given below.\n\n1. Sports\n2. Movies\n3. Computer\n4. Food\n5. Countries");
p.println();
int choice = Integer.parseInt(br.readLine());
obj.clearScreen();
String bothwordandclue[] = new String[2];
if(choice == 1)
bothwordandclue = obj.Sports();
else if(choice == 2)
bothwordandclue = obj.Movies();
else if(choice == 3)
bothwordandclue = obj.Computers();
else if(choice == 4)
bothwordandclue = obj.Food();
else if(choice == 5)
bothwordandclue = obj.Countries();
else
p.println("Wrong choice");
int counter = 6;
String guessword = bothwordandclue[0];
String wordclue = bothwordandclue[1];
int lengthofword = (int)(Math.round(((double)guessword.length()/2)));
int checkguess = 0;
String a;
String guesses[] = new String[50];
StringBuffer guessit = new StringBuffer();
for (int i = 0;i<lengthofword;i++)
guessit = guessit.append("_ ");
guessit.delete((2 * lengthofword)-1,(2 * lengthofword));
int index = guessword.indexOf("|");
while(index >= 0)
{
guessit.setCharAt(index, '|');
index = guessword.indexOf("|", index+1);// Start searching for next "|" after this index
}
p.println(guessit + "\t\t\t\t\t\t\t\t\t The letters you have entered so far");
do
{
p.println();
if(counter == 6)
obj.Hang1();
else if(counter == 5)
obj.Hang2();
else if(counter == 4)
obj.Hang3();
else if(counter == 3)
obj.Hang4();
else if(counter == 2)
obj.Hang5();
else if(counter == 1)
obj.Hang6();
p.println();
p.println("Enter your guess letter");
String guessletter2 = br.readLine();
String guessletter = guessletter2.toUpperCase();
obj.clearScreen();
for(int i = 0;i<lengthofword;i++)
{
if(guessletter.charAt(0) == guessword.charAt(2*i))
{
guessit.setCharAt(2*i,guessletter.charAt(0));
checkguess=1;
}
}
if(checkguess == 1)
{
p.println("Correct Guess. You have " + counter + " incorrect guesses left\t\t\t\t\t\t\t The letters you have entered so far");
p.println(guessit);
}
else
{
counter--;
if(counter == 0)
{
p.println("Wrong guess. You hanged the man :(");
p.println(guessit);
obj.Hang7();
}
else
{
p.println("Wrong guess. You have " + counter + " incorrect guesses left\t\t\t\t\t\t\t\t\t The letters you have entered so far");
p.println(guessit);
}
}
checkguess = 0;
if(counter == 0)
p.println("\nSorry you lost the game\n\nThe correct word is " + guessword);
a = guessit.toString();
if(a.equals(guessword))
{
p.println("You guessed the word!!!!!");
counter=0;
}
}while(counter>0);
}
}
提前致谢
答案 0 :(得分:2)
你的main()缺少String数组args,它应该是:
public static void main(String args[]) throws IOException {
添加它,它将运行。
此外,您不是存储猜测字母而不是将其打印出来,因此不会显示。要解决这个问题,请将猜测String数组更改为一个简单的String,然后在guessletter上大写后添加以下行:
guesses += guessletter;
然后在每个println()后面写着“你到目前为止输入的字母”打印出猜测字符串。然后,这将显示猜测的字母列表。
我们都从某个地方开始,你的代码让我想起了30年前写的第一篇文章。一旦完成所有工作,请查看您的代码并找出可以改进的内容。
答案 1 :(得分:1)
您可以创建一个字符串madeGuesses="";
并继续添加字符,然后将其打印出来,例如
System.out.print(\u000method clearScreen method Email..e for more