From 72f481a4a56361b0b8583339bc672df7f0bea0ba Mon Sep 17 00:00:00 2001 From: marc barbier Date: Wed, 9 Dec 2020 13:02:27 +0100 Subject: [PATCH] passage du projet en eclipse compatible + ajout de ping + ajout de timeout + ajout verification client --- .classpath | 10 ++++ .gitignore | 1 + .project | 17 +++++++ bin/Serveur.class | Bin 0 -> 1907 bytes bin/game/ComsJoueur.class | Bin 0 -> 1849 bytes bin/game/DeckRegistery.class | Bin 0 -> 500 bytes bin/game/DeckSerializer.class | Bin 0 -> 1316 bytes bin/game/Hand.class | Bin 0 -> 336 bytes bin/game/Joueur.class | Bin 0 -> 1930 bytes bin/game/Match.class | Bin 0 -> 2268 bytes bin/game/PlayerTesteur.class | Bin 0 -> 1266 bytes bin/game/SimpleUDP.class | Bin 0 -> 1386 bytes bin/game/cards/Card.class | Bin 0 -> 668 bytes bin/game/cards/CardRegistery.class | Bin 0 -> 1020 bytes bin/game/cards/DemoCard.class | Bin 0 -> 486 bytes bin/game/cards/DemoCard2.class | Bin 0 -> 487 bytes bin/game/deck/Deck.class | Bin 0 -> 643 bytes bin/game/deck/DemoDeck.class | Bin 0 -> 954 bytes src/Serveur.java | 77 ++++++++++++++++++++++++++++ src/game/ComsJoueur.java | 47 +++++++++++++++++ src/game/DeckRegistery.java | 14 ++++++ src/game/DeckSerializer.java | 22 ++++++++ src/game/Hand.java | 10 ++++ src/game/Joueur.java | 67 +++++++++++++++++++++++++ src/game/Match.java | 78 +++++++++++++++++++++++++++++ src/game/PlayerTesteur.java | 41 +++++++++++++++ src/game/SimpleUDP.java | 35 +++++++++++++ src/game/cards/Card.java | 28 +++++++++++ src/game/cards/CardRegistery.java | 26 ++++++++++ src/game/cards/DemoCard.java | 22 ++++++++ src/game/cards/DemoCard2.java | 24 +++++++++ src/game/deck/Deck.java | 25 +++++++++ src/game/deck/DemoDeck.java | 33 ++++++++++++ 33 files changed, 577 insertions(+) create mode 100644 .classpath create mode 100644 .gitignore create mode 100644 .project create mode 100644 bin/Serveur.class create mode 100644 bin/game/ComsJoueur.class create mode 100644 bin/game/DeckRegistery.class create mode 100644 bin/game/DeckSerializer.class create mode 100644 bin/game/Hand.class create mode 100644 bin/game/Joueur.class create mode 100644 bin/game/Match.class create mode 100644 bin/game/PlayerTesteur.class create mode 100644 bin/game/SimpleUDP.class create mode 100644 bin/game/cards/Card.class create mode 100644 bin/game/cards/CardRegistery.class create mode 100644 bin/game/cards/DemoCard.class create mode 100644 bin/game/cards/DemoCard2.class create mode 100644 bin/game/deck/Deck.class create mode 100644 bin/game/deck/DemoDeck.class create mode 100644 src/Serveur.java create mode 100644 src/game/ComsJoueur.java create mode 100644 src/game/DeckRegistery.java create mode 100644 src/game/DeckSerializer.java create mode 100644 src/game/Hand.java create mode 100644 src/game/Joueur.java create mode 100644 src/game/Match.java create mode 100644 src/game/PlayerTesteur.java create mode 100644 src/game/SimpleUDP.java create mode 100644 src/game/cards/Card.java create mode 100644 src/game/cards/CardRegistery.java create mode 100644 src/game/cards/DemoCard.java create mode 100644 src/game/cards/DemoCard2.java create mode 100644 src/game/deck/Deck.java create mode 100644 src/game/deck/DemoDeck.java diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..d54800d --- /dev/null +++ b/.classpath @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5e83119 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.settings diff --git a/.project b/.project new file mode 100644 index 0000000..2494fc7 --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + Pts3Serveur + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/bin/Serveur.class b/bin/Serveur.class new file mode 100644 index 0000000000000000000000000000000000000000..87534d2d10f98f5c22f4553836b1d4f5ef65e8b7 GIT binary patch literal 1907 zcmZuy?N3`(82=q;xuq)%%G>Ik-symry;NT2Tp4b_VAS!Zh3Yn)UT%-1eLx+ZTfz|_gnxNra&XuK71g8+A zsYU6HtWFyRde{>`=Ec1$WxPsxFpMZpt59DRI2})?k4Gi43inzBuR|Azl%$t&=B$Er z%49GQPbaeVcmwA&ym^G<%xcM#g$O#)MSi90GQ_+ zUfRoyTQFSd>R~Id%aW%TU1vdMpdf8eUm%mqJL^QddfC>EG7T$) zNruWaV7NwpXFZ>1ZhLS+!+C)gpUtD5L~s$8STsfDT%Or$JB~^}+P5O;_2VK5A@uvS zu+m(e5#?4DUza0z8&_CjhH1(onQDnA4*A_nE=9PCs^lW zUnwdq$JQ`im4fulfq(^NxQpzimSg&cLe(v*34QB+D_44ovZCWsCemyNZ*GMDt$$YYh-VANmhA5VN)e3WA?D;F)}t*bCsn%LJwelRWLzlL&h`A)2o3_!q zg;%C8Hsha7oLNIlDzJveRNyhrM!PqW*m#U&w2udo3W!uN7Wfmfi<=lwh-CB~3f2%x z)lnJ??u&v-lsXhq>&5P0vEYl{omgNS*M3A-Ea>m2o?;|M%`MziI=7V0?$3N@ZTAP7 zT-$w=s#AirFZh;$s9DsB+y35zDNG=XJKRlt0gwAbY~T;>wWI}jgmYXQ_|-@XnyAHz zh!)yt<)~=G1+CF-L#&-G?7`H$33F&6KxW0p^xwNV})9) z{5yJxtN0Ene2+o=glqVPR({2G{DxutPD>jY$0ly!8M^#reeQer95a}uf3>`SA0PPX zdV&n*nEiTeW1jEU^3{5Lh>sAUSKlz!yF88JYx;ASeB2}AV@m7j%l>H-p~~GSv_60n ry9_6w;l74Xg+>av+`g${D*P`RG#LEN^DE#lmx5zF(-)JvHOT!B7d_7k literal 0 HcmV?d00001 diff --git a/bin/game/ComsJoueur.class b/bin/game/ComsJoueur.class new file mode 100644 index 0000000000000000000000000000000000000000..0b7f0a140f3fde62bcfc7bbad7e958649c83e9dd GIT binary patch literal 1849 zcmZuxYf~IW6g>?K!)_)EERYZgVL~)4kAU$RB^nXIkZf3FlU3AchS@HhWOoMVLCjz9 zpX3`_2CB5mvML{}@(=kH(L4oe_Ox?hcz}RtoT7*usfDxQGaE<~bK^jz|;3_-Y%thb2p}=6} z)R?f%1;_V1&Ia3~0#3=ufLtiOhQLThM;j-0SBdt9i8paw;LOv&jpXs9_4?V!mC~I0 zIRPV(jw|=cclcNeJwWO3o{1&gAVJP!Bh8w}`?zI*qo$2^?O7PfmWdCs%%PD%K(1}& zHUrl?9_c=;2s~Qd+FE_EWyPMfoTeRy((-)IiUL30fBD?9t(VUuNz?X1x8>41Z^#Fmzh(`)d7NENO=pZ;R{gT6S#h`C;f%@d8%yiGek3&NUJyZeyM0?c$B}`mfR*$ok!nS;-|(X~KlU2hMG_QsO4I!R!_ z{@Ge&J5TP}d)e?5pW1G;>@~L1mKAsd>Ly>F8wNf<*@;99J~Dxf;=rrhO*M`k##wm+ zJxI;;AWLOtw`M<aIW+CU>1~%>*%qwue&8wR6D$X9_ z!SDENyYk0Bf6X26M2eo)dX=Z9wOWg9v>t5ZiwvWiU;a1_OnS1B%iO1vO{AKK_$pQ5 e>yD6b~evNu9Bv^_mk7QT^-_Yv9qkjQL#h$bP literal 0 HcmV?d00001 diff --git a/bin/game/DeckRegistery.class b/bin/game/DeckRegistery.class new file mode 100644 index 0000000000000000000000000000000000000000..043405d5654901ced2f2c1919f1e7c9a3e267ab8 GIT binary patch literal 500 zcmZWlO;5r=5Pe%dN()*<#P5TN2jF0j9#AhD6O%?0F&K_Z*_4HTB&C@6uk<2`CjJ0_ zlySDjDB&`*GxPSnH}m!V{t4g|hdMNdn#TiSUkP_|FFZL-MEtBH&rlunCvN*Z^z6IA zShxv8@l1v?xnRgOTRn#SWi%8faxf|=pvYi3G8DJ7U?AcLKJW#RJCV!%9*?D}7tMS! zl2eAdv#Q)7ZcmWZant$J?Uc)=1xYI73}7_?AGr%q#4X^G>ctvEz`A@&UK>TI09+VT>*_=bPtL;RW@Zt zxzL`Y^qP)MifXK4nPMdaP+p_Tz&b4IsL$s_rct)qedi6;#}736bL_lOOM{{@)3HI| R@;@pIyV#>C!+wf9_yL^XW_ADo literal 0 HcmV?d00001 diff --git a/bin/game/DeckSerializer.class b/bin/game/DeckSerializer.class new file mode 100644 index 0000000000000000000000000000000000000000..67755f3a7c43dd46f462c73eff90491cfea98edb GIT binary patch literal 1316 zcmZ`&TT@a|6#h1%NAaj2UNXCA8G)d5x56whSrkG=LsM@@*x^wG=WuYEeoB9!*Ls02 zGfmIE_jj^yAC8D*b7uBFYwdOU*0V&{R^$>_cB`_0i8Wt!yKogPF5w@&tndM?a zLqK4>Q@v6%O9g595X7j45rIJ`Wh;`7F^miJ7NxyvSOtO#hTY&b+bqSiwvpdS_%MM< z4X0V4li=t{#~GX@5mmD0u#)t_kMoL-DXPQCNKQFl&~Xtn%wyWpGVF>aFm^0Y($y#W z5kgqQWioe^>hM)Z1hWiVmhae%k;4dWEg}suqI8PPtAgUHEFYqn*Ad4RLa-}M#ySJI zJo<1AH#A&7*8k?4j+?k8pzRx_n#{Zv2!-4F(43KzTB9hrtth#}p0~TWDI>XFu#R*|PhDb8E)?w)O+_cMPy@bOg7>g?yKHw}0XQ0l`V zhNw}_4S4whneXtwo~>iJj#J%R4V+6gh3WK1gy+8ElE6#~ITy0=s_--AG zbv)qtibl%<9}a#;srbZ@T@H*fB2_5^ltKis%=-xeC|FZYJsCX2I;8+-;t?JbSO}9y z(#nIU)Q`Y(zzy_j2x@G+#%IhhVhS5>5i#DXSdUP7+shBOmG40s8NLfVbF7~K1v_>u Ai~s-t literal 0 HcmV?d00001 diff --git a/bin/game/Hand.class b/bin/game/Hand.class new file mode 100644 index 0000000000000000000000000000000000000000..292260f7d7a0755d57c444b949510adb5695f8f5 GIT binary patch literal 336 zcmZ8cyH3ME5S(?KICcUF57E;F3S1!y5DgMaBnt{q`m=os7df_M9QZCOBnm!&k3!5k zQ3{HkxqZy;+|TdVH-IY~2k->p!mMmOHDw;a7mSzY&BTQ%7x81dv{@tQ-MG>yIL1s6Jyq*Ev-eJyh3f4>ZQ&F&LGOUa7mpJIW-(dF-SbcMKiYOg)HWy>5Qm!q j@*Xq6K1M_pUot$c{TKFI;mM}C6{>WM10sLf3XlE(sWdXi literal 0 HcmV?d00001 diff --git a/bin/game/Joueur.class b/bin/game/Joueur.class new file mode 100644 index 0000000000000000000000000000000000000000..9c5af31d60c8965c6404e19f477bd7ebfc2b0dad GIT binary patch literal 1930 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 literal 0 HcmV?d00001 diff --git a/bin/game/SimpleUDP.class b/bin/game/SimpleUDP.class new file mode 100644 index 0000000000000000000000000000000000000000..76c42d4d5028db6c75943b63ecd82815e2b6395d GIT binary patch literal 1386 zcmZuxX;T_O6zl=w#?5+Ps4+@Tz=PZ-(H!Cx5>yhDD$7p`jJPUCEsK?(l}oLPRsMkd zs8o7(5is!sGdnZyb@%Ie!|y-8&H>C~OM_3KvtSlwENvAlhjMEvr6C~Dy>A|wu|u;| zh;3x|WzG@sXKT9xzMZ&$URz3~rF|r8w!m=GjV(zhwq!bH!8VKOa_&Gna{`)~&)c$E z6&P$rB^bKk?K31$DceLB34ykGt7JKE1g68y=zlPq2X&H2h8Tu zw+s>|RLpGyH(-!3X_e%9t(cYerkOpI0=>y{&OFSRwx!nf&49CK(WLI=<*T4Qde*E; zPpm*sQ&huZy(&xjl&K6C7^oZPUR>I-tx{o58Kf_N$;pail}l9((*k|24^}yr*l3(+ zhzSfe47%{$gH|;?GH?xTI%e=h+5A*sEW8s>G&Qvvm55|?JjV+Svsa;B*#8o*czvn_ z`g+B!d+crvT9J)p7F-Kmm90gxc`9`euIR@)ihyCuoOL9e%fpJyfB0*Jw zUM0&0R+Lzc5Rw=g-d}nqp4%$%AQN5JW%ja(BW5 z!9CpPif}HuaK9cPOay@lqMRqW7vO5jr9YrlMISoD%y#rA9;)9thtcl{o#OEtKl`ZU zSyM(Y(-pxG$%7an^=ONPP(wlpbC@SlkYZosjVs|T-u)+Gmu2~g7`-In6bnhkJ$Ztq tGpufNPWU;jog(#>(ViupuK00UF+oKkSI3}-R@c$PeZ|f{Go;PorKXC+a^j54P-7!|f&@KP*HAOPv{@CPUs6>PRW>{!T*Lsq#&5U!5^5sIaRd z8F)lkt9SmPr)tx{DnofzJ|0ScAR-es3YvD!!aJ;!8)db89uvySe{PA`H1QrA20k!U zW;lNePsU0_*A_OhMWAG)iKc*3i+Wp!ezfojpXuxI%S#aq7^=1QYxoHz#oE}lu!0hU zp$Ws7%*}2%j9hUd^%(Mcdi(k{Gh3i|y0SFqEOiPW>V8yLmnq@H(e~gd5 z_@X}4YT~PjzsVTS?AAcB-DGy=yPfYlXXe+RZ$ALs!(AOAfu*+W+E!D#t$|hL|B2mp z2A=JXbZ7z#2l9=yIDiBm-G=Qxm5mN@6SaO* zcJ`&~DEq{zd9R#-z;f+8K5V6_PC8No$?@P1Tvv|N^ahfMMIms(#0(-jE;4Td?V;W6 zD~0Be#bq6r1ma^91z;kFE94qu^iEUBJve$Jd}=c zBZNve^d5Tl1GMl*W@tnNmtvhFR+`T;<6~z61gzsGV@cxP!Uic=v;uND#%|Nve*_)h-h6*VK2jEbM z*~Ez~L_sq@Z}yuv`}Mv01aOIg3yaX7icE%yC?;iiE3-V}%7sJd)CNW*G>2-g^fkdg zJ{b|5D4$3lHoO20G?|FiTs|(cu`Hg&IF*E6oF^h3i9(sa5*)DECsNdPZ=08s()X_)qzwNaUR|My>6Fix;sJI0Cc$Nxnr~=V-<(VxMDB)d5=E5!&c*H1IiR^Um)2Z=C9=S3_-Hu|d24LEC?#2Rrnv Sa<%N=rh^)3?M!>?)A~P1A4Q1( literal 0 HcmV?d00001 diff --git a/bin/game/cards/DemoCard2.class b/bin/game/cards/DemoCard2.class new file mode 100644 index 0000000000000000000000000000000000000000..24e117eb0c8b025687073ff47723e97b6a426da1 GIT binary patch literal 487 zcma)%&rZTX5XQf03x$fHh~B-aF*fnyL1JQR2quje4fmyNV6|nFcJZmacrxMO1Ncye zSs+ah9JqYn{Mp~k?BDHGgT1I;>v<@^*y0E zmFCeHk$kK-J#Q*QDN-{d_}q%SLBML;VBmnYwRymP$Qh4Dht>hwA|(z7Bp!lC z;R1*QCr-Q)0x`})Tg1Wk=g;Gr@%a0%FJA%dW824^z(OX^RWwoQS#-q7hbPcKm2YHZ zWS&JY$EPZ_J~{%cO;;CDqDn1|ek;dD5nMIfkt!=)+`WHU(FPj<06%2B&kZp zKTXe0bw%~~U;hJvZl>%|mJ^)L7)C03?q1oRS}<3z&-mKO}e~~ znLeZa>!Qg#v8B#4Y6eMBm#KQDUCuoRf9#aJO?qf?v^h55qsz6&Kb=DWk2Q1TyuePx zRd8+ZeZu002C~Gt(=>ZnW*yD|SivgX=ksOk+-R^jS*>4?J>kxgb@x7E<1=nw@&%Lz W`n0lig|mCXxrqln7kJpPZv6(-jECm{ literal 0 HcmV?d00001 diff --git a/bin/game/deck/DemoDeck.class b/bin/game/deck/DemoDeck.class new file mode 100644 index 0000000000000000000000000000000000000000..6d92c621c097597f6f501508bde6f37dd8c6f238 GIT binary patch literal 954 zcmZuw%Wl&^6g?BCapJ~#r#u2JEu|!Z)--@vq-qzf5S7xh2r7cz)Ui@GFJv6PfPY|z z#HtH6AOS^G;se<53w#OXc$}gTYRlu9<2m=-bMN@a?{D7$JivV&5rJG=_8hC_*d1%j z=?%6x(Ge9$jpKGlV9J(W>!m=paVTF&Yv{XOtLaO-Qx`}y-F9F4L(dUdoczAlP@xpv z+GLRWIw`R=x9|Gv0$RDUClK8nv>XE(%p?*pbfg8+6G8@3FcVMbzB!HoD-#HU;!p`Z@7JDci7u^yeD$M%ev$m16y|Yq~`|f5g7Fk zT-LM@mgt`@utvh=vn^n%I`7CABUZfa_(95K=F64IdXu>HKYD%_rWq+{`7RFu(>S9k zvrXS~`|WxhHG%lq*$^4?D!S&RGO;qC6!qI8GCJ zk0?=KyLyad^#rMB$H;s}R$Dv5>R03oxb)^Niq%iZo}k2!SHEEP=@D`vvOr`pKwb+` z%GBPS{`|;b8g6i$RgxwJ(!4V~BRSkb9vhrLLJ>>cGZTvACdyo8`7cyZWooy$${>15 zQbdQKi&82={5F=!2(7Fr0~S$bGDzqHX%QtJI0h~&kz}}GBqCrjjnMrv-@!gDw>n9k N8>4D}sdtsYy+6;8zk&b& literal 0 HcmV?d00001 diff --git a/src/Serveur.java b/src/Serveur.java new file mode 100644 index 0000000..1648a99 --- /dev/null +++ b/src/Serveur.java @@ -0,0 +1,77 @@ +import java.io.IOException; +import java.net.InetAddress; +import java.net.ServerSocket; +import java.net.Socket; +import java.net.UnknownHostException; + +import game.Match; +import game.PlayerTesteur; + +public class Serveur { + + public static void main(String[] args) { + final String host = "localhost"; + final int port = 10430; + + ServerSocket tCPserver = null; + try { + tCPserver = new ServerSocket(port, 50, InetAddress.getByName(host)); + tCPserver.setSoTimeout(250);// 250 de ping max + } catch (UnknownHostException e1) {// cette exception ne s'affichera jammais vu que l'on utilise localhost + } catch (IOException e1) { + System.err.println( + "erreur le serveur n'a pas put dermarer \nil est probablement blocké par un autre processus paralélle"); + return; + } + + // l'udp est un protocole plus rapide que le tcp si on a des probleme de latence + // voila une solution + // mais il est moin fiable + // DatagramSocket uDPServeur = new DatagramSocket(port); + // uDPServeur.setSoTimeout(500);//si au bout d'une demi-seconde on a pas de + // réponse alors le client est hs + + System.out.println("server ready"); + + Socket joueur1EnAttente = null; + Socket joueur2EnAttente = null; + while (true) { + if (joueur1EnAttente == null) { + try { + joueur1EnAttente = tCPserver.accept(); + System.out.println("joueur1 trouvé"); + } catch (IOException e) { + joueur1EnAttente = null; + } + } + if (joueur2EnAttente == null) { + try { + joueur2EnAttente = tCPserver.accept(); + System.out.println("joueur2 trouvé"); + } catch (IOException e) { + joueur2EnAttente = null; + } + } + if (joueur1EnAttente != null && joueur2EnAttente != null) { + try { + if (PlayerTesteur.playerTest(joueur1EnAttente)) { + if (PlayerTesteur.playerTest(joueur2EnAttente)) { + new Match(joueur1EnAttente, joueur2EnAttente); + System.out.println("match lancé"); + } else { + // le joueur est cassé donc on le retire de la file d'attente + joueur2EnAttente = null; + } + } else { + // le joueur est cassé donc on le retire de la file d'attente + joueur1EnAttente = null; + } + + } catch (IOException e) { + System.out.println("client dead"); + } + } + } + } + +} diff --git a/src/game/ComsJoueur.java b/src/game/ComsJoueur.java new file mode 100644 index 0000000..025e63f --- /dev/null +++ b/src/game/ComsJoueur.java @@ -0,0 +1,47 @@ +package game; + +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.net.Socket; + +public class ComsJoueur { + private ObjectOutputStream serverOut; + private ObjectInputStream serverIn; + + public ComsJoueur(Socket connection) throws IOException + { + serverOut = new ObjectOutputStream(connection.getOutputStream()); + serverIn = new ObjectInputStream(connection.getInputStream()); + } + + public void send(Object object) throws IOException + { + serverOut.writeObject(object); + } + + public Object recieve() + { + try { + return serverIn.readObject(); + } catch (ClassNotFoundException e) { + System.err.println("ERREUR une classe non trouvé a éte transimise , essayer de n'evoyer que des String au possible"); + return ""; + } catch (IOException e) { + return "time out"; + } + } + + public Object waitAndRecieve() + { + String returnVal; + while((returnVal =(String) recieve())!= null); + return returnVal; + } + + public void close() throws IOException + { + serverOut.close(); + serverIn.close(); + } +} diff --git a/src/game/DeckRegistery.java b/src/game/DeckRegistery.java new file mode 100644 index 0000000..f616ac3 --- /dev/null +++ b/src/game/DeckRegistery.java @@ -0,0 +1,14 @@ +package game; + +import game.deck.Deck; +import game.deck.DemoDeck; + +public class DeckRegistery { + public static Deck get(String name) + { + switch (name) { + default: + return new DemoDeck(); + } + } +} diff --git a/src/game/DeckSerializer.java b/src/game/DeckSerializer.java new file mode 100644 index 0000000..ceb0cb0 --- /dev/null +++ b/src/game/DeckSerializer.java @@ -0,0 +1,22 @@ +package game; + +import game.cards.Card; +import game.deck.Deck; + +public class DeckSerializer { + public static String serializeDeck(Deck d) + { + StringBuilder str = new StringBuilder(d.getCards().size()*2); + for(Card c : d.getCards()) + { + str.append(c.toString()+","); + } + return str.toString(); + } + + public static Deck deSerializeDeck(String g) + { + return null; + + } +} diff --git a/src/game/Hand.java b/src/game/Hand.java new file mode 100644 index 0000000..c37201f --- /dev/null +++ b/src/game/Hand.java @@ -0,0 +1,10 @@ +package game; + +public class Hand { + + public void draw(int i) { + // TODO Auto-generated method stub + + } + +} diff --git a/src/game/Joueur.java b/src/game/Joueur.java new file mode 100644 index 0000000..676efa6 --- /dev/null +++ b/src/game/Joueur.java @@ -0,0 +1,67 @@ +package game; + +import java.io.IOException; +import java.net.Socket; + +import game.deck.Deck; + +public class Joueur { + + Socket connection; + ComsJoueur coms; + Deck deck; + Hand hand; + int PV; + + public Joueur(Socket connectionJoueur) throws IOException { + connection=connectionJoueur; + coms = new ComsJoueur(connection); + hand = new Hand(); + PV =20; + } + + public void requestDataEarlyGameData() throws IOException { + coms.send("getDeck"); + String deckname = (String) coms.recieve(); + deck = DeckRegistery.get(deckname); + deck.shuffle(); + coms.send(DeckSerializer.serializeDeck(deck)); + draw(5); + + } + + public void draw(int amount) throws IOException + { + coms.send("draw"); + coms.send(amount); + hand.draw(amount); + } + + public void standyPhase() throws IOException { + coms.send("yourTurn"); + } + + public void win() throws IOException { + coms.send("win"); + } + + public void lose() throws IOException { + coms.send("lose"); + } + + public void mainPhase1() { + // TODO Auto-generated method stub + + } + + public void mainPhase2() { + // TODO Auto-generated method stub + + } + + public void endPhase() { + // TODO Auto-generated method stub + + } + +} diff --git a/src/game/Match.java b/src/game/Match.java new file mode 100644 index 0000000..a8b7487 --- /dev/null +++ b/src/game/Match.java @@ -0,0 +1,78 @@ +package game; + +import java.io.IOException; +import java.net.Socket; + +public class Match extends Thread { + Joueur joueur1, joueur2; + int tour = 1; + + public Match(Socket j1, Socket j2) throws IOException { + super(); + // random j2/j1 + if (Math.random() > 0.5F) { + joueur1 = new Joueur(j1); + joueur2 = new Joueur(j2); + } else { + joueur1 = new Joueur(j2); + joueur2 = new Joueur(j1); + } + + joueur1.requestDataEarlyGameData(); + joueur2.requestDataEarlyGameData(); + Thread connect = new Thread(); + connect.run(); + System.out.println("ready"); + start(); + } + + // gameplay + @Override + public void run() { + while (joueur1.PV != 0 || joueur2.PV != 0) { + try { + tour(joueur1); + tour(joueur2); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + try { + endMatch(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + //annonce du vainqueur et du perdant + private void endMatch() throws IOException { + if(joueur1.PV == 0) { + joueur2.win(); + joueur1.lose(); + }else { + joueur1.win(); + joueur2.lose(); + } + } + + //enchainement d'action que fait un joueur durant son tour + private void tour(Joueur joueur) throws IOException { + joueur1.coms.send("pupup"); + joueur1.coms.send("tour : " + tour); + joueur2.coms.send("pupup"); + joueur2.coms.send("tour : " + tour); + joueur.draw(1); //pioche 1 carte + joueur.standyPhase(); //Activation des effets avant que le tour du @joueur commence + joueur.mainPhase1(); //Joue autant de carte qu'il veut/peut + battlePhase(joueur);//lance des attaques à son adversaire qui peut répliquer + joueur.mainPhase2();//Nouvelle phase ou le @joueur peut jouer ses cartes si il veut/peut + joueur.endPhase();//fin du tour du @joueur + } + + private void battlePhase(Joueur joueur) { + // TODO Auto-generated method stub + + } +} diff --git a/src/game/PlayerTesteur.java b/src/game/PlayerTesteur.java new file mode 100644 index 0000000..6da25d6 --- /dev/null +++ b/src/game/PlayerTesteur.java @@ -0,0 +1,41 @@ +package game; + +import java.io.IOException; +import java.net.Socket; + +public class PlayerTesteur { + + + public static boolean playerTest(Socket joueur) + { + ComsJoueur com; + try { + com = new ComsJoueur(joueur); + } catch (IOException e) { + return false; + } + + try { + com.send("ping"); + } catch (IOException e) { + e.printStackTrace(); + System.err.println("une erreur c'est produite l'ors du ping"); + return false; + } + + try { + //pong + com.recieve(); + } catch (Exception e) { + System.out.println("le client a été trop long pour répondre ou une erreur reseau c'est porduite"); + return false; + } + + try { + com.close(); + } catch (IOException e) { + e.printStackTrace(); + } + return false; + } +} diff --git a/src/game/SimpleUDP.java b/src/game/SimpleUDP.java new file mode 100644 index 0000000..acd5e62 --- /dev/null +++ b/src/game/SimpleUDP.java @@ -0,0 +1,35 @@ +package game; + +import java.io.IOException; +import java.net.DatagramPacket; +import java.net.DatagramSocket; +import java.net.InetAddress; +import java.net.Socket; + +public class SimpleUDP { + private byte[] buf; + private DatagramSocket uDPServeur; + private InetAddress address; + private static int port; + + public SimpleUDP(DatagramSocket uDPServeur,Socket baseSocket) + { + this.uDPServeur=uDPServeur; + this.address=baseSocket.getInetAddress(); + port = baseSocket.getPort(); + } + + public void sendPacket(String message) throws IOException + { + DatagramPacket packet + = new DatagramPacket(buf, buf.length, address, port); + uDPServeur.send(packet); + } + + public String recivePacket() throws IOException + { + DatagramPacket packet = new DatagramPacket(buf, buf.length); + uDPServeur.receive(packet); + return new String(packet.getData(), 0, packet.getLength()); + } +} diff --git a/src/game/cards/Card.java b/src/game/cards/Card.java new file mode 100644 index 0000000..4bec437 --- /dev/null +++ b/src/game/cards/Card.java @@ -0,0 +1,28 @@ +package game.cards; + +import java.io.Serializable; + +public abstract class Card implements Serializable{ + + + /** + * retourne un entier coresspondant a l'attaque de la carte + * @return + */ + public abstract int getAttack(); + + /** + * retourne la santé de la carte + * @return + */ + public abstract int getHealth(); + + + @Override + public String toString() { + return ""+CardRegistery.get(this.getClass()); + } + + public abstract int getCost(); +} + diff --git a/src/game/cards/CardRegistery.java b/src/game/cards/CardRegistery.java new file mode 100644 index 0000000..110f92d --- /dev/null +++ b/src/game/cards/CardRegistery.java @@ -0,0 +1,26 @@ +package game.cards; + +import java.rmi.registry.Registry; +import java.util.ArrayList; +import java.util.List; + +public class CardRegistery { + public static List registry; + + private static void init() + { + registry = new ArrayList<>(); + + registry.add(DemoCard.class); + registry.add(DemoCard2.class); + + } + + public static int get(Class class1) { + if(registry == null)init(); + int a = registry.indexOf(class1); + return a != -1 ? a : 0; + } + + +} diff --git a/src/game/cards/DemoCard.java b/src/game/cards/DemoCard.java new file mode 100644 index 0000000..d9f19d1 --- /dev/null +++ b/src/game/cards/DemoCard.java @@ -0,0 +1,22 @@ +package game.cards; + +import java.io.Serializable; + +public class DemoCard extends Card{ + + @Override + public int getAttack() { + return 10; + } + + @Override + public int getHealth() { + return 10; + } + + @Override + public int getCost() { + // TODO Auto-generated method stub + return 0; + } +} diff --git a/src/game/cards/DemoCard2.java b/src/game/cards/DemoCard2.java new file mode 100644 index 0000000..2f96b3d --- /dev/null +++ b/src/game/cards/DemoCard2.java @@ -0,0 +1,24 @@ +package game.cards; + +public class DemoCard2 extends Card{ + + @Override + public int getAttack() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public int getHealth() { + // TODO Auto-generated method stub + return 0; + } + + + @Override + public int getCost() { + // TODO Auto-generated method stub + return 0; + } + +} diff --git a/src/game/deck/Deck.java b/src/game/deck/Deck.java new file mode 100644 index 0000000..bb892a9 --- /dev/null +++ b/src/game/deck/Deck.java @@ -0,0 +1,25 @@ +package game.deck; + +import java.io.Serializable; +import java.util.Collections; +import java.util.Stack; + +import game.cards.Card; + +public abstract class Deck implements Serializable{ + private static final long serialVersionUID = -4305303353908447343L; + + public abstract Stack getCards(); + + public void shuffle() + { + Collections.shuffle(getCards()); + } + + /** + * retourne le nom du deck ex: ww2 , science + * ce nom doit être unique + * @return + */ + public abstract String getDeckName(); +} diff --git a/src/game/deck/DemoDeck.java b/src/game/deck/DemoDeck.java new file mode 100644 index 0000000..df17f04 --- /dev/null +++ b/src/game/deck/DemoDeck.java @@ -0,0 +1,33 @@ +package game.deck; + +import java.util.ArrayList; +import java.util.List; +import java.util.Stack; + +import game.cards.Card; +import game.cards.DemoCard; +import game.cards.DemoCard2; + +public class DemoDeck extends Deck{ + Stack cards; + public DemoDeck() + { + cards = new Stack<>(); + for(int i = 0 ; i < 50 ; i++) + { + if(Math.random() > 0.5)cards.add(new DemoCard()); + else cards.add(new DemoCard2()); + } + } + + @Override + public Stack getCards() { + // TODO Auto-generated method stub + return cards; + } + + @Override + public String getDeckName() { + return "DemoDeck"; + } +}