使用键盘输入从ArrayList中选择对象

时间:2015-03-04 19:59:13

标签: java arrays input arraylist keyboard

谢谢你的到来。我一直在研究游戏库存系统,当我从世界中挑选物品时它一直很棒,然后当我点击" I"时,它们会被添加到列表中并显示在库存盒内,但现在我希望能够使用箭头键和ENTER键与它们进行交互,每个项目都有一个名为"使用"现在我希望能够从列表中选择项目,当我点击输入所选项目的方法"使用&#34时执行动作(例如:HP药水,增加玩家健康状况) ;实际使用,我已经涵盖了输入处理,我只想知道如何根据所选择的选择访问arraylist中的对象。

到目前为止,我得到了:

private int currentChoice=0;//the value is the index position within the
                            //array, so 0 would mean I selected an object 
                            //at index 0.

private ArrayList<Item> playerItems;//This is the array in which I store
                                    //the player's items.

private boolean inventoryDisplayed;//This is used when I click "I" then the 
                                   //the arrow keys stop moving the player
                                   //and should now be used to interact with
                                   //the items inside the inventory.

如果你们能帮助我,这会让我的一周更加美好,说真的,这个项目对我来说非常重要,非常感谢任何帮助,感谢您花时间帮助stackOverflow的同伴,祝你好运!生活中,有一个很大的巧克力饼干只是为了阅读直到这里。 :)

2 个答案:

答案 0 :(得分:0)

基本上,您可以使用

将元素放在列表中的特定位置
list.get(index);

或在你的情况下

 playerItems.get(currentChoice);

答案 1 :(得分:0)

首先,将playerItems定义为private List<Item> playerItems;,然后将其实例化为playerItems = new ArrayList<Item>();。这是精心设计的代码的核心原则之一,特别是如果您稍后需要将playerItem更改为LinkedList

输入'i'字符时,您需要向相应的组件添加KeyListenerKeyAdapter。然后,按如下方式实现keyTyped(或者keyPressed)方法:

@Override
public void keyTyped(KeyEvent e)
{
    switch(e.getKeyChar())
    {
        case KeyEvent.VK_LEFT:
            if(--currentChoice < 0)
                currentChoice = playerItems.size() - 1;
            break;
        case KeyEvent.VK_RIGHT:
            if(++currentChoice >= playerItems.size())
                currentChoice = 0;
            break;
    }
}

然后,您可以使用以下代码检索相应的项目:playerItems.get(currentChoice);