java做一个游戏怎么java获取输入用户输入

本节书摘来异步社区《Java 2D游戏编程叺门》一书中的第2章第2.1节,作者:【美】Timothy Wright(莱特)更多章节内容可以访问云栖社区“异步社区”公众号查看。

在大多数应用程序中軟件都不需要处理键盘事件。当某些事情发生变化的时候由任意的组件(如文本框)来处理输入并通知软件。但是大多数计算机游戏使用键盘不是为了录入,而是为了游戏输入根据游戏的不同,虽然可能会有录入但键盘按键常用做方向键和发射激光武器。很多计算機游戏具有不同的输入配置并且有些游戏甚至允许用户根据自己的意愿来设置按键。不管游戏如何使用键盘(并且它可能采用一种全新嘚方式来使用键盘监听键盘事件的常用方法都不适用于游戏循环程序设计。

Swing组件允许在实现了KeyListener的接口的对象上添加监听器

按下一个按鍵的时候,调用keyPressed()方法正如所预期的那样,释放按键的时候调用keyReleased()方法。只有在按键按下并释放之后才会调用keyTyped()方法。动作按键和修饰按鍵例如Shift按键和方向箭头按键,不会产生keyTyped()事件第11章介绍文本的时候将会讨论这一事件。

问题在于键盘是由操作系统维护的一种硬件。甴操作系统而不是软件来产生键盘事件并将其分派给相关的应用程序。没什么办法能够阻止用户从游戏窗口切换回Web浏览器并查看Email因此,所有的键盘事件都通过一个不同的线程到达并且可供游戏循环使用。

大多数游戏遵从某种循环结构:

如果在游戏循环之外处理输入狀态可能会随时改变。此外还可能会同时按下多个按键,因此处理每个事件自身并不允许用户组合按键。为了简化输入过程应保存鍵盘事件并使其可供游戏循环使用。 存储键盘状态时理解程序如何共享键盘的状态是很重要的。键盘是非常复杂的硬件不仅那些字符串字符可用,甚至每个并不代表字符的按键(例如Shift键)也可以通过虚拟按键代码变得可用。键盘上的每个按键都映射为KeyEvent类中的一个键代碼如下是一些示例值。 这些常量中的每一个都映射为传递给KeyEvent对象中的按键监听器的一个数字值。针对产生事件的任何键盘按键KeyEvent.getKeyCode()方法嘟返回虚拟的键代码。 SimpleKeyboardInput类位于javagames.util包中它非常小。这个类实现了KeyListener接口因此,它可以监控键盘事件它保存了256个键的一个Boolean数组,其中都是需偠取样的虚拟键代码在键盘状态数组中,存储了键的状态如果按下的话是true,否则就是false最后,使用synchronized关键字来防止从多个线程访问键状態数组然后,通过keyDown(int keyCode)方法允许访问当前按键状态

SimpleKeyboardExample类位于javagames.input包中,它是使用键盘输入类的一个简单测试它使用输入处理代码来替代渲染代碼。注意使用addKeyListener()方法将SimpleKeyboardInput添加到应用程序中。在游戏循环中游戏循环会检查空格或箭头按键,并且在这些按键按下时打印一条消息而不昰清除图像并显示帧速率。
当检查到空格时示例使用一个变量来保存按键的状态,针对每次按键只打印到控制台一次而对于箭头按键,会持续将其状态输出到控制台直到按键释放。

java-java获取输入键盘输入

如何在Java的控制囼中从用户那里获得简单的键盘输入(整数) 我使用java.io.*来完成此操作,但它已被弃用

然后,您可以像这样使用

旁注:如果您将nextInt()和nextLine()一起使用,则可能会遇到一些问题因为nextInt()无法读取输入的最后一个换行符,因此nextLine()不会以期望的方式执行 在上一个问题中了解更多有关如何解决该問题的信息。使用nextInt跳过nextLine

您可以像这样使用Scanner类:

如果您想验证用户输入,也可以使用BufferedReader来实现例如:

因为Scanner类不允许您这样做,否则就不那麼容易了……

为了验证您使用“ try-catch”调用

从键盘读取(标准输入)可以使用Scanner是close()包中的类。

close()软件包用于java获取输入诸如Scanner等和System.in等原始类型的输入。這是读取Java程序中输入的最简单方法尽管效率不高。

要创建Scanner类的close()我们通常将预定义的对象System.in,它代表标准输入流(键盘)

例如,此代码允许鼡户从System.in中读取数字:

close()如果此扫描仪在其扫描仪中还有另一个令牌则返回true输入。

close()将输入的下一个标记扫描为int

close()将输入的下一个标记扫描为浮点型。

close()将此扫描仪推进到当前行之外并返回跳过的输入

close()将输入的下一个标记扫描为双精度。

有关Scanner类中Public方法的更多详细信息

您可以使鼡扫描仪java获取输入下一行,并对输入的行进行任何所需的操作 您还可以使用JOptionPane弹出一个对话框,要求输入

如果您有任何疑问,请告诉我 相当不言自明。 我注释了代码以便您可以阅读。 :)

如果您具有Java 6(应该有btw)或更高版本则只需执行以下操作:

然后创建一个integer类的对象:

现在您可以随时拨打电话:

这将从键盘上存储integer的值。


· TA获得超过3.1万个赞

中的e就是你键盤点下的键然后e.getKeyCode()用来java获取输入按值。

以上代码都可用编译器自动生成

你对这个回答的评价是?

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

我要回帖

更多关于 java获取输入 的文章

 

随机推荐