Witam!
Mam program, w którym za pomocą strzałek i WSAD steruje się dwoma kwadratami. Niestety jeżeli jeden kwadracik się porusza to drugi już nie. Próbowałem to zrobić tak:
package gra;
import java.awt.*;
import java.awt.event.*;
import java.util.logging.*;
import java.util.*;
import javax.swing.*;
import java.awt.geom.*;
public class Main
{
public static void main(String[] args)
{
Gra ok = new Gra();
ok.setDefaultCloseOperation(3);
ok.setVisible(true);
}
}
class Gra extends JFrame implements KeyListener{
int szerEkranu, wysEkranu,spr=0,x1=100,y1=100,x2=200,y2=200;
Random generator = new Random();
String txt;
public Gra(){
super("Gra");
setLayout(new FlowLayout());
Toolkit zestaw = Toolkit.getDefaultToolkit();
Dimension rozmiarEkranu = zestaw.getScreenSize();
szerEkranu = rozmiarEkranu.width;
wysEkranu = rozmiarEkranu.height;
//Umieszczanie ramki
setBounds(szerEkranu / 4, wysEkranu / 4, szerEkranu / 2, wysEkranu / 2);
addKeyListener(this);
requestFocus( );
}
public void paint(Graphics g)
{
if(spr==0){
g.setColor(Color.BLACK);
g.fillRect(0, 0, szerEkranu/2, wysEkranu/2);
spr++;}
Graphics2D g3 = (Graphics2D)g;
Rectangle2D pros = new Rectangle2D.Double(x1,y1,10,10);
g3.setColor(Color.orange);
g3.fill(pros);
Rectangle2D pros2 = new Rectangle2D.Double(x2,y2,10,10);
g3.setColor(Color.blue);
g3.fill(pros2);
}
public void keyPressed(KeyEvent ke)
{
txt=KeyEvent.getKeyText(ke.getKeyCode());
pgracz pg = new pgracz();
dgracz dg = new dgracz();
pg.start();
dg.start();
}
public void keyTyped(KeyEvent ke){}
public void keyReleased(KeyEvent ke){}
public class pgracz extends Thread
{
public void run(){
if(txt.equalsIgnoreCase("Right"))
x1+=5;
if(txt.equalsIgnoreCase("Left"))
x1-=5;
if(txt.equalsIgnoreCase("Up"))
y1-=5;
if(txt.equalsIgnoreCase("Down"))
y1+=5;
repaint();
}
}
public class dgracz extends Thread
{
public void run(){
if(txt.equalsIgnoreCase("D"))
x2+=5;
if(txt.equalsIgnoreCase("A"))
x2-=5;
if(txt.equalsIgnoreCase("W"))
y2-=5;
if(txt.equalsIgnoreCase("S"))
y2+=5;
repaint();
}
}
}
Pomoże ktoś?