debut debut
This commit is contained in:
51
src/Ex6/Client.java
Normal file
51
src/Ex6/Client.java
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
package Ex6;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.net.Socket;
|
||||||
|
|
||||||
|
import Ex6.packets.EndGamePacket;
|
||||||
|
import Ex6.packets.InvalidMovePacket;
|
||||||
|
import Ex6.packets.LeavePacket;
|
||||||
|
import Ex6.packets.NewGamePacket;
|
||||||
|
import Ex6.packets.PlayMovePacket;
|
||||||
|
import Ex6.packets.PlayerMovePacket;
|
||||||
|
|
||||||
|
public class Client extends Connexion {
|
||||||
|
|
||||||
|
public Client(Socket socket) throws IOException {
|
||||||
|
super(socket);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void visit(EndGamePacket packet) {
|
||||||
|
System.out.println("Jeu terminé !");
|
||||||
|
// TODO: afficher vainqueur
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void visit(InvalidMovePacket packet) {
|
||||||
|
System.out.println("Coups non autorisé !");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void visit(NewGamePacket packet) {
|
||||||
|
System.out.println("Nouvelle partie !");
|
||||||
|
// TODO: afficher tour
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void visit(PlayerMovePacket packet) {
|
||||||
|
// TODO: afficher plateau
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void visit(LeavePacket packet) {
|
||||||
|
throw new UnsupportedOperationException("Unimplemented method 'visit'");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void visit(PlayMovePacket packet) {
|
||||||
|
throw new UnsupportedOperationException("Unimplemented method 'visit'");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
46
src/Ex6/Connexion.java
Normal file
46
src/Ex6/Connexion.java
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
package Ex6;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.ObjectInputStream;
|
||||||
|
import java.io.ObjectOutputStream;
|
||||||
|
import java.net.Socket;
|
||||||
|
|
||||||
|
public abstract class Connexion implements PacketVisitor {
|
||||||
|
|
||||||
|
private final Socket socket;
|
||||||
|
private final ObjectOutputStream out;
|
||||||
|
private final ObjectInputStream in;
|
||||||
|
|
||||||
|
public Connexion(Socket socket) throws IOException {
|
||||||
|
this.socket = socket;
|
||||||
|
this.out = new ObjectOutputStream(this.socket.getOutputStream());
|
||||||
|
this.in = new ObjectInputStream(this.socket.getInputStream());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void sendPacket(Packet packet) {
|
||||||
|
try {
|
||||||
|
out.writeObject(packet);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private Packet readPacket() throws ClassNotFoundException, IOException {
|
||||||
|
Object o = in.readObject();
|
||||||
|
Packet packet = (Packet) o;
|
||||||
|
return packet;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void processPacket() throws ClassNotFoundException, IOException {
|
||||||
|
Packet packet = readPacket();
|
||||||
|
packet.accept(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void close() {
|
||||||
|
try {
|
||||||
|
this.socket.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
60
src/Ex6/Joueur.java
Normal file
60
src/Ex6/Joueur.java
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
package Ex6;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.net.Socket;
|
||||||
|
|
||||||
|
import Ex6.packets.EndGamePacket;
|
||||||
|
import Ex6.packets.InvalidMovePacket;
|
||||||
|
import Ex6.packets.LeavePacket;
|
||||||
|
import Ex6.packets.NewGamePacket;
|
||||||
|
import Ex6.packets.PlayMovePacket;
|
||||||
|
import Ex6.packets.PlayerMovePacket;
|
||||||
|
|
||||||
|
public class Joueur extends Connexion {
|
||||||
|
|
||||||
|
public Joueur(Socket socket) throws IOException {
|
||||||
|
super(socket);
|
||||||
|
new Thread(this::readPackets).start();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void readPackets() {
|
||||||
|
while (true) {
|
||||||
|
try {
|
||||||
|
processPacket();
|
||||||
|
} catch (ClassNotFoundException | IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void visit(LeavePacket packet) {
|
||||||
|
close();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void visit(PlayMovePacket packet) {
|
||||||
|
//TODO: vérifier coups
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void visit(EndGamePacket packet) {
|
||||||
|
throw new UnsupportedOperationException("Unimplemented method 'visit'");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void visit(InvalidMovePacket packet) {
|
||||||
|
throw new UnsupportedOperationException("Unimplemented method 'visit'");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void visit(NewGamePacket packet) {
|
||||||
|
throw new UnsupportedOperationException("Unimplemented method 'visit'");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void visit(PlayerMovePacket packet) {
|
||||||
|
throw new UnsupportedOperationException("Unimplemented method 'visit'");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
5
src/Ex6/Packet.java
Normal file
5
src/Ex6/Packet.java
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
package Ex6;
|
||||||
|
|
||||||
|
public abstract class Packet {
|
||||||
|
public abstract void accept(PacketVisitor visitor);
|
||||||
|
}
|
||||||
22
src/Ex6/PacketVisitor.java
Normal file
22
src/Ex6/PacketVisitor.java
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
package Ex6;
|
||||||
|
|
||||||
|
import Ex6.packets.EndGamePacket;
|
||||||
|
import Ex6.packets.InvalidMovePacket;
|
||||||
|
import Ex6.packets.LeavePacket;
|
||||||
|
import Ex6.packets.NewGamePacket;
|
||||||
|
import Ex6.packets.PlayMovePacket;
|
||||||
|
import Ex6.packets.PlayerMovePacket;
|
||||||
|
|
||||||
|
public interface PacketVisitor {
|
||||||
|
void visit(EndGamePacket packet);
|
||||||
|
|
||||||
|
void visit(InvalidMovePacket packet);
|
||||||
|
|
||||||
|
void visit(LeavePacket packet);
|
||||||
|
|
||||||
|
void visit(NewGamePacket packet);
|
||||||
|
|
||||||
|
void visit(PlayerMovePacket packet);
|
||||||
|
|
||||||
|
void visit(PlayMovePacket packet);
|
||||||
|
}
|
||||||
29
src/Ex6/packets/EndGamePacket.java
Normal file
29
src/Ex6/packets/EndGamePacket.java
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
package Ex6.packets;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
import Ex6.Packet;
|
||||||
|
import Ex6.PacketVisitor;
|
||||||
|
import Ex6.Jeu.EtatCase;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Packet envoyé pour annoncer la fin de la partie
|
||||||
|
*/
|
||||||
|
public class EndGamePacket extends Packet implements Serializable{
|
||||||
|
|
||||||
|
private final EtatCase vainqueur;
|
||||||
|
|
||||||
|
public EndGamePacket(EtatCase vainqueur) {
|
||||||
|
this.vainqueur = vainqueur;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void accept(PacketVisitor visitor) {
|
||||||
|
visitor.visit(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public EtatCase getVainqueur() {
|
||||||
|
return vainqueur;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
16
src/Ex6/packets/InvalidMovePacket.java
Normal file
16
src/Ex6/packets/InvalidMovePacket.java
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
package Ex6.packets;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
import Ex6.Packet;
|
||||||
|
import Ex6.PacketVisitor;
|
||||||
|
|
||||||
|
public class InvalidMovePacket extends Packet implements Serializable {
|
||||||
|
public InvalidMovePacket() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void accept(PacketVisitor visitor) {
|
||||||
|
visitor.visit(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
16
src/Ex6/packets/LeavePacket.java
Normal file
16
src/Ex6/packets/LeavePacket.java
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
package Ex6.packets;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
import Ex6.Packet;
|
||||||
|
import Ex6.PacketVisitor;
|
||||||
|
|
||||||
|
public class LeavePacket extends Packet implements Serializable{
|
||||||
|
public LeavePacket() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void accept(PacketVisitor visitor) {
|
||||||
|
visitor.visit(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
25
src/Ex6/packets/NewGamePacket.java
Normal file
25
src/Ex6/packets/NewGamePacket.java
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
package Ex6.packets;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
import Ex6.Packet;
|
||||||
|
import Ex6.PacketVisitor;
|
||||||
|
|
||||||
|
public class NewGamePacket extends Packet implements Serializable{
|
||||||
|
|
||||||
|
private final boolean rond;
|
||||||
|
|
||||||
|
public NewGamePacket(boolean rond) {
|
||||||
|
this.rond = rond;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void accept(PacketVisitor visitor) {
|
||||||
|
visitor.visit(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isRond() {
|
||||||
|
return rond;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
24
src/Ex6/packets/PlayMovePacket.java
Normal file
24
src/Ex6/packets/PlayMovePacket.java
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
package Ex6.packets;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
import Ex6.Packet;
|
||||||
|
import Ex6.PacketVisitor;
|
||||||
|
|
||||||
|
public class PlayMovePacket extends Packet implements Serializable{
|
||||||
|
|
||||||
|
private final int cellIndex;
|
||||||
|
|
||||||
|
public PlayMovePacket(int cellIndex) {
|
||||||
|
this.cellIndex = cellIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void accept(PacketVisitor visitor) {
|
||||||
|
visitor.visit(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getCellIndex() {
|
||||||
|
return cellIndex;
|
||||||
|
}
|
||||||
|
}
|
||||||
29
src/Ex6/packets/PlayerMovePacket.java
Normal file
29
src/Ex6/packets/PlayerMovePacket.java
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
package Ex6.packets;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
import Ex6.Packet;
|
||||||
|
import Ex6.PacketVisitor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Packet envoyé par le serveur pour confirmer un coup et changer le
|
||||||
|
* tour.
|
||||||
|
*/
|
||||||
|
public class PlayerMovePacket extends Packet implements Serializable {
|
||||||
|
|
||||||
|
private final int cellIndex;
|
||||||
|
|
||||||
|
public PlayerMovePacket(int cellIndex) {
|
||||||
|
this.cellIndex = cellIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void accept(PacketVisitor visitor) {
|
||||||
|
visitor.visit(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getCellIndex() {
|
||||||
|
return cellIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user