Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 要垂直和水平移动我的对象,我的代码将以角度移动_Java - Fatal编程技术网

Java 要垂直和水平移动我的对象,我的代码将以角度移动

Java 要垂直和水平移动我的对象,我的代码将以角度移动,java,Java,导入java.awt.Graphics2D; 导入java.awt.event.ActionEvent; 导入java.awt.event.ActionListener; 导入java.awt.event.KeyEvent; 导入java.awt.event.KeyListener; 公共类Ball实现ActionListener、KeyListener{ int x=0; int y=0; int-xa=0; int-ya=0; 私人游戏; 公众舞会(游戏){ 这个。游戏=游戏; } 无效移动


导入java.awt.Graphics2D;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.awt.event.KeyEvent;
导入java.awt.event.KeyListener;
公共类Ball实现ActionListener、KeyListener{
int x=0;
int y=0;
int-xa=0;
int-ya=0;
私人游戏;
公众舞会(游戏){
这个。游戏=游戏;
}
无效移动(){
如果(x+xa>0&&x+xa0&&y+ya
java新手非常抱歉,如果这是一个简单的答案


当我运行程序时,我的圆对象以角度移动,而不是垂直和水平移动。

如果要垂直移动,需要将
xa
设置为0;如果要水平移动,需要将
ya
设置为0。它们以这种方式初始化,但从未重置。

不确定在“keyReleased()”中要执行什么操作,但它实际上什么也没做。尝试设置蛇形游戏,当向右推时,它会一直持续到方向改变。请编辑问题并添加您在问题内的评论中给出的上下文解释。我建议调试您认为值应该是什么。我的猜测是,您从未将
xa
ya
设置回零,因此所有东西始终以45度角移动。谢谢,下一步请保持移动,直到按下下一个方向。
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JFrame;
import javax.swing.JPanel;

@SuppressWarnings("serial")
public class Game extends JPanel {

    Ball ball = new Ball(this);
    Number123 num123 = new Number123(this);

    public Game(){
        addKeyListener(new KeyListener() {
            @Override
            public void keyTyped(KeyEvent e) {
            }

            @Override
            public void keyReleased(KeyEvent e) {
                ball.keyReleased(e);
            }

            @Override
            public void keyPressed(KeyEvent e) {
                ball.keyPressed(e);
            }
        });
        setFocusable(true);
    }

    private void move() {
        ball.move();

    }

    @Override
    public void paint(Graphics g) {
        super.paint(g);
        Graphics2D g2d = (Graphics2D) g;
        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                RenderingHints.VALUE_ANTIALIAS_ON);
        ball.paint(g2d);
        num123.paintComponent(g2d);
}

    public static void main(String[] args) throws InterruptedException {
        JFrame frame = new JFrame("Two sprites");
        Game game = new Game();
        frame.add(game);
        frame.setSize(600, 800);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        while (true) {
            game.move();
            game.repaint();
            Thread.sleep(10);
        }
}




}
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class Ball implements ActionListener, KeyListener{

    int x = 0;
    int y = 0;
    int xa = 0;
    int ya = 0;
    private Game game;

    public Ball(Game game){
        this.game= game;
    }

     void move(){
         if (x + xa > 0 && x + xa < game.getWidth()-60)
                x = x + xa;
         if (y + ya > 0 && y + ya < game.getHeight()-60)
            y = y + ya;
    }
    public void paint(Graphics2D g){
        g.fillOval(x, y, 30, 30);
    }

    public void keyReleased(KeyEvent e) {
        if  (xa  == 1){
            xa = 1;}
         if (xa == -1){
                xa = -1;
        }
         if  (ya  == 1){
                ya = 1;}
             if (ya == -1){
                    ya = -1;
            }

    }



    public void keyPressed(KeyEvent e) {
        if (e.getKeyCode() == KeyEvent.VK_LEFT)
            xa = -1;
        if (e.getKeyCode() == KeyEvent.VK_RIGHT)
            xa = 1;
        if (e.getKeyCode() == KeyEvent.VK_UP)
            ya = -1;
        if (e.getKeyCode() == KeyEvent.VK_DOWN)
        ya = 1;
    }

    @Override
    public void keyTyped(KeyEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub

    }
}