0

我试图获得一个功能,当你按下回车键时,你开始游戏,但它不起作用。没有错误。我遵循了一个教程。

这是我的代码:

import greenfoot.*;

/**
 * Write a description of class Menu here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Menu extends World
{

    /**
     * Constructor for objects of class Menu.
     * 
     */
    public Menu()
    {    
        // Create a new world with 600x400 cells with a cell size of 1x1 pixels.
        super(800, 500, 1); 

        prepare();
    }

     public void start()
    {
        {
            if(Greenfoot.isKeyDown("ENTER"))
            {
                MinionWorld MinionWorld= new MinionWorld();
                Greenfoot.setWorld(MinionWorld);
            }
        }
    }

    /**
     * Prepare the world for the start of the program. That is: create the initial
     * objects and add them to the world.
     */
    private void prepare()
    {
        Controls controls = new Controls();
        addObject(controls, 300, 100);
        controls.setLocation(175, 50);
    }
}
4

3 回答 3

0

现在使用您的实际代码,发生的情况是,当您调用 start() 时,它会检查一次,如果用户按下 enter,则在您调用 start() 时进行检查。

您可以做的一件事是将您的 start 方法的代码放在一个 while 循环中,这将使它检查用户是否一直按 enter,并且当满足条件时,您可以中断 while 循环以结束开始方法。

这是一个代码示例:

public void start()
{
    while(true){
        if(Greenfoot.isKeyDown("ENTER"))
        {
            MinionWorld MinionWorld= new MinionWorld();
            Greenfoot.setWorld(MinionWorld);
            break; // Ends the loop
        }
    }
}
于 2015-09-21T09:56:44.543 回答
0

您的代码检查是否在运行时按下了 Enter 按钮。您应该使用 KeyListener 来捕获“Enter”按下事件。如果您不使用 GUI,您可以只使用 Scanner 并等待用户按 Enter:

Scanner scanner = new Scanner(System.in);
scanner.nextLine();

这将等到用户按 Enter 键。

于 2015-09-21T09:02:36.723 回答
0
if(Greenfoot.isKeyDown("ENTER"))

将此行更改为

if(Greenfoot.isKeyDown("enter"))

Enter 的键名是“输入”所有小型大写字母。

于 2015-09-21T09:06:15.637 回答