No spodziewałem się troszkę bardziej szczegółowych odpowiedzi... Nie chodziło mi o stworzenie aplikacji klient serwer bo taka umiem zrobić. Chciałem jedynie się dowiedzieć jak przesłać kilka liczb typu int. Nie mogę przesłać tablicy int[].
Teraz chciałem Was jeszcze pomęczyć kolejnym problemem [green]
Oto kod prostej aplikacji. Jeśli moglibyście spojrzeć i powiedzieć czemu nie poruszają, ba nawet nie rysują sie kolejne zajaczki...? Bardzo proszę o odpowiedz.
W kodzie tym jest sporo śmieci (np do serwera, który nie jest wykorzystywany obecnie)
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import java.awt.geom.*;
public class Live4
{
private JFrame ramka_powitanie;
private JFrame ramka_polaczenie;
private PanelGraficzny panel_graficzny;
private JTextField tekst;
private JButton przycisk_wyslij;
private Socket gniazdo;
private PrintWriter pisarz;
private BufferedReader czytelnik;
//private int polozenie_x;
//private int polozenie_y;
private int x=0;
private int y=0;
private int dlugosc;
private int kierunek;
private int polozenieX;
private int polozenieY;
public int x1;
public int y1;
public int dl1;
public int kier1;
public static void main(String[] args)
{
new Live4().doDziela();
}
public void doDziela()
{
ramka_powitanie = new JFrame("Gra LIVE");
ramka_powitanie.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel_etykiety = new JPanel();
panel_etykiety.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
panel_etykiety.setLayout(new BoxLayout(panel_etykiety, BoxLayout.Y_AXIS));
JPanel panel_przyciski = new JPanel();
panel_przyciski.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
panel_przyciski.setLayout(new BoxLayout(panel_przyciski, BoxLayout.Y_AXIS));
Box pole_etykiet = new Box(BoxLayout.Y_AXIS);
Box pole_przyciskow = new Box(BoxLayout.X_AXIS);
Font czcionka = new Font("sanserif", Font.BOLD, 12);
JLabel etykieta1 = new JLabel("Witamy w grze LIVE");
etykieta1.setFont(czcionka);
pole_etykiet.add(etykieta1);
JLabel etykieta2 = new JLabel("Czy chcesz połączyć się z serwerem?");
etykieta2.setFont(czcionka);
pole_etykiet.add(etykieta2);
JButton przycisk_ok = new JButton("OK");
przycisk_ok.addActionListener(new okListener());
przycisk_ok.setToolTipText("OK :P");
pole_przyciskow.add(przycisk_ok);
JButton przycisk_cancel = new JButton("Cancel");
przycisk_cancel.addActionListener(new cancelListener());
pole_przyciskow.add(przycisk_cancel);
panel_etykiety.add(pole_etykiet);
panel_przyciski.add(pole_przyciskow);
ramka_powitanie.add(BorderLayout.CENTER, panel_etykiety);
ramka_powitanie.add(BorderLayout.SOUTH, panel_przyciski);
ramka_powitanie.setBounds(150, 150, 350, 150);
ramka_powitanie.setVisible(true);
}
public class okListener implements ActionListener
{
public void actionPerformed(ActionEvent zdarzenie)
{
glownyProgram();
}
}
public class cancelListener implements ActionListener
{
public void actionPerformed(ActionEvent zdarzenie)
{
System.exit(0);
}
}
public void glownyProgram()
{
ramka_powitanie.setVisible(false);
ramka_polaczenie = new JFrame("Gra LIVE");
ramka_polaczenie.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel_glowny = new JPanel();
panel_glowny.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
Font czcionka = new Font("sanserif", Font.BOLD, 13);
tekst = new JTextField(30);
tekst.setFont(czcionka);
przycisk_wyslij = new JButton("Wyslij");
przycisk_wyslij.addActionListener(new wyslijListener());
panel_glowny.add(tekst);
panel_glowny.add(przycisk_wyslij);
panel_graficzny = new PanelGraficzny();
new Thread(panel_graficzny).start();
polacz();
Thread watekPrzes = new Thread(new zmianaPolozenia());
watekPrzes.start();
//Thread watekOdbiorcy = new Thread(new odbiorcaKomunikatow());
//watekOdbiorcy.start();
ramka_polaczenie.getContentPane().add(BorderLayout.CENTER, panel_graficzny);
ramka_polaczenie.getContentPane().add(BorderLayout.SOUTH, panel_glowny);
ramka_polaczenie.setBounds(10, 10, 1000, 700);
ramka_polaczenie.setVisible(true);
}
public class wyslijListener implements ActionListener
{
public void actionPerformed(ActionEvent zdarzenie)
{
//Thread watekNadawcy = new Thread(new nadawcaKomunikatow());
//watekNadawcy.start();
}
}
class PanelGraficzny extends JPanel implements Runnable
{
Zajac[] zajaczki = new Zajac[10];
public PanelGraficzny()
{
initZajaczki();
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
g2.setPaint(Color.green);
Rectangle2D bg = new Rectangle2D.Double(0, 0, this.getWidth(), this.getHeight());
g2.fill(bg);
g2.draw(bg);
for (int i = 0; i < zajaczki.length; i++)
{
//zajaczki[i].zmiana();
g2.setPaint(zajaczki[i].getColor());
Ellipse2D zaj = new Ellipse2D.Double(zajaczki[i].getX(), zajaczki[i].getY(), 20, 20);
g2.fill(zaj);
g2.draw(zaj);
}
}
public void run()
{
try
{
while (true)
{
Thread.sleep(50);
repaint();
}
}
catch (Exception e)
{
System.out.println("blad w painComponent_run");
}
}
public void initZajaczki()
{
zajaczki[0] = new Zajac(Color.magenta, get_polozenieX(), get_polozenieY());
zajaczki[1] = new Zajac(Color.blue, 80, 400);
zajaczki[2] = new Zajac(Color.black, 20, 550);
zajaczki[3] = new Zajac(Color.yellow, 20, 150);
zajaczki[4] = new Zajac(Color.pink, 20, 20);
zajaczki[5] = new Zajac(Color.blue, 20, 250);
zajaczki[6] = new Zajac(Color.gray, 20, 300);
zajaczki[7] = new Zajac(Color.white, 20, 500);
zajaczki[8] = new Zajac(Color.red, 20, 200);
zajaczki[9] = new Zajac(Color.orange, 970, 490);
}
class Zajac
{
private Color color;
public Zajac(Color kolor, int wsp_x, int wsp_y)
{
this.color = kolor;
x1 = wsp_x;
y1 = wsp_y;
}
public int getX()
{
return x1;
}
public int getY()
{
return y1;
}
public Color getColor()
{
return color;
}
}
}
private int get_polozenieX()
{
return polozenieX = (int)(30 + Math.random() * 920);
}
private int get_polozenieY()
{
return polozenieY = (int)(30 + Math.random() * 550);
}
private int get_dlugosc()
{
return dlugosc = (int)(Math.random() * 100);
}
private int get_kierunek()
{
return kierunek = (int)(Math.random() * 8);
}
public int getDl()
{
return dl1 = (int)(Math.random() * 100);
}
public int getKier()
{
return kier1 = (int)(Math.random() * 8);
}
public void wyborKierunku()
{
if (kier1 == 0)
{
x1++;
y1++;
}
if (kier1 == 1)
{
x1--;
y1--;
}
if (kier1 == 2)
{
x1--;
y1++;
}
if (kier1 == 3)
{
x1++;
y1--;
}
if (kier1 == 4)
{
x1++;
}
if (kier1 == 5)
{
x1--;
}
if (kier1 == 6)
{
y1++;
}
if (kier1 == 7)
{
y1--;
}
}
private void polacz()
{
try
{
gniazdo = new Socket("127.0.0.1", 5000);
InputStreamReader czytelnikStrumien = new InputStreamReader(gniazdo.getInputStream());
czytelnik = new BufferedReader(czytelnikStrumien);
pisarz = new PrintWriter(gniazdo.getOutputStream());
System.out.println("polaczenie dziala");
}
catch (IOException ex)
{
//ex.printStackTrace();
System.out.println("polaczenie nieudane!");
}
}
public class odbiorcaKomunikatow implements Runnable
{
public void run()
{
String wiadomosc;
try
{
while ((wiadomosc = czytelnik.readLine()) != null)
{
System.out.println("Odczytano: " + wiadomosc);
}
}
catch (Exception ex)
{
//ex.printStackTrace();
System.out.println("blad w odbiorcy komunikatow!");
}
}
}
public class nadawcaKomunikatow implements Runnable
{
public void run()
{
try
{
pisarz.println(tekst.getText());
System.out.println("Wyslany tekst: " + tekst.getText());
pisarz.flush();
}
catch (Exception ex)
{
System.out.println("blad w nadawcy...");
//ex.printStackTrace();
}
tekst.setText("");
tekst.requestFocus();
}
}
public class zmianaPolozenia implements Runnable
{
public void run()
{
try
{
while (true)
{
getKier();
getDl();
System.out.println("kier1 - " + kier1);
System.out.println("dl1 - " + dl1);
for (int j = 0; j < dl1; j++)
{
wyborKierunku();
if (x1 < 10)
{
for (int i = 0; i < dl1 * 2; i++)
{
x1++;
przerysowanie();
}
break;
}
if (x1 > 970)
{
for (int i = 0; i < dl1 * 2; i++)
{
x1--;
przerysowanie();
}
break;
}
if (y1 < 10)
{
for (int i = 0; i < dl1 * 2; i++)
{
y1++;
przerysowanie();
}
break;
}
if (y1 > 590)
{
for (int i = 0; i < dl1 * 2; i++)
{
y1--;
przerysowanie();
}
break;
}
else
{
przerysowanie();
}
}
}
}
catch (Exception ex)
{
System.out.println("blad w zmianie polozenia");
//ex.printStackTrace();
}
}
}
public void przerysowanie()
{
try
{
panel_graficzny.repaint();
Thread.sleep(40);
}
catch (Exception ex)
{
System.out.println("blad w rysowaniu");
//ex.printStackTrace();
}
}
}