Códigos fuentes > Código fuente para simular repartir cartas en un juego de cartas | MAY/2020
Es un CODIGO FUENTE en JAVA para ANDROID STUDIO que simula repartir cartas para cualquier video juego de cartas. Está formado por 3 métodos, el principal "subRepartirCartas" en donde se generan 6 números aleatorios no repetitivos que representan 6 cartas, 3 para el jugador y 3 para el software.
Primero es necesario declarar las principales variables y controles necesarios, en el entorno adecuado para ser Globales, para después poder manejarlos por código. Necesitamos un array númerico del tipo Byte de 6 elementos que representa cada una de las cartas repartidas desde 0 a 5, ya que está vez es para un juego de cartas de truco en donde se reparten 6 cartas, 3 para el jugador y 3 para la computadora, y es un mazo de 40 cartas españolas, que están representadas en el método "subCartaVisualizar" en donde se seleccionan los archivos de imágenes de cada uno de las cartas. Y luego declaramos, para poder codificar, 3 controles ImageView de la interface de usuario, donde se mostrarán los archivos de imagen con la representación de cada una de las 40 cartas del mazo. A continuación se muestra la codificación de las declaraciones:
| byte cartasRepartidas[] = new byte[6];
|
| ImageView imgCarta[] = new ImageView[3];
| imgCarta[0] = findViewById(R.id.imagenCarta0);
| imgCarta[1] = findViewById(R.id.imagenCarta1);
| imgCarta[2] = findViewById(R.id.imagenCarta2);
Luego tenemos en el código 3 métodos, el primero "subRepartirCartas", donde se reinicializan las variables, primero se
ocultan las cartas en pantalla por medio del método "subOcultarCartas" colocando una imagen de color verde, que
vendría a tener el mismo color que el fondo verde de pantalla, y luego, también, se colocan en las
cartas a repartir un número que no representa ninguna carta en particular para que después se seleccionen cartas no repetitivas.
Luego por medio del for-next se generan 6 números aleatorios no repetitivos, para que no seleccione 2 veces la misma carta, entre 0 y 39, y luego
por medio del método "subCartaVisualizar" se visualizan en la interface del usuario al ser representadas en los controles ImageView
por los archivos de imágenes con la visualización de las cartas, que no están distribuidas en este tutorial.|
| ImageView imgCarta[] = new ImageView[3];
| imgCarta[0] = findViewById(R.id.imagenCarta0);
| imgCarta[1] = findViewById(R.id.imagenCarta1);
| imgCarta[2] = findViewById(R.id.imagenCarta2);
Este código fuente puedes adaptarlo, modificarlo e insertarlo en tus proyectos de software sin problemas. Siempre es normal que debas realizar alguna modificación, entenderlo, y deberás prestar atención. A continuación se describe el código fuente:
| private void subRepartirCartas() {
| byte ciclo = 0;
| int repite = 0;
| boolean cartaRepite = false;
| Random aleatorio = new Random(System.currentTimeMillis());
| // Inicializar variables y controles
| // Se deben ocultar las cartas de la vez anterior
| subOcultarCartas();
| // Inicializar cartas repartidas
| cartasRepartidas[0] = 40;
| cartasRepartidas[1] = 40;
| cartasRepartidas[2] = 40;
| cartasRepartidas[3] = 40;
| cartasRepartidas[4] = 40;
| cartasRepartidas[5] = 40;
| // Asignar cartas para jugador y computadora
| for (ciclo = 0; (ciclo <= 5); ciclo++) {
| do {
| int intAleatorio = aleatorio.nextInt(40);
| cartasRepartidas[ciclo] = (byte)intAleatorio;
| cartaRepite = false;
| if (ciclo > 0){
| for (repite = (ciclo - 1); (repite >= 0); repite--) {
| if (cartasRepartidas[ciclo] == cartasRepartidas[repite]) {
| cartaRepite = true;
| }
| if (cartaRepite == true) {
| break;
| }
| }
| }
| // Salir del loop si no repite carta
| } while (cartaRepite == true);
| }
| // Visualizar las cartas en pantallas
| subCartaVisualizar((byte)0, cartasRepartidas[0]);
| subCartaVisualizar((byte)1, cartasRepartidas[1]);
| subCartaVisualizar((byte)2, cartasRepartidas[2]);
| }
|
| private void subCartaVisualizar(byte indice, byte valorCarta) {
| switch (valorCarta){
| case 0:
| imgCarta[indice].setImageResource( R.mipmap.e1);
| break;
| case 1:
| imgCarta[indice].setImageResource( R.mipmap.b1);
| break;
| case 2:
| imgCarta[indice].setImageResource( R.mipmap.e7);
| break;
| case 3:
| imgCarta[indice].setImageResource( R.mipmap.o7);
| break;
| case 4:
| imgCarta[indice].setImageResource( R.mipmap.o3);
| break;
| case 5:
| imgCarta[indice].setImageResource( R.mipmap.e3);
| break;
| case 6:
| imgCarta[indice].setImageResource( R.mipmap.c3);
| break;
| case 7:
| imgCarta[indice].setImageResource( R.mipmap.b3);
| break;
| case 8:
| imgCarta[indice].setImageResource( R.mipmap.o2);
| break;
| case 9:
| imgCarta[indice].setImageResource( R.mipmap.e2);
| break;
| case 10:
| imgCarta[indice].setImageResource( R.mipmap.c2);
| break;
| case 11:
| imgCarta[indice].setImageResource( R.mipmap.b2);
| break;
| case 12:
| imgCarta[indice].setImageResource( R.mipmap.o1);
| break;
| case 13:
| imgCarta[indice].setImageResource( R.mipmap.c1);
| break;
| case 14:
| imgCarta[indice].setImageResource( R.mipmap.o12);
| break;
| case 15:
| imgCarta[indice].setImageResource( R.mipmap.e12);
| break;
| case 16:
| imgCarta[indice].setImageResource( R.mipmap.c12);
| break;
| case 17:
| imgCarta[indice].setImageResource( R.mipmap.b12);
| break;
| case 18:
| imgCarta[indice].setImageResource( R.mipmap.o11);
| break;
| case 19:
| imgCarta[indice].setImageResource( R.mipmap.e11);
| break;
| case 20:
| imgCarta[indice].setImageResource( R.mipmap.c11);
| break;
| case 21:
| imgCarta[indice].setImageResource( R.mipmap.b11);
| break;
| case 22:
| imgCarta[indice].setImageResource( R.mipmap.o10);
| break;
| case 23:
| imgCarta[indice].setImageResource( R.mipmap.e10);
| break;
| case 24:
| imgCarta[indice].setImageResource( R.mipmap.c10);
| break;
| case 25:
| imgCarta[indice].setImageResource( R.mipmap.b10);
| break;
| case 26:
| imgCarta[indice].setImageResource( R.mipmap.c7);
| break;
| case 27:
| imgCarta[indice].setImageResource( R.mipmap.b7);
| break;
| case 28:
| imgCarta[indice].setImageResource( R.mipmap.o6);
| break;
| case 29:
| imgCarta[indice].setImageResource( R.mipmap.e6);
| break;
| case 30:
| imgCarta[indice].setImageResource( R.mipmap.c6);
| break;
| case 31:
| imgCarta[indice].setImageResource( R.mipmap.b6);
| break;
| case 32:
| imgCarta[indice].setImageResource( R.mipmap.o5);
| break;
| case 33:
| imgCarta[indice].setImageResource( R.mipmap.e5);
| break;
| case 34:
| imgCarta[indice].setImageResource( R.mipmap.c5);
| break;
| case 35:
| imgCarta[indice].setImageResource( R.mipmap.b5);
| break;
| case 36:
| imgCarta[indice].setImageResource( R.mipmap.o4);
| break;
| case 37:
| imgCarta[indice].setImageResource( R.mipmap.e4);
| break;
| case 38:
| imgCarta[indice].setImageResource( R.mipmap.c4);
| break;
| case 39:
| imgCarta[indice].setImageResource( R.mipmap.b4);
| break;
| }
| }
|
| private void subOcultarCartas() {
| imgCarta[0].setImageResource( R.mipmap.verde);
| imgCarta[1].setImageResource( R.mipmap.verde);
| imgCarta[2].setImageResource( R.mipmap.verde);
| }
| byte ciclo = 0;
| int repite = 0;
| boolean cartaRepite = false;
| Random aleatorio = new Random(System.currentTimeMillis());
| // Inicializar variables y controles
| // Se deben ocultar las cartas de la vez anterior
| subOcultarCartas();
| // Inicializar cartas repartidas
| cartasRepartidas[0] = 40;
| cartasRepartidas[1] = 40;
| cartasRepartidas[2] = 40;
| cartasRepartidas[3] = 40;
| cartasRepartidas[4] = 40;
| cartasRepartidas[5] = 40;
| // Asignar cartas para jugador y computadora
| for (ciclo = 0; (ciclo <= 5); ciclo++) {
| do {
| int intAleatorio = aleatorio.nextInt(40);
| cartasRepartidas[ciclo] = (byte)intAleatorio;
| cartaRepite = false;
| if (ciclo > 0){
| for (repite = (ciclo - 1); (repite >= 0); repite--) {
| if (cartasRepartidas[ciclo] == cartasRepartidas[repite]) {
| cartaRepite = true;
| }
| if (cartaRepite == true) {
| break;
| }
| }
| }
| // Salir del loop si no repite carta
| } while (cartaRepite == true);
| }
| // Visualizar las cartas en pantallas
| subCartaVisualizar((byte)0, cartasRepartidas[0]);
| subCartaVisualizar((byte)1, cartasRepartidas[1]);
| subCartaVisualizar((byte)2, cartasRepartidas[2]);
| }
|
| private void subCartaVisualizar(byte indice, byte valorCarta) {
| switch (valorCarta){
| case 0:
| imgCarta[indice].setImageResource( R.mipmap.e1);
| break;
| case 1:
| imgCarta[indice].setImageResource( R.mipmap.b1);
| break;
| case 2:
| imgCarta[indice].setImageResource( R.mipmap.e7);
| break;
| case 3:
| imgCarta[indice].setImageResource( R.mipmap.o7);
| break;
| case 4:
| imgCarta[indice].setImageResource( R.mipmap.o3);
| break;
| case 5:
| imgCarta[indice].setImageResource( R.mipmap.e3);
| break;
| case 6:
| imgCarta[indice].setImageResource( R.mipmap.c3);
| break;
| case 7:
| imgCarta[indice].setImageResource( R.mipmap.b3);
| break;
| case 8:
| imgCarta[indice].setImageResource( R.mipmap.o2);
| break;
| case 9:
| imgCarta[indice].setImageResource( R.mipmap.e2);
| break;
| case 10:
| imgCarta[indice].setImageResource( R.mipmap.c2);
| break;
| case 11:
| imgCarta[indice].setImageResource( R.mipmap.b2);
| break;
| case 12:
| imgCarta[indice].setImageResource( R.mipmap.o1);
| break;
| case 13:
| imgCarta[indice].setImageResource( R.mipmap.c1);
| break;
| case 14:
| imgCarta[indice].setImageResource( R.mipmap.o12);
| break;
| case 15:
| imgCarta[indice].setImageResource( R.mipmap.e12);
| break;
| case 16:
| imgCarta[indice].setImageResource( R.mipmap.c12);
| break;
| case 17:
| imgCarta[indice].setImageResource( R.mipmap.b12);
| break;
| case 18:
| imgCarta[indice].setImageResource( R.mipmap.o11);
| break;
| case 19:
| imgCarta[indice].setImageResource( R.mipmap.e11);
| break;
| case 20:
| imgCarta[indice].setImageResource( R.mipmap.c11);
| break;
| case 21:
| imgCarta[indice].setImageResource( R.mipmap.b11);
| break;
| case 22:
| imgCarta[indice].setImageResource( R.mipmap.o10);
| break;
| case 23:
| imgCarta[indice].setImageResource( R.mipmap.e10);
| break;
| case 24:
| imgCarta[indice].setImageResource( R.mipmap.c10);
| break;
| case 25:
| imgCarta[indice].setImageResource( R.mipmap.b10);
| break;
| case 26:
| imgCarta[indice].setImageResource( R.mipmap.c7);
| break;
| case 27:
| imgCarta[indice].setImageResource( R.mipmap.b7);
| break;
| case 28:
| imgCarta[indice].setImageResource( R.mipmap.o6);
| break;
| case 29:
| imgCarta[indice].setImageResource( R.mipmap.e6);
| break;
| case 30:
| imgCarta[indice].setImageResource( R.mipmap.c6);
| break;
| case 31:
| imgCarta[indice].setImageResource( R.mipmap.b6);
| break;
| case 32:
| imgCarta[indice].setImageResource( R.mipmap.o5);
| break;
| case 33:
| imgCarta[indice].setImageResource( R.mipmap.e5);
| break;
| case 34:
| imgCarta[indice].setImageResource( R.mipmap.c5);
| break;
| case 35:
| imgCarta[indice].setImageResource( R.mipmap.b5);
| break;
| case 36:
| imgCarta[indice].setImageResource( R.mipmap.o4);
| break;
| case 37:
| imgCarta[indice].setImageResource( R.mipmap.e4);
| break;
| case 38:
| imgCarta[indice].setImageResource( R.mipmap.c4);
| break;
| case 39:
| imgCarta[indice].setImageResource( R.mipmap.b4);
| break;
| }
| }
|
| private void subOcultarCartas() {
| imgCarta[0].setImageResource( R.mipmap.verde);
| imgCarta[1].setImageResource( R.mipmap.verde);
| imgCarta[2].setImageResource( R.mipmap.verde);
| }
Este Fuente es un fragmento de codificación incluido en TrucoTec 6 app para teléfonos inteligentes, puedes probar esta App en tu teléfono Android desde la sección TrucoTec 6 app. También puedes consultar la sección de MundoTec, y podrás ver mucho mas código fuente gratis, como por el ejemplo el código fuente completo de TrucoTec 2005 en VISUAL BASIC 5, y muchos fuentes mas de distintos programas informáticos de juegos y empresariales pagos.