Wątki

0

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ś?

1 użytkowników online, w tym zalogowanych: 0, gości: 1