使用Java制作Doodle跳跃:如何让Doodle跳跃
我正在制作一个涂鸦跳跃游戏,我很困惑。我必须让涂鸦跳起来,但我太迷路了。我已将键(空格、A、D)放入KeyListener,我不确定它为什么不工作。我按了空格键,但我不知道如何使涂鸦真正跳跃。我试着用翻译的方法,但不起作用使用Java制作Doodle跳跃:如何让Doodle跳跃,java,swing,keylistener,Java,Swing,Keylistener,我正在制作一个涂鸦跳跃游戏,我很困惑。我必须让涂鸦跳起来,但我太迷路了。我已将键(空格、A、D)放入KeyListener,我不确定它为什么不工作。我按了空格键,但我不知道如何使涂鸦真正跳跃。我试着用翻译的方法,但不起作用 import java.awt.Color; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.JFrame; i
import java.awt.Color;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class DoodleJumpFrame extends JFrame implements KeyListener
{
private static final int FRAME_WIDTH = 600;
private static final int FRAME_HEIGHT = 500;
private JPanel panel;
private DoodleJumpComponent game;
public DoodleJumpFrame()
{
super();
panel = new JPanel();
game = new DoodleJumpComponent();
init();
}
public void init()
{
panel.add(game);
panel.setBackground(Color.WHITE);
addKeyListener(this);
}
public void addPanel()
{
this.add(panel);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
pack();
setVisible(true);
}
public void run()
{
game.start();
}
@Override
public void keyPressed(KeyEvent e)
{
int keycode = e.getKeyCode();
if (keycode == KeyEvent.VK_SPACE)
{
game.setSpacePressed(true);
}
if (keycode == KeyEvent.VK_A)
{
game.setLeftPressed(true);
}
if (keycode == KeyEvent.VK_D)
{
game.setRightPressed(true);
}
}
@Override
public void keyReleased(KeyEvent e)
{
int keycode = e.getKeyCode();
if (keycode == KeyEvent.VK_SPACE)
{
game.setSpacePressed(false);
System.out.println("yes");
}
if (keycode == KeyEvent.VK_A)
{
game.setLeftPressed(false);
}
if (keycode == KeyEvent.VK_D)
{
game.setRightPressed(false);
}
}
@Override
public void keyTyped(KeyEvent e)
{
// TODO Auto-generated method stub
}
}
我的另一个班级:
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.geom.Rectangle2D;
import java.util.ArrayList;
import javax.swing.ImageIcon;
public class Doodle
{
private ImageIcon io;
private Image i;
private float x, y = 0;
private double speedX, speedY = 0;
private static int PIC_HEIGHT = 45;
private static int PIC_WIDTH = 45;
private boolean leftPressed, rightPressed, spacePressed, UPressed, IPressed;
private Rectangle2D hitbox = new Rectangle((int)x,(int)y,PIC_HEIGHT,PIC_WIDTH);
public Rectangle2D getHitbox()
{
return hitbox;
}
public void setHitbox(Rectangle2D hitbox)
{
this.hitbox = hitbox;
}
public Doodle(int x, int y)
{
this.x = x;
this.y = y;
io = new ImageIcon(this.getClass().getResource("doodle.jpeg"));
i = io.getImage();
}
public void tick(ArrayList<Platform> tiles)
{
hitbox.setRect((int)x,(int)y,PIC_HEIGHT,PIC_WIDTH);
move(tiles);
}
public void move(ArrayList<Platform> tiles) {
if(rightPressed) {
x+=5;
}
if(leftPressed) {
x-=5;
}
if(x>320-PIC_WIDTH) {
speedX = 0;
x = 320-PIC_WIDTH;
}
if(x<0) {
speedX = 0;
x = 0;
}
jump(tiles);
}
public void jump(ArrayList<Platform> tiles) {
for(int i = 0; i<tiles.size(); i++) {
if(hitbox.intersects(tiles.get(i).getRect())||y+PIC_HEIGHT>620) {
speedY=-15;
}
}
if(y+PIC_HEIGHT<620) speedY+=1;
speedY*=0.9;
y+=speedY;
}
public ImageIcon getIo()
{
return io;
}
public void setIo(ImageIcon io)
{
this.io = io;
}
public Image getI()
{
return i;
}
public void setI(Image i)
{
this.i = i;
}
public float getX()
{
return x;
}
public void setX(float x)
{
this.x = x;
}
public float getY()
{
return y;
}
public void setY(float y)
{
this.y = y;
}
public static int getPIC_HEIGHT()
{
return PIC_HEIGHT;
}
public static void setPIC_HEIGHT(int pIC_HEIGHT)
{
PIC_HEIGHT = pIC_HEIGHT;
}
public static int getPIC_WIDTH()
{
return PIC_WIDTH;
}
public static void setPIC_WIDTH(int pIC_WIDTH)
{
PIC_WIDTH = pIC_WIDTH;
}
public void leftPressed(boolean leftPressed)
{
this.leftPressed =leftPressed;
}
public void rightPressed(boolean rightPressed)
{
this.rightPressed = rightPressed;
}
public void spacePressed(boolean spacePressed)
{
this.spacePressed = spacePressed;
}
public void UPressed(boolean UPressed)
{
this.UPressed = UPressed;
}
public void IPressed(boolean IPressed)
{
this.IPressed = IPressed;
}
导入java.awt.Image;
导入java.awt.Rectangle;
导入java.awt.geom.Rectangle2D;
导入java.util.ArrayList;
导入javax.swing.ImageIcon;
公共课涂鸦
{
专用图像图标io;
私人形象一;
私有浮动x,y=0;
专用双速X,速=0;
专用静态int PICU高度=45;
私有静态int PIC_WIDTH=45;
私有布尔值leftPressed、righpressed、spacePressed、uppressed、ippressed;
私有矩形2D点击框=新矩形((int)x,(int)y,PIC_高度,PIC_宽度);
公共矩形2D getHitbox()
{
返回对话框;
}
公共无效设置hitbox(矩形2D hitbox)
{
this.hitbox=hitbox;
}
公共涂鸦(整数x,整数y)
{
这个.x=x;
这个。y=y;
io=新图像图标(this.getClass().getResource(“doodle.jpeg”);
i=io.getImage();
}
公共空白勾号(ArrayList磁贴)
{
hitbox.setRect((int)x,(int)y,图片高度,图片宽度);
移动(瓷砖);
}
公共无效移动(ArrayList磁贴){
如果(右键按下){
x+=5;
}
如果(左按){
x-=5;
}
如果(x>320-PIC_宽度){
speedX=0;
x=320-PIC_宽度;
}
如果(xIs)这是你所有的代码?我没有看到你的。那么你是说键侦听器不工作?这与你的跳转无关?这有很多帮助。它提供了使用键侦听器(不是一个好主意)和使用键绑定(更好)的具体示例。