我正在用java awt编写游戏。我绘制了4个矩形,我想将它们从一个角移动到另一个角。就像我在四个角落有4个矩形,每个角都会对角线移动到另一个角落。我创建了4个但是我只能移动一个。请找下面的代码。请帮忙
import static java.awt.Color.black;
import static java.awt.Color.blue;
import static java.awt.Color.green;
import static java.awt.Color.red;
import static java.awt.Color.yellow;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.Polygon;
import java.awt.Shape;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.geom.Area;
import java.awt.geom.Ellipse2D;
import javax.swing.*;
public class Buddy extends JPanel implements ActionListener,KeyListener{
Timer t=new Timer(5,this);
double x=0,y=0,velX=2,velY=2;
//int h=300,w=300,velH=1,velW=1,h2=0,w2=320,h3=340,w3=0,velH2=1,velW2=1;
int h=0,w=0,velH=1,velW=1,h2=0,w2=0,h3=0,w3=0,velH2=1,velW2=1,h4=0,w4=0,velH3=1,velW3=1,velH4=1,velW4=1;
Ellipse2D circle;
Rectangle rect;
Rectangle rect2,rect3,rect4;
public Buddy()
{
t.start();
addKeyListener(this);
setFocusable(true);
setFocusTraversalKeysEnabled(false);
}
public boolean doAreasCollide(Area area1, Area area2) {
boolean collide = false;
Area collide1 = new Area(area1);
collide1.subtract(area2);
if (!collide1.equals(area1)) {
collide = true;
}
Area collide2 = new Area(area2);
collide2.subtract(area1);
if (!collide2.equals(area2)) {
collide = true;
}
return collide;
}
@Override
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2=(Graphics2D)g;
Graphics2D g3=(Graphics2D)g;
circle=new Ellipse2D.Double(x+150,y+150,40,40);
// Ellipse2D circle2=new Ellipse2D.Double(x,y,60,60);
g2.setPaint(yellow);
g2.fill(circle);
g2.setPaint(red);
rect = new Rectangle(h,w,80,80);
g2.fill(rect);
rect2 = new Rectangle(h2,w2+280,80,80);
rect3 = new Rectangle(h3+300,w3,80,80);
rect4 = new Rectangle(h4+310,w4+280,80,80);
g2.fill(rect2);
// g2.setPaint(blue);
g2.fill(rect3);
//g2.setPaint(red);
g2.fill(rect4);
//g2.setPaint(green);
t.start();
}
public void pause()
{
velX=0;
velY=0;
velH=0;
velW=0;
}
public void start()
{
velX=2;
velY=2;
velH=1;
velW=1;
}
@Override
public void actionPerformed(ActionEvent e) {
//x<0||x>560||x==h||x==w||
/* if(x<0||x>360)
{
velX=0;
}
if(y<0||y>360)
{
velY=-velY;
}
if(h<0||h>320)
{
velH=-velH;
}
if(w<0||w>320)
{
velW=-velW;
}
x+=velX;
y+=velY;
h-=velH;
w-=velW;
h2-=velH2;
w2-=velW2;*/
if(h<0||h>310)
{
velH=-velH;
}
if(w<0||w>310)
{
velW=-velW;
}
if(h2>0||h2<300)
{
velH2=-velH2;
}
if(w2>280||w2<0)
{
velW2=+velW2;
}
h+=velH;
w+=velW;
h2+=velH2;
w2-=velW2;
h3-=velH3;
w3+=velW3;
h4-=velH4;
w4-=velW4;
x+=velX;
y-=velY;
repaint();
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
int code=e.getKeyCode();
if(code==KeyEvent.VK_SPACE);
{
pause();
}
}
@Override
public void keyReleased(KeyEvent e) {
int code=e.getKeyCode();
if(code==KeyEvent.VK_0);
{
start();
}
}
}