https://foro.gambas-es.org/viewtopic.php?f=1&t=2929&p=16467#p16467
-----------------------------------
Shell
Miercoles, 27 Febrero 2013, 11:26

Ejemplo De Un Juego De Cartas Usando POO.Cuestiones
-----------------------------------
Hola Comunidad!.

Continuo poco a poco con el ejemplo de una baraja de cartas y el juego de las siete y media.
Es prácticamente mi primer juego de cartas y no es solo por el juego (que debe haber muchos),
si no mas bien como trabajar con clases, sus métodos, etc.

Cuando comencé la aplicación no usaba gráficos y todo era texto.Al usar gráficos, la clase
carta se ha quedado  "casi" sin uso. Lo primero que se me ocurrió fueron dos clases.

- La clase carta
- La clase baraja.

La clase carta tiene propiedades como:
- El palo del a carta (bastos,copas..),el nombre de la carta  (as,rey..) y su valor (1,2,3).

La clase baraja contiene los métodos para:
- Creación del mazo
- Barajar
- Cortar
- Extraer una carta del mazo.
- Decir el valor de la carta
- Mostrar la carta gráficamente en un contenedor del formulario.

Al comenzar. En la clase "baraja", cree  un objeto de la clase "carta"
Cree un constructor en la clase "baraja", dando todos los valores posibles a los palos,nombres y valores de las cartas en la clase "baraja".
Tal que así:

[code linenumbers=false syntax=gambas]
  ' obaraja.palo = ["OROS", "COPAS", "ESPADAS", "BASTOS"]
  ' obaraja.nomcarta = ["AS", "DOS", "TRES", "CUATRO", "CINCO", "SEIS", "SIETE", "SOTA", "CABALLO", "REY"]  
  ' obaraja.valorcarta = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 0.5, 0.5, 0.5]
[/code]

En este aspecto los tantos o valores de las cartas están "limitados" a un juego en concreto,"Las siete y media" y no
a cualquier juego de cartas, que es lo que creo que se pretende con la POO.

Visto así.Se podría o se debería tener una clase mas que fuera la que usa las reglas de cada juego.
Ya sea Tute,Brisca,La escoba,Las siete y media, el cinquillo,etc y que en la clase "baraja" tan solo quede
los métodos comunes de una baraja de cartas.

- Creación del mazo
- Barajar
- Cortar
- Extraer una carta del mazo.
- Mostrar la carta ya sea texto o gráfico

Entonces tendríamos  la clase Reglas por cada juego.
ClaseSieteyMedia. :-)

Cuando di unos valores a las propiedades de cartas en la clase "baraja", también creo que esos valores,los mas
comunes, palo y nombre los podía haber creado con un constructor en la propia clase "carta"

Estas propiedades son arrays.

A la clase carta se le puede añadir una imagen que represente gráficamente que carta es.
En parte viéndola, ya dice que es, no se necesita decir que es un rey o un as, tan solo
importa su valor como carta, 1, 2,3..y no digo según el tipo de juego.

Es solo un ejemplo de juego con POO.Lo importante es ir comprendiendo la POO para mejorar.
Tardo en hacer las aplicaciones por que le doy muchas vueltas.

Saludos


