Bonjour ,je rencontre un probléme depuis la nuit dérniere enfaite je lance un thread qui contient un socket udp qui est censé recevoir des données d'un autre thread et celle d'une variable d' une classe , ainsi j essaye d'acceder a la position de mon personnage et de l'envoyer par paquet mais le seul probléme et que quand je modifie la position du personnage dans le jeu elle ne se modifie pas dans le Thread c' est comme si elle rester fixer .... voici mon code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
 
import javax.swing.JPanel;
 
//import Board.moves;
 
public class ClientReception extends JPanel implements Runnable 
{
  DatagramSocket socket;
 // byte[] result=new  byte [2];
  String res;
 
 
@Override
 
 
public void run() 
{
	   DatagramSocket serverSocket = null;
	   //this.addKeyListener(new moves());
		//this.setFocusable(true);
 
	try {
		serverSocket = new DatagramSocket(9876);
	} catch (SocketException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
 
       boolean bye=false;
       while(true) //instead of c i want to use true
      {
    	   int avcX=animation.board.p.getTileX();
    	   int avcY=animation.board.p.getTileY();;
        byte[] receivebuffer = new byte[1024];
        byte[] sendbuffer  = new byte[1024];
        DatagramPacket recvdpkt = new DatagramPacket(receivebuffer, receivebuffer.length);
        try {
			serverSocket.receive(recvdpkt);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
        InetAddress IP = recvdpkt.getAddress();
        int portno = recvdpkt.getPort();
        String clientdata = new String(recvdpkt.getData());
        String [] Parts = clientdata.split(" ");
        System.out.println("\nClient : "+ Parts[0]+" part2-> "+Parts[1]);
        System.out.print("\nServer : ");
        BufferedReader serverRead = new BufferedReader(new InputStreamReader (System.in) );
        String serverdata = Integer.toString(avcX);
        String s2 = Integer.toString(avcY);
        String res =avcX+" "+avcY;
        sendbuffer = res.getBytes();
        DatagramPacket sendPacket = new DatagramPacket(sendbuffer, sendbuffer.length, IP,portno);
        try {
			serverSocket.send(sendPacket);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
        //here the check condition for serverdata which must be bye
        if(serverdata.equalsIgnoreCase("bye"))
        {
            System.out.println("connection ended by server");
            break;
        }
 
        try {
			Thread.sleep(2000);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    }
      serverSocket.close();
 
}
en effet si je modifie la position dans le jeu elle est modifié dans ce dernier mais pas dans le thread se qui est problématique pour envoyer les réel position du joueur . TileX=1 et TileY=1 tous au long du thread j ai vraiment besoin d'aide en urgence merci de bien vouloir m'aider .