diff --git b/jweb-e002/.classpath a/jweb-e002/.classpath new file mode 100644 index 0000000..b444419 --- /dev/null +++ a/jweb-e002/.classpath @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git b/jweb-e002/.project a/jweb-e002/.project new file mode 100644 index 0000000..a2603ea --- /dev/null +++ a/jweb-e002/.project @@ -0,0 +1,31 @@ + + + jweb-e002 + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.wst.common.project.facet.core.builder + + + + + org.eclipse.wst.validation.validationbuilder + + + + + + org.eclipse.jem.workbench.JavaEMFNature + org.eclipse.wst.common.modulecore.ModuleCoreNature + org.eclipse.wst.common.project.facet.core.nature + org.eclipse.jdt.core.javanature + org.eclipse.wst.jsdt.core.jsNature + + diff --git b/jweb-e002/.settings/.jsdtscope a/jweb-e002/.settings/.jsdtscope new file mode 100644 index 0000000..92e666d --- /dev/null +++ a/jweb-e002/.settings/.jsdtscope @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git b/jweb-e002/.settings/org.eclipse.jdt.core.prefs a/jweb-e002/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..0c68a61 --- /dev/null +++ a/jweb-e002/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git b/jweb-e002/.settings/org.eclipse.wst.common.component a/jweb-e002/.settings/org.eclipse.wst.common.component new file mode 100644 index 0000000..3d6e5f1 --- /dev/null +++ a/jweb-e002/.settings/org.eclipse.wst.common.component @@ -0,0 +1,8 @@ + + + + + + + + diff --git b/jweb-e002/.settings/org.eclipse.wst.common.project.facet.core.xml a/jweb-e002/.settings/org.eclipse.wst.common.project.facet.core.xml new file mode 100644 index 0000000..01c9992 --- /dev/null +++ a/jweb-e002/.settings/org.eclipse.wst.common.project.facet.core.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git b/jweb-e002/.settings/org.eclipse.wst.jsdt.ui.superType.container a/jweb-e002/.settings/org.eclipse.wst.jsdt.ui.superType.container new file mode 100644 index 0000000..3bd5d0a --- /dev/null +++ a/jweb-e002/.settings/org.eclipse.wst.jsdt.ui.superType.container @@ -0,0 +1 @@ +org.eclipse.wst.jsdt.launching.baseBrowserLibrary \ No newline at end of file diff --git b/jweb-e002/.settings/org.eclipse.wst.jsdt.ui.superType.name a/jweb-e002/.settings/org.eclipse.wst.jsdt.ui.superType.name new file mode 100644 index 0000000..05bd71b --- /dev/null +++ a/jweb-e002/.settings/org.eclipse.wst.jsdt.ui.superType.name @@ -0,0 +1 @@ +Window \ No newline at end of file diff --git b/jweb-e002/WebContent/META-INF/MANIFEST.MF a/jweb-e002/WebContent/META-INF/MANIFEST.MF new file mode 100644 index 0000000..5e94951 --- /dev/null +++ a/jweb-e002/WebContent/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Class-Path: + diff --git b/jweb-e002/WebContent/WEB-INF/jsp/SieteCartas.jsp a/jweb-e002/WebContent/WEB-INF/jsp/SieteCartas.jsp new file mode 100644 index 0000000..cfc11cf --- /dev/null +++ a/jweb-e002/WebContent/WEB-INF/jsp/SieteCartas.jsp @@ -0,0 +1,45 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> +<%@ page import="clases.*" %> + + + + + Mejores Combinaciones + + +

Mejores Combinaciones

+
+

Cartas Generadas Aleatoriamente

+ <% + Carta[] cartas = (Carta[])request.getAttribute("cartas"); + for(int i=0; i + + <%}%> + +
+ +

Mejores Combinaciones

+ + <% + Carta[] mano = new Carta[5]; + String mejores = (String)request.getAttribute("mejores"); + Poker p = new Poker(); + //Separa el string en arrays, donde encuentre ";" + //Si hay ; quiere decir que hubieron dos o mas ganadores + for(int i=0; i + + <%}%> + +

<%=p.nombreJugada(mano)%>

+
+ <%}%> + + + \ No newline at end of file diff --git b/jweb-e002/WebContent/WEB-INF/jsp/cartas.jsp a/jweb-e002/WebContent/WEB-INF/jsp/cartas.jsp new file mode 100644 index 0000000..87d7d43 --- /dev/null +++ a/jweb-e002/WebContent/WEB-INF/jsp/cartas.jsp @@ -0,0 +1,13 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> + + + + +Insert title here + + +" width=200 height=250 > + + + \ No newline at end of file diff --git b/jweb-e002/WebContent/WEB-INF/jsp/mano_doc.jsp a/jweb-e002/WebContent/WEB-INF/jsp/mano_doc.jsp new file mode 100644 index 0000000..e7d7534 --- /dev/null +++ a/jweb-e002/WebContent/WEB-INF/jsp/mano_doc.jsp @@ -0,0 +1,29 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> + <%@ page import="clases.*" %> + + + + + Mano doc desde api + + +

Cartas!

+
+

Manos Aleatorias extraidas desde api

+ <%Carta[] cartas = (Carta[])request.getAttribute("mano"); + String nombreJugada = (String) request.getAttribute("nombreJugada"); + + for(int i=0; i + " width=80 height=120> + + <% + } + %> + +

Jugada: <%=nombreJugada%>

+ + + + \ No newline at end of file diff --git b/jweb-e002/WebContent/WEB-INF/web.xml a/jweb-e002/WebContent/WEB-INF/web.xml new file mode 100644 index 0000000..6d005d5 --- /dev/null +++ a/jweb-e002/WebContent/WEB-INF/web.xml @@ -0,0 +1,12 @@ + + + jweb-e002 + + index.html + index.htm + index.jsp + default.html + default.htm + default.jsp + + \ No newline at end of file diff --git b/jweb-e002/WebContent/html/cartas.html a/jweb-e002/WebContent/html/cartas.html new file mode 100644 index 0000000..fc9b177 --- /dev/null +++ a/jweb-e002/WebContent/html/cartas.html @@ -0,0 +1,24 @@ + + + + + Insert title here + + +

Cartas de Poker

+
+
+ + Palo: +
+ + Valor: + +
+ + \ No newline at end of file diff --git b/jweb-e002/WebContent/imagenesCartas/2C.png a/jweb-e002/WebContent/imagenesCartas/2C.png new file mode 100644 index 0000000..413b0da Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/2C.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/2D.png a/jweb-e002/WebContent/imagenesCartas/2D.png new file mode 100644 index 0000000..f966e48 Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/2D.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/2H.png a/jweb-e002/WebContent/imagenesCartas/2H.png new file mode 100644 index 0000000..345744e Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/2H.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/2S.png a/jweb-e002/WebContent/imagenesCartas/2S.png new file mode 100644 index 0000000..a0de145 Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/2S.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/3C.png a/jweb-e002/WebContent/imagenesCartas/3C.png new file mode 100644 index 0000000..f8b8183 Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/3C.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/3D.png a/jweb-e002/WebContent/imagenesCartas/3D.png new file mode 100644 index 0000000..cee21f3 Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/3D.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/3H.png a/jweb-e002/WebContent/imagenesCartas/3H.png new file mode 100644 index 0000000..8494e1c Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/3H.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/3S.png a/jweb-e002/WebContent/imagenesCartas/3S.png new file mode 100644 index 0000000..78e3b20 Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/3S.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/4C.png a/jweb-e002/WebContent/imagenesCartas/4C.png new file mode 100644 index 0000000..8938459 Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/4C.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/4D.png a/jweb-e002/WebContent/imagenesCartas/4D.png new file mode 100644 index 0000000..d9ae5be Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/4D.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/4H.png a/jweb-e002/WebContent/imagenesCartas/4H.png new file mode 100644 index 0000000..41a4488 Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/4H.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/4S.png a/jweb-e002/WebContent/imagenesCartas/4S.png new file mode 100644 index 0000000..70bc9cc Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/4S.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/5C.png a/jweb-e002/WebContent/imagenesCartas/5C.png new file mode 100644 index 0000000..a7f49be Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/5C.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/5D.png a/jweb-e002/WebContent/imagenesCartas/5D.png new file mode 100644 index 0000000..cff0617 Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/5D.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/5H.png a/jweb-e002/WebContent/imagenesCartas/5H.png new file mode 100644 index 0000000..1efcbf3 Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/5H.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/5S.png a/jweb-e002/WebContent/imagenesCartas/5S.png new file mode 100644 index 0000000..e708806 Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/5S.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/6C.png a/jweb-e002/WebContent/imagenesCartas/6C.png new file mode 100644 index 0000000..d8382d3 Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/6C.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/6D.png a/jweb-e002/WebContent/imagenesCartas/6D.png new file mode 100644 index 0000000..7ba40e9 Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/6D.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/6H.png a/jweb-e002/WebContent/imagenesCartas/6H.png new file mode 100644 index 0000000..93a84f8 Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/6H.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/6S.png a/jweb-e002/WebContent/imagenesCartas/6S.png new file mode 100644 index 0000000..874162b Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/6S.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/7C.png a/jweb-e002/WebContent/imagenesCartas/7C.png new file mode 100644 index 0000000..f6a9653 Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/7C.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/7D.png a/jweb-e002/WebContent/imagenesCartas/7D.png new file mode 100644 index 0000000..6c4393d Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/7D.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/7H.png a/jweb-e002/WebContent/imagenesCartas/7H.png new file mode 100644 index 0000000..d4a59ff Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/7H.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/7S.png a/jweb-e002/WebContent/imagenesCartas/7S.png new file mode 100644 index 0000000..895f85c Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/7S.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/8C.png a/jweb-e002/WebContent/imagenesCartas/8C.png new file mode 100644 index 0000000..bc87bf0 Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/8C.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/8D.png a/jweb-e002/WebContent/imagenesCartas/8D.png new file mode 100644 index 0000000..38c5695 Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/8D.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/8H.png a/jweb-e002/WebContent/imagenesCartas/8H.png new file mode 100644 index 0000000..c2812aa Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/8H.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/8S.png a/jweb-e002/WebContent/imagenesCartas/8S.png new file mode 100644 index 0000000..0277cc6 Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/8S.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/9C.png a/jweb-e002/WebContent/imagenesCartas/9C.png new file mode 100644 index 0000000..d81b2f2 Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/9C.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/9D.png a/jweb-e002/WebContent/imagenesCartas/9D.png new file mode 100644 index 0000000..e0d3d05 Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/9D.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/9H.png a/jweb-e002/WebContent/imagenesCartas/9H.png new file mode 100644 index 0000000..7b679e1 Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/9H.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/9S.png a/jweb-e002/WebContent/imagenesCartas/9S.png new file mode 100644 index 0000000..f58493e Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/9S.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/AC.png a/jweb-e002/WebContent/imagenesCartas/AC.png new file mode 100644 index 0000000..396c158 Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/AC.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/AD.png a/jweb-e002/WebContent/imagenesCartas/AD.png new file mode 100644 index 0000000..d702a39 Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/AD.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/AH.png a/jweb-e002/WebContent/imagenesCartas/AH.png new file mode 100644 index 0000000..435fc14 Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/AH.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/AS.png a/jweb-e002/WebContent/imagenesCartas/AS.png new file mode 100644 index 0000000..f07f67d Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/AS.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/JC.png a/jweb-e002/WebContent/imagenesCartas/JC.png new file mode 100644 index 0000000..16418e4 Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/JC.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/JD.png a/jweb-e002/WebContent/imagenesCartas/JD.png new file mode 100644 index 0000000..05b0389 Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/JD.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/JH.png a/jweb-e002/WebContent/imagenesCartas/JH.png new file mode 100644 index 0000000..259421c Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/JH.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/JS.png a/jweb-e002/WebContent/imagenesCartas/JS.png new file mode 100644 index 0000000..6e0554d Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/JS.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/KC.png a/jweb-e002/WebContent/imagenesCartas/KC.png new file mode 100644 index 0000000..70c4ee5 Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/KC.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/KD.png a/jweb-e002/WebContent/imagenesCartas/KD.png new file mode 100644 index 0000000..95a3b8f Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/KD.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/KH.png a/jweb-e002/WebContent/imagenesCartas/KH.png new file mode 100644 index 0000000..0defcbb Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/KH.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/KS.png a/jweb-e002/WebContent/imagenesCartas/KS.png new file mode 100644 index 0000000..43b8e19 Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/KS.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/QC.png a/jweb-e002/WebContent/imagenesCartas/QC.png new file mode 100644 index 0000000..6f74177 Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/QC.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/QD.png a/jweb-e002/WebContent/imagenesCartas/QD.png new file mode 100644 index 0000000..85c443f Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/QD.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/QH.png a/jweb-e002/WebContent/imagenesCartas/QH.png new file mode 100644 index 0000000..ba8e1e4 Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/QH.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/QS.png a/jweb-e002/WebContent/imagenesCartas/QS.png new file mode 100644 index 0000000..a6ef69f Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/QS.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/TC.png a/jweb-e002/WebContent/imagenesCartas/TC.png new file mode 100644 index 0000000..f9ade6d Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/TC.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/TD.png a/jweb-e002/WebContent/imagenesCartas/TD.png new file mode 100644 index 0000000..a9de67e Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/TD.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/TH.png a/jweb-e002/WebContent/imagenesCartas/TH.png new file mode 100644 index 0000000..df551b0 Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/TH.png differ diff --git b/jweb-e002/WebContent/imagenesCartas/TS.png a/jweb-e002/WebContent/imagenesCartas/TS.png new file mode 100644 index 0000000..22141df Binary files /dev/null and a/jweb-e002/WebContent/imagenesCartas/TS.png differ diff --git b/jweb-e002/WebContent/index.html a/jweb-e002/WebContent/index.html new file mode 100644 index 0000000..caf2de2 --- /dev/null +++ a/jweb-e002/WebContent/index.html @@ -0,0 +1,14 @@ + + + + + Insert title here + + + + + \ No newline at end of file diff --git b/jweb-e002/build/classes/clases/Carta.class a/jweb-e002/build/classes/clases/Carta.class new file mode 100644 index 0000000..ee6f09d Binary files /dev/null and a/jweb-e002/build/classes/clases/Carta.class differ diff --git b/jweb-e002/build/classes/clases/Poker.class a/jweb-e002/build/classes/clases/Poker.class new file mode 100644 index 0000000..4433cc2 Binary files /dev/null and a/jweb-e002/build/classes/clases/Poker.class differ diff --git b/jweb-e002/build/classes/servlets/Cartas.class a/jweb-e002/build/classes/servlets/Cartas.class new file mode 100644 index 0000000..77c9590 Binary files /dev/null and a/jweb-e002/build/classes/servlets/Cartas.class differ diff --git b/jweb-e002/build/classes/servlets/ManoDoc.class a/jweb-e002/build/classes/servlets/ManoDoc.class new file mode 100644 index 0000000..a8f5e17 Binary files /dev/null and a/jweb-e002/build/classes/servlets/ManoDoc.class differ diff --git b/jweb-e002/build/classes/servlets/SieteCartas.class a/jweb-e002/build/classes/servlets/SieteCartas.class new file mode 100644 index 0000000..cf93981 Binary files /dev/null and a/jweb-e002/build/classes/servlets/SieteCartas.class differ diff --git b/jweb-e002/lib/json-20180813.jar a/jweb-e002/lib/json-20180813.jar new file mode 100644 index 0000000..592f08c Binary files /dev/null and a/jweb-e002/lib/json-20180813.jar differ diff --git b/jweb-e002/src/clases/Carta.java a/jweb-e002/src/clases/Carta.java new file mode 100644 index 0000000..ec33fe0 --- /dev/null +++ a/jweb-e002/src/clases/Carta.java @@ -0,0 +1,23 @@ +package clases; + +public class Carta { + + public Carta() + { + + } + + public Carta(String completo) + { + this.valor = String.valueOf(completo.charAt(0)); + this.palo = String.valueOf(completo.charAt(1)); + } + + String valorPalo() + { + return this.valor + this.palo; + } + + public String valor; + public String palo; +} diff --git b/jweb-e002/src/clases/Poker.java a/jweb-e002/src/clases/Poker.java new file mode 100644 index 0000000..68bee19 --- /dev/null +++ a/jweb-e002/src/clases/Poker.java @@ -0,0 +1,775 @@ +package clases; + +import java.util.Arrays; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +import clases.Carta; +//import com.roshka.bootcamp004.poker.MyClass; + +public class Poker { + + // TH, TC, 5S, 5H, AD, AH, 2S + public String mejorJugada(Carta[] mano) + { + ArrayList candidatas = new ArrayList(); + ArrayList mejores = new ArrayList(); + String mejoresString=""; + Carta[] cartas = mano; + + //Crea una mano de 5 cartas que va a seguir igual siempre + Carta [] manoPrincipal = new Carta[5]; + + //Crea una mano de 5 cartas que va a variar para crear las + //distintas combinaciones + Carta [] manoVariante = new Carta[5]; + + //Carga las primeras 5 cartas en la mano + for (int i = 0; i < 5; i++) { + manoPrincipal[i] = new Carta(cartas[i].valor+cartas[i].palo); + } + manoVariante = manoPrincipal.clone(); + //Se agrega la primera combinación a las manos candidatas + candidatas.add(manoVariante.clone()); + + //Las dos ultimas cartas las guarda en variables diferentes + Carta x = cartas[5]; + Carta y = cartas[6]; + + //Se crean las combinaciones + for (int i = 0; i < 5; i++) { + //Rota la x + manoVariante[i] = x; + //Agrego una copia de la mano variante para no tener problemas + //Con la modificacion de los valores + //Por el tema de paso por referencia + candidatas.add(manoVariante.clone()); + + //Es para no repetir combinaciones. Esta repeticion + //se da en la cuarta iteración + //if(i!=4){ + for(int j = i; j < 5; j++){ + //Se usa una variable auxiliar para volver a poner el valor + //que se cambió como estaba + Carta aux = manoVariante[j]; + + //Rota la y cuando la x está rotando + manoVariante[j]= y; + //Se agrega una copia a las candidatas + candidatas.add(manoVariante.clone()); + //Vuelve la mano variante a su estado original + manoVariante[j] = aux; + } + /*}else{ + //Solo faltaría agregar una rotación, cuando la y está al final + manoVariante[i]=y; + candidatas.add(manoVariante.clone()); + }*/ + manoVariante = manoPrincipal.clone(); + } + + /* + for (int i = 0; i < candidatas.size(); i++) { + System.out.println("Combinacion número: "+(i+1)); + System.out.println(candidatas.get(i)[0].valor+candidatas.get(i)[0].palo); + System.out.println(candidatas.get(i)[1].valor+candidatas.get(i)[1].palo); + System.out.println(candidatas.get(i)[2].valor+candidatas.get(i)[2].palo); + System.out.println(candidatas.get(i)[3].valor+candidatas.get(i)[3].palo); + System.out.println(candidatas.get(i)[4].valor+candidatas.get(i)[4].palo); + System.out.println("******"); + } + */ + //System.out.println(candidatas.size()); + + //Crea una instancia de MyClass, que contiene + //el método que elige cuál es la mejor jugada + //MyClass mc = new MyClass(); + + //Crea un vector string con los índices de los ganadores + String[] mejoresCombinaciones = ganadores(candidatas).split(" "); + //System.out.println("Cantidad de ganadores: "+ mejoresCombinaciones.length); + + //System.out.println("Indice de los ganadores: "+mc.ganadores(candidatas)); + + //Imprime las mejores combinaciones + /*for (int j = 0; j < mejoresCombinaciones.length; j++) { + //Convierte los indices de los ganadores que están en String + //a int + int index = Integer.parseInt(mejoresCombinaciones[j]); + for (int i = 0; i < 5; i++) { + System.out.print(candidatas.get(index)[i].valor+candidatas.get(index)[i].palo+" "); + } + System.out.println(); + }*/ + + for (int j = 0; j < mejoresCombinaciones.length; j++) { + //Convierte los indices de los ganadores que están en String + //a int + int index = Integer.parseInt(mejoresCombinaciones[j]); + mejores.add(candidatas.get(index).clone()); + } + + //Carga mejoresString, que contiene los resultados del vector mejores + //pero en String, todo concatenado + //También imprime el contenido de "mejores" + for (int j = 0; j < mejores.size(); j++) { + //Convierte los indices de los ganadores que están en String + //a int + //int index = Integer.parseInt(mejoresCombinaciones[j]); + for (int i = 0; i < 5; i++) { + mejoresString += mejores.get(j)[i].valor+mejores.get(j)[i].palo; + + //System.out.print(candidatas.get(j)[i].valor+candidatas.get(j)[i].palo); + if(i!=4){ + //System.out.print(","); + mejoresString += ","; + + } + } + //System.out.println(); + if(j!=mejores.size()-1) + mejoresString += ";"; + } + + + return mejoresString; + //return "AD,AH,TH,TC,5S;AD,AH,TH,TC,5H"; + } + + + public String ganadores(List jugadas) + { + //System.out.println("Cantidad de jugadas: " + jugadas.size()); + ArrayList ganadores = new ArrayList(); + //Indica que es la primera mano + boolean esPrimero=true; + //Array para almacenar los índices + ArrayList indices = new ArrayList(); + //Contador que mantiene el valor del indice + int index=0; + + for (Carta[] mano : jugadas) { + // System.out.println("JUGADA ======================"); + + if(esPrimero){ + ganadores.add(mano); + indices.add(index); + esPrimero=false; + } + else{ + ArrayList calificacionMayor= calificacion(ganadores.get(ganadores.size()-1)); + ArrayList calificacionActual= calificacion(mano); + if(calificacionMayor.get(0)calificacionActual.get(i)){ + break; + } + //Si la i llega al tamaño máximo del array, quiere decir + //que son todos iguales + else if(i==calificacionMayor.size()-1){ + ganadores.add(mano); + indices.add(index); + } + } + } + } + index++; + } + + //imprimirGanadores(ganadores); + String stringGanadores=""; + for (int i = 0; i < indices.size(); i++) { + stringGanadores += indices.get(i)+" "; + } + return stringGanadores; + } + + private ArrayList calificacion(Carta[] mano){ + ArrayList calificacion= new ArrayList(); + /** + * La calificacion numérica de cada carta estará en el lugar 0 del array retornado + * Escalera color -> 9 + * Poker -> 8 + * Full -> 7 + * Color -> 6 + * Escalera -> 5 + * Trio -> 4 + * Par Doble -> 3 + * Par -> 2 + * Carta alta -> 1 + */ + + //Array para almacenar la cantidad de apariciones de cada número + int[] valores = new int[13]; + //Array para almacenar la cantidad de apariciones de cada palo + int[] palos = new int[4]; + inicializarArrays(valores, palos, mano); + + //Si es escalera, solo basta ver el valor de la escalera + if(esEscaleraColor(valores, palos)){ + int[] ordenado = ordenarMano(mano); + calificacion.add(9); + //Si el AS actúa como 14, entonces el AS vale 14 + if(ordenado[4]==12 && ordenado[0]==0){ + calificacion.add(14); + } + else{ + calificacion.add(ordenado[4]); + } + + } + else if(esPoker(valores)){ + //Si es poker, se envia la calificacion en el primer elemento, seguido del + //valor que hizo que sea poker, seguido del valor diferente + calificacion.add(8); + if(indiceDe(4,valores)==0){ + calificacion.add(14); + calificacion.add(indiceDe(1,valores)); + } + else{ + calificacion.add(indiceDe(4,valores)); + + if(indiceDe(1, valores)==0){ + calificacion.add(14); + } + else{ + calificacion.add(indiceDe(1, valores)); + } + } + + } + else if(esFull(valores)){ + //No hay empate en full, por lo tanto solo hace falta + //el valor de la mano + calificacion.add(7); + if(indiceDe(3,valores)==0){ + calificacion.add(14); + calificacion.add(indiceDe(2,valores)); + } + else{ + calificacion.add(indiceDe(3,valores)); + + if(indiceDe(2, valores)==0){ + calificacion.add(14); + } + else{ + calificacion.add(indiceDe(2,valores)); + } + } + } + else if(esColor(palos)){ + int aux=0; + calificacion.add(6); + int[] ordenado = ordenarMano(mano); + if(ordenado[0]==0){ + calificacion.add(14); + aux=1; + } + for (int i = 4; i >= aux; i--) { + calificacion.add(ordenado[i]); + } + } + else if(esEscalera(valores)){ + int[] ordenado = ordenarMano(mano); + calificacion.add(5); + if(ordenado[4]==12 && ordenado[0]==1){ + calificacion.add(14); + } + else{ + calificacion.add(ordenado[4]); + } + } + else if(esTrio(valores)){ + calificacion.add(4); + + //Convierte el AS al mayor valor, en lugar de 1 vale 14 + if(indiceDe(3,valores)==0){ + calificacion.add(14); + }else{ + calificacion.add(indiceDe(3, valores)); + } + + int[] ordenado = ordenarMano(mano); + + int aux = 0; + if(ordenado[0]==0){ + calificacion.add(14); + aux = 1; + } + + + for (int i = 4; i >=aux; i--) { + if(calificacion.get(1)!=ordenado[i]){ + calificacion.add(ordenado[i]); + } + } + } + else if(esParDoble(valores)){ + calificacion.add(3); + + //Si es un par doble de AS, se le asigna 14 + if(indiceDe(2,valores)==0){ + calificacion.add(14); + calificacion.add(indiceDeReversa(2, valores)); + } + else{ + calificacion.add(indiceDeReversa(2, valores)); + calificacion.add(indiceDe(2, valores)); + } + + if(indiceDe(1,valores)==0){ + calificacion.add(14); + } + else{ + calificacion.add(indiceDe(1,valores)); + } + + } + else if(esPar(valores)){ + calificacion.add(2); + + //Si el par es de AS, se setea su valor a 14 + if(indiceDe(2,valores)==0){ + calificacion.add(14); + } + else{ + calificacion.add(indiceDe(2, valores)); + } + + + int[] ordenado = ordenarMano(mano); + int aux=0; + + if(ordenado[0]==0){ + calificacion.add(14); + aux=1; + } + + + for (int i = 4; i >=aux; i--) { + if(calificacion.get(1)!=ordenado[i]){ + calificacion.add(ordenado[i]); + } + } + } + else{ + int aux=0; + calificacion.add(1); + //Si hay un AS, se coloca directamente después de la + //calificación + int[] ordenado = ordenarMano(mano); + + if(ordenado[0]==0){ + calificacion.add(14); + aux=1; + } + for (int i = 4; i >= aux; i--) { + calificacion.add(ordenado[i]); + } + } + + + return calificacion; + } + + private int indiceDe(int elemento, int[] vector){ + + for (int i = 0; i < vector.length; i++) { + if(vector[i]==elemento) return i; + } + + //retorna -1 si no encuentra; + return -1; + } + private int indiceDeReversa(int elemento, int[] vector){ + + for (int i = vector.length-1; i >=0; i--) { + if(vector[i]==elemento) return i; + } + + //retorna -1 si no encuentra; + return -1; + } + + private int[] ordenarMano(Carta[] mano){ + int[] ordenado = new int[5]; + + for (int i = 0; i < 5; i++) { + + String valorString= mano[i].valor; + if(valorString.equals("A") || valorString.equals("a")){ + ordenado[i]=0; + } + else if(valorString.equals("T") || valorString.equals("t")){ + ordenado[i]=9; + } + else if(valorString.equals("J") || valorString.equals("j")){ + ordenado[i]=10; + } + else if(valorString.equals("Q") || valorString.equals("q")){ + ordenado[i]=11; + } + else if(valorString.equals("K") || valorString.equals("k")){ + ordenado[i]=12; + } + else{ + ordenado[i] = Integer.parseInt(valorString)-1; + } + } + Arrays.sort(ordenado); + return ordenado; + } + + private boolean esEscaleraColor(int[] valores, int[] palos){ + /** + * Funcionamiento: recorre el vector de valores y cuando encuentra un 1 + * enciende una bandera para comenzar a contar. + * Termina el ciclo cuando ya no quedan elementos o cuando encuentra un número + * distinto a 1. Si este número es mayor a 1, entonces termina el ciclo. + * Si el contador termina en 5, se comprueba que todos los palos sean iguales. + * esto se consigue revisando si en el vector de palos hay un 5, porque esto significa + * que todos fueron iguales + * O si hay un 4 en el contador y una A presente, también es verdadero + */ + + //bandera para activar sumador + boolean sumadorActivo=false; + + //Sumador de números contiguos + int sumador=0; + + //no se comprueba si existe A, porque despues se comprueba + //si el contador llegó a 4 y existe una A, entonces es una + //escalera + for (int i = 1; i < 13; i++) { + //Si la cantidad de aparición de un valor fue mayor a 1, + //no es posible que sea una escalera + if(valores[i]>1){ + return false; + } + + if(valores[i]==1){ + sumadorActivo=true; + } + + if(valores[i]==0 && sumadorActivo){ + break; + } + if(sumadorActivo){ + sumador++; + } + } + + //Si el sumador llegó a 5 entra al ciclo que comprueba + //o si llegó a 4 y existe una A + //si alguno de los palos vino 5 veces + if(sumador==5 || (sumador==4 && valores[0]==1 && valores[9]==1 && valores[8]==0)){ + for (int i = 0; i < 4; i++) { + if(palos[i]==5){ + return true; + } + } + } + return false; + } + + //Comprueba si la mano es póker + private boolean esPoker(int[] valores){ + /** + * Funcionamiento: Ordena el array de valores de forma ascendente. + * Para comprobar si existe poker, basta con mirar el último elemento del array, + * donde debería encontrarse un 4 + */ + + //Clona el array de valores + int [] ordenado = valores.clone(); + //Ordena la copia + Arrays.sort(ordenado); + + if(ordenado[12]==4){ + return true; + } + + return false; + } + + private boolean esFull(int[] valores){ + //Clona el array de valores + int [] ordenado = valores.clone(); + //Ordena la copia + Arrays.sort(ordenado); + + if(ordenado[12]==3 && ordenado[11]==2) + return true; + + return false; + } + + private boolean esColor(int[] palos){ + //Clona el array de valores + int [] ordenado = palos.clone(); + //Ordena la copia + Arrays.sort(ordenado); + + if(ordenado[3]==5) + return true; + + return false; + } + + private boolean esEscalera(int[] valores){ + //bandera para activar sumador + boolean sumadorActivo=false; + + //Sumador de números contiguos + int sumador=0; + + //no se comprueba si existe A, porque despues se comprueba + //si el contador llegó a 4 y existe una A, entonces es una + //escalera + for (int i = 1; i < 13; i++) { + + //Si la cantidad de aparición de un valor fue mayor a 1, + //no es posible que sea una escalera + if(valores[i]>1){ + return false; + } + + if(valores[i]==1){ + sumadorActivo=true; + } + + if(valores[i]==0 && sumadorActivo){ + break; + } + if(sumadorActivo){ + sumador++; + } + } + + //Si el sumador llegó a 5 entra al ciclo que comprueba + //o si llegó a 4 y existe una A + if(sumador==5 || (sumador==4 && valores[0]==1 && valores[9]==1 && valores[8]==0)){ + return true; + } + + return false; + } + + private boolean esTrio(int[] valores){ + //Clona el array de valores + int [] ordenado = valores.clone(); + //Ordena la copia + Arrays.sort(ordenado); + + if(ordenado[12]==3 && ordenado[11]==1 && ordenado[10]==1) + return true; + + return false; + } + + private boolean esParDoble(int[] valores){ + //Clona el array de valores + int [] ordenado = valores.clone(); + //Ordena la copia + Arrays.sort(ordenado); + + if(ordenado[12]==2 && ordenado[11]==2 && ordenado[10]==1) + return true; + return false; + } + + private boolean esPar(int[] valores){ + //Clona el array de valores + int [] ordenado = valores.clone(); + //Ordena la copia + Arrays.sort(ordenado); + + if(ordenado[12]==2 && ordenado[11]==1 && ordenado[10]==1 && ordenado[9]==1) + return true; + + return false; + } + + private void inicializarArrays(int[] valores, int[] palos, Carta[] mano){ + //Se coloca 1 y 14 para que sea mas facil controlar las Escaleras + for (int i = 0; i < 13; i++) { + valores[i]=0; + } + for (int i = 0; i < 4; i++) { + palos[i] = 0; + } + + //carga los vectores de cantidades de aparición + for (int i = 0; i < 5; i++) { + String valorString = mano[i].valor; + String paloString = mano[i].palo; + + if(valorString.equals("A") || valorString.equals("a")){ + valores[0]++; + } + else if(valorString.equals("T") || valorString.equals("t")){ + valores[9]++; + } + else if(valorString.equals("J") || valorString.equals("j")){ + valores[10]++; + } + else if(valorString.equals("Q") || valorString.equals("q")){ + valores[11]++; + } + else if(valorString.equals("K") || valorString.equals("k")){ + valores[12]++; + } + else if(valorString.equals("J") || valorString.equals("j")){ + valores[10]++; + } + else{ + int index = Integer.parseInt(valorString); + valores[index-1]++; + } + + //Para el array de cantidades de palos + //S -> 0 + //C -> 1 + //H -> 2 + //D -> 3 + if(paloString.equals("S") || paloString.equals("s")){ + palos[0]++; + } + else if(paloString.equals("C") || paloString.equals("c")){ + palos[1]++; + } + else if(paloString.equals("H") || paloString.equals("h")){ + palos[2]++; + } + else if(paloString.equals("D") || paloString.equals("d")){ + palos[3]++; + } + } + } + + //Este metodo genera n cantidad de cartas al azar + public Carta[] generarCartas(int n) { + Carta[] cartas = new Carta[n]; + + Random random = new Random(); + String nuevaCarta = ""; + + int valor; + int palo; + + for(int i=0; i