我在用Java做一个2D游戏,我用KeyListener和一些布尔值来检测按键。但问题是,如果我按住一个键,玩家就不会移动半秒钟,然后开始移动。有人知道怎么修吗?
public void键按下(...){PlayerX+=3;}如有任何答复,不胜感激,谢谢。
在java中有多种处理游戏控件的方法,但我更喜欢的方法是包含一个名为…让我们说“key.class”
在key.class中我们可以拥有:
public class Key{
// Creating the keys as simply variables
public static Key up = new Key();
public static Key down = new Key();
public static Key left = new Key();
public static Key special = new Key();
/* toggles the keys current state*/
public void toggle(){
isDown = !isDown;
}
public boolean isDown;
}
现在我们有了一个类,如果按下某些键,我们就可以访问它,但首先我们需要确保keys.isdown函数将正确切换。我们在实现KeyListener的类中这样做。
package game;
// Importing the needed packages
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.util.HashMap;
public class Controller implements KeyListener{
//Assigning the variable keys to actual letters
public Controller(Main main){
bind(KeyEvent.VK_W, Key.up);
bind(KeyEvent.VK_A, Key.left);
bind(KeyEvent.VK_S, Key.down);
bind(KeyEvent.VK_D, Key.right);
bind(KeyEvent.VK_SPACE, Key.special);
mainClass = main;
}
@Override
public void keyPressed(KeyEvent e) {
other[e.getExtendedKeyCode()] = true;
keyBindings.get(e.getKeyCode()).isDown = true;
}
@Override
public void keyReleased(KeyEvent e) {
other[e.getExtendedKeyCode()] = false;
keyBindings.get(e.getKeyCode()).isDown = false;
}
public boolean isKeyBinded(int extendedKey){
return keyBindings.containsKey(extendedKey);
}
@Override
public void keyTyped(KeyEvent e) {
}
public void bind(Integer keyCode, Key key){
keyBindings.put(keyCode, key);
}
public void releaseAll(){
for(Key key : keyBindings.values()){
key.isDown = false;
}
}
public HashMap<Integer, Key> keyBindings = new HashMap<Integer, Key>();
public static boolean other[] = new boolean[256];
}
现在,这个类将为我们处理所有的键绑定,并且假设您的Canvas addKeyListener或您的游戏在其上运行的任何东西将起作用,并相应地更改键。up/down/left/right/special。
现在,最后一步是实现所有这些,以移动我们的角色有效和容易。
if(Key.up.isDown) y+=3;
if(Key.right.isDown) PlayerX += 3;
问题内容: 我到处环顾了很多,还没有找到将现有IntelliJ项目转换为Gradle的最佳解决方案。我在团队环境中工作,我们目前共享.ipr文件,因为我们要跟踪一些构建配置。最终,我们将摆脱那些偏爱Gradle的人,但是在Gradle转换完成之前,我不能搞砸太多。 同样,我们的Java源文件位于src目录的根目录中,而不是标准的src / main / java。 有什么方法可以将Gradle添加
此外,我们的Java源文件位于src目录的根目录中,而不是标准的src/main/Java。 有没有一种方法,我可以添加Gradle到我的项目,不会让我删除和重新创建我的IntelliJ项目,也不会把其他人搞砸,当他们做一个Git拉动?
--小注意,我试图上传我的游戏图像来说明我的问题,但我还没有必要的声誉这样做。我对此表示赞同。 如何手动设置swing组件的最终大小和 如何使用布局管理器手动设置out组件的坐标
Spark Dataframes有一个方法每次添加一个新列。若要添加多列,需要一个的链。这是做这件事的最佳实践吗? 第二部分,在和的链中使用有哪些权衡? 我在某个地方读到过,在Spark DFs中使用可用的方法总是比推出自己的实现要好。如果我的论点错了,请让我知道。谢谢!欢迎所有的想法。
本文向大家介绍Java控制台实现猜拳游戏小游戏,包括了Java控制台实现猜拳游戏小游戏的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Java猜拳游戏的具体代码,供大家参考,具体内容如下 先来看一下效果图: 首先我们创建一个Person类,这个类有name和score两个属性,有play这个方法,源代码如下: 接下来是主程序入口: 源代码下载:Java猜拳游戏 以上就是本文的全部内
问题内容: 我正在创建一个基本的2D游戏(以及游戏引擎),目前正在开发数据的文件格式。当然,要运行此游戏,我将需要缓存。我发现将游戏的所有数据都放在一个文件中是非常不专业的(只要文件采用某种缓存格式,就不一定要保存在单个文件中)。 所以这就是为什么我来这里问。我当时想做一个zip文件,但我觉得那根本不是最好的方法。我也在考虑做另一个二进制写程序,该写程序将具有标题(文件的类型,“位置”)和每个文件