去掉多线程只能移动几个位置,不知道为什么。

版权声明: https://blog.csdn.net/eds124/article/details/82453326
package com.dinglin;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Random;

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

public class Main extends JFrame {

    private static MyJPanel mjp = new MyJPanel();

    public Main() {
        mjp.setBackground(Color.BLACK);
        mjp.setBounds(10, 10, 1900, 900);

        this.add(mjp);
        this.addKeyListener(mjp);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setExtendedState(JFrame.MAXIMIZED_BOTH);
        this.setLayout(null);
        this.setVisible(true);

    }

    public static void main(String[] args) {
        Main m = new Main();
    }

}

class MyJPanel extends JPanel implements KeyListener {
    private static int x = 900, y = 800, width = 100, height = 100, speed = 100;

    public void paint(Graphics g) {
        super.paint(g);
        g.fillRect(x, y, width, height);

        EnemyTank et = new EnemyTank(g, 0, 0);
        EnemyTank et2 = new EnemyTank(g, 900, 0);

        this.repaint();
    }

    public void keyPressed(KeyEvent ke) {
        int i = ke.getKeyCode();
        if (i == KeyEvent.VK_E && y > 0) {
            y -= speed;
        } else if (i == KeyEvent.VK_D && y < 800) {
            y += speed;
        } else if (i == KeyEvent.VK_S && x > 0) {
            x -= speed;
        } else if (i == KeyEvent.VK_F && x < 1800) {
            x += speed;
        }

    }

    public void keyReleased(KeyEvent ke) {
    }

    public void keyTyped(KeyEvent ke) {
    }

}

class EnemyTank {
    private int ex = 0, ey = 0, ewidth = 100, eheight = 100, espeed = 100;

    public EnemyTank(Graphics g, int ex, int ey) {
        Random r = new Random();
        int i = r.nextInt(4);
        this.ex = ex;
        this.ey = ey;

        if (i == 0 && ey > 0) {
            ey -= espeed;
        } else if (i == 1 && ey < 800) {
            ey += espeed;
        } else if (i == 2 && ex > 0) {
            ex -= espeed;
        } else if (i == 3 && ex < 1800) {
            ex += espeed;
        }
        g.fillRect(ex, ey, ewidth, eheight);
    }

}

猜你喜欢

转载自blog.csdn.net/eds124/article/details/82453326