Java 如何使用输入制作我移动的木棍图形?

Java 如何使用输入制作我移动的木棍图形?,java,Java,忽略提到方向和球员姿态的近端。我知道我必须重新粉刷木棍,但我不知道怎么做,请有人帮忙。我目前正在为我和我的朋友制作的一个游戏开发一个战斗系统,所以我需要一些帮助来弄清楚如何移动用户的角色 package CombatSystem; import java.awt.Color; import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java

忽略提到方向和球员姿态的近端。我知道我必须重新粉刷木棍,但我不知道怎么做,请有人帮忙。我目前正在为我和我的朋友制作的一个游戏开发一个战斗系统,所以我需要一些帮助来弄清楚如何移动用户的角色

package CombatSystem;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JPanel;
import javax.swing.Timer;

public class Combat extends JPanel implements KeyListener, ActionListener {

    private boolean play = false;

    private int user_health = 3;
    private int boss_health = 3;

    private int playerPosX = 100;
    private int playerPosY = 100;

    private int player_stance = 0;

    private int direction = 0;

    //1 = Attack, 2 = Defense
    Timer mainTimer;


    public Combat() {

        addKeyListener(this);
        setFocusable(true);
        setFocusTraversalKeysEnabled(true);
        mainTimer = new Timer(10, this);
        mainTimer.start();
    }


    public void paint(Graphics x) {
        //Background
        super.paint(x);
        x.setColor(Color.black);
        x.fillRect(1,1,886,662);

        //Floor
        x.setColor(Color.DARK_GRAY);
        x.fillRect(1, 550, 886, 662);

        //User
        x.setColor(Color.white);
        //Head
        x.drawOval(90, 60, 20, 20);
        //Body
        x.drawLine(100, 80, 100, 110);
        //Arms
        x.drawLine(100, 90, 80, 105);
        x.drawLine(100, 90, 120, 105);
        //Legs
        x.drawLine(100, 110, 85, 135);
        x.drawLine(100, 110, 115, 135);

    }

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


    @Override
    public void keyPressed(KeyEvent e) {    
        if(e.getKeyCode() == KeyEvent.VK_RIGHT) {
            playerPosX += 20;
            }
        else if(e.getKeyCode() == KeyEvent.VK_LEFT){
            playerPosX -= 20;
            }

    }   
    @Override
    public void keyReleased(KeyEvent e) {
        if(e.getKeyCode() == KeyEvent.VK_1) {
            direction = 1;

            if(e.getKeyCode() == KeyEvent.VK_A) {
                player_stance = 1;
                //Attack Stance
            }
            else if(e.getKeyCode() == KeyEvent.VK_D) {
                player_stance = 2;
                //Defense Stance
            }
        }
        else if(e.getKeyCode() == KeyEvent.VK_2) {
            direction = 2;

            if(e.getKeyCode() == KeyEvent.VK_A) {
                player_stance = 1;
                //Attack Stance
            }
            else if(e.getKeyCode() == KeyEvent.VK_D) {
                player_stance = 2;
                //Defense Stance
            }
        }
        else if(e.getKeyCode() == KeyEvent.VK_3) {
            direction = 3;

            if(e.getKeyCode() == KeyEvent.VK_A) {
                player_stance = 1;
                //Attack Stance
            }
            else if(e.getKeyCode() == KeyEvent.VK_D) {
                player_stance = 2;
                //Defense Stance
            }
        }
    }



    @Override
    public void keyTyped(KeyEvent e) {


    }

}

嗯,你需要调整你手指的绘图位置。“简单”的解决方案可能是将
图形
上下文转换到您希望绘制图形的位置,并始终从
0x0
开始绘制图形。我还鼓励您使用
paintComponent
而不是
paint
;)我不能只看你的代码就发现问题。我需要一个脚本,这样我就可以获取代码,将其放入Eclipse中,编译它,运行它,并尝试不同的事情。“你能帮我们吗?”Intisaurus,我想现在是开始OOP的好时机。好吧,你需要调整你手指绘图位置的位置。“简单”的解决方案可能是将
图形
上下文转换到您希望绘制图形的位置,并始终从
0x0
开始绘制图形。我还鼓励您使用
paintComponent
而不是
paint
;)我不能只看你的代码就发现问题。我需要一个脚本,这样我就可以获取代码,将其放入Eclipse中,编译它,运行它,并尝试不同的事情。“你能帮我们吗?”英蒂索鲁,我想现在是开始OOP的好时机。