【问题标题】:User calling a method throughout any period of the program用户在程序的任何时间段内调用方法
【发布时间】:2015-05-18 15:34:45
【问题描述】:

我正在尝试构建一个基于文本的 D&D 类型游戏,但我一直纠结于如何让用户在游戏过程中随时调用方法。

游戏将按其进程进行,如果用户在任何时候决定要在他/她的统计数据上达到顶峰,用户将键入“字符表”,他的所有统计数据等都会显示出来。

解决我的问题的唯一想法是使用:

if( variable.equals("character sheet"))
       callMethod();

但这只能工作一次。

现在,即使我把它放在一个循环中,是的,它会让我想做多少次就做多少次,但它不会执行程序的其余部分......

如果没有循环,它将让我执行一次,然后执行程序的其余部分,但永远不会让用户键入字符表并再次打开该方法。 ////////////////

导入 java.util.Scanner; 公共类 MainGame {

public static void main(String[] args)
{
    Scanner input = new Scanner(System.in);
    String characterSheet;


    CharacterCreation create = new CharacterCreation();
    System.out.println("Choose a race:");
    System.out.println("Race List:\nDwarf\nDark Elf\nHalfling\nHuman");
    create.stats();
    System.out.println("If you want to see your character sheet in the future type 'character sheet'");
    characterSheet = input.nextLine();
    characterSheet.toLowerCase();

     if(characterSheet.equals("Character Sheet"))
           create.getStats();


}

}

【问题讨论】:

  • 如果不查看读取用户输入的代码,我们无法真正知道问题所在
  • 什么是“程序的其余部分”?它是基于圆形的吗?所以你总是期待用户输入?

标签: java loops methods


【解决方案1】:

嗯,最大的问题是:您的游戏是按照用户的操作运行,还是与用户的每个操作同步运行?在第二种情况下,您需要一个简单的循环:

while (isRunning){
  getUserInput();
  updateGameWorld();
}

如果游戏独立于用户操作运行,您将需要 2 个线程:一个会定期更新世界,另一个会听取用户输入并根据用户输入调整世界。

我建议您阅读有关“游戏循环”的内容,但请注意它们通常会在框架中绘制图形,这可能会削弱它们的一般用途。但基本上你有一个渲染世界的游戏循环和另一个处理用户操作的线程。

【讨论】:

    猜你喜欢
    • 2015-03-20
    • 1970-01-01
    • 1970-01-01
    • 2012-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2014-12-15
    相关资源
    最近更新 更多