我是一个相对较新的程序员,我正在使用Java来构建一个刽子手游戏。我的问题主要与我所说的"时间和/或事件有关#34;(如果你觉得有更好的描述请告诉我)。
当我的应用程序开始执行时,会发生一些事情:1)它显示一条问候消息("欢迎使用Java Hangman ......"),2)它调用startgame(),其中一件事情startgame()做的是调用drawman(o),这显示一个空的绞架,3)如果你赢了(当然你将从游戏刚刚开始),会显示一个问题供用户尝试回答(所有这些代码都在下面。
我的问题/我想做的是:1)每隔2秒钟就会发出问候语"闪烁"(出现和消失),而空的绞架(manZero())正在&# 34;内置"在屏幕上,2)到"构建"空的绞架,从顶部开始#34;或"底部"并且每隔2秒显示一个不同的"绞刑架(字符串),直到完成,3)一旦绞架的最后一块建成",问候消息停止"闪烁"然后提示用户提出第一个问题。
最终结果:游戏开始,问候消息"闪烁",绞架正在建造"在添加最后一块绞架后,问候停止"闪烁&#34 ;并提出了问题。
用另一种方式描述,输出看起来像这样:
//application begins execution
System.out.println("Welcome to Java Hangman...");// greet flashes every two seconds
// meanwhile the gallows is being built below greet
public void manZero()
{
System.out.println("_____"); // 2 sec after that this string appears("last piece")
System.out.println("| |"); // 2 seconds after that this string appears
System.out.println("| "); // 2 seconds after that this string appears
System.out.println("| "); // 2 seconds later this string appears
System.out.println("| "); // first this string appears
当"最后一块"出现在输出中,问候停止闪烁,空的绞架(manZero())完好无损,然后第一个问题提交给用户(即出现在输出中)。
这是一个多阶段的问题,我意识到Stack喜欢简洁的东西,但由于这些问题都处理类似的问题,我认为它会成为一个好的,可能有趣的话题。此外,由于我是编程新手,请提供建议的示例,最好是使用现有代码的完整示例,因为我不会花太多时间在杂草中找到自己。
现在游戏运行命令,但我有兴趣添加一些挥杆功能,如果你想帮我这个或希望看到整个程序的代码,请发送电子邮件给reedwilliams8404 @ gmail .COM
感谢您的时间和意见,我对您提出的建议感兴趣。
/*
main, greeting, call to start
*/
public class HangmanMain
{
public static void main(String[] args)
{
System.out.println("Welcome to Java Hangman...");
HangmanGame hangmanGame = new HangmanGame(initQuestions());
try
{
hangmanGame.startGame();
}
/*
startGame(), call to drawman(O), pose first question
*/
public HangmanGame(List<Question> questions)
{
this.questions = questions;
manDrawer = new ManDrawer();
questionPoser = new QuestionPoser();
}
// sets/resets values
public void startGame() throws IOException
{
manDrawer.drawMan(0);
incorrectGuesses = 0;
guesses = 6;
// for each Question question in questions
for(Question question : questions)
{
// not winning
if(!isWinning)
{
break;
}
// winning
else
{
questionPoser.poseQuestion(question);
askQuestionUntilCorrectOrOutOfGuesses(question);
handleQuestionSuccessOrGameFailure(question);
}
}
/*
"builds" gallows
*/
//gets value of field incorrectGuesses, determines corresponding method to call,
// calls corresponding method, corresponding method displays/draws hangman image
public class ManDrawer
{
// determines which man#() to call based on the value of incorrectGuesses
public void drawMan(int incorrectGuesses)
{
switch (incorrectGuesses) {
case 0:
manZero();
break;
case 1:
manOne();
break;
//...
// value of incorrectGuesses is 0
public void manZero()
{
System.out.println("_____");
System.out.println("| |");
System.out.println("| ");
System.out.println("| ");
System.out.println("| ");
}
// value of incorrectGuesses is 1
public void manOne()
{
System.out.println("_____");
System.out.println("| |");
System.out.println("| o");
System.out.println("| ");
System.out.println("| ");
}
//...
答案 0 :(得分:0)
让线程休眠2秒钟。
try{
Thread.sleep(2000)
}catch...
答案 1 :(得分:0)
对于1个问题(闪烁欢迎使用Java Hangman ...),这应该可以在系统控制台上正常工作,但不能在IDE控制台中正常工作。
try {
int i=0;
while (i<10) {
System.out.print("Welcome to Java Hangman...");
Thread.sleep(100);
System.out.print("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
Thread.sleep(100);
i++;
}
} catch (Exception e){
}
对于绘制刽子手形象的2部分,你可以这样做:
try
{
final String os = System.getProperty("os.name");
for(int i=0;i<7;i++) {
manDrawer.drawMan(i);
Thread.sleep(200);
if (os.contains("Windows")) {
Runtime.getRuntime().exec("cls");
} else {
Runtime.getRuntime().exec("clear");
}
}
} catch (final Exception e) {
// Handle any exceptions.
}
编辑:
Eclipse Bug #76936.没有列出变通办法。
您可能很幸运找到了一个可以提供更高级控制台的插件。