Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: ricardo093 en 3 Diciembre 2017, 18:08 pm



Título: Ayuda juego UNO
Publicado por: ricardo093 en 3 Diciembre 2017, 18:08 pm
Hola amigos, estoy haciendo un juego de cartas (un UNO) y tengo que crear las cartas (son 108) en estructuras, eso ya lo hice; lo que tengo que hacer ahora es pasar todas las cartas a una pila, lista o vector para comenzar a repartir, pero no sé como. Solo se pueden usar estructuras, vectores, pilas, listas, funciones o procedimientos para hacer el juego. Podrían ayudarme por favor.
Gracias de antemano.

Este es el codigo que crea las 108 cartas y las muestra (cada carta es una estructura que tiene una o dos propiedades: color y numero, color y nombre, nombre), todo eso se puede colocar en procedimientos (luego lo hago):

Código
  1.  
  2. #include<iostream>
  3. #include<string.h>
  4. using namespace std;
  5. int main (){
  6. string color1[4]={"Azul","Rojo","Amarillo","Verde"};
  7. int numero1[]={0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9};
  8. string nombre1[6]={"Roba_Dos","Roba_Dos","Cambio_Sentido","Cambio_Sentido","Pierde_Turno","Pierde_Turno"};
  9. string nombre2[2]={"Comodin","Comodin_Roba_Cuatro"};
  10.  
  11. struct carta{//elementos de la baraja y elementos de cada carta
  12. string color;
  13. int numero;
  14. string nombre;
  15. }baraja[108];
  16.  
  17. int k=0;
  18. for(int i=0; i<4; i++){
  19. cout<<endl;
  20. for (int j=0; j<19; j++){
  21. baraja[k].color=color1[i];
  22. baraja[k].numero=numero1[j];
  23. cout<<"Color: "<<baraja[k].color<<"  Numero: "<<baraja[k].numero<<endl;
  24. k++;
  25. }
  26. }
  27. cout<<endl<<endl;
  28. for(int j=0; j<4; j++){
  29. cout<<endl;
  30. for(int l=0; l<6; l++){
  31. baraja[k].color=color1[j];
  32. baraja[k].nombre=nombre1[l];
  33. cout<<"Color: "<<baraja[k].color<<"  Numero: "<<baraja[k].nombre<<endl;
  34. k++;
  35. }
  36. }
  37. cout<<endl<<endl;
  38. for(int i=0; i<4; i++){
  39. for(int j=0; j<2; j++){
  40. baraja[k].nombre=nombre2[j];
  41. cout<<"Nombre: "<<baraja[k].nombre<<endl;
  42. k++;
  43. }
  44. }
  45. }
  46.  
  47.  


Título: Re: Ayuda juego UNO
Publicado por: moncker94 en 6 Diciembre 2017, 12:55 pm
Muy buenas ricardo093,

y, para empezar, me encanta tu idea, de verdad.


1. Creación de una estructura con función de pila

Leyendo tu código y analizando tu consulta creo que aquello que quieres hacer se puede dividir en varios puntos. Recordemos que la modulación es una de nuestras mejores herramientas.

a. Primero debemos constituir una estructura con función de pila
b. Requerimos colocar cada una de nuestras cartas de la baraja de manera aleatoria
c. Esta pila, por supuesto, tiene que tener una función "pop" que elimine la primera de las cartas que tenemos en ella.

Vayamos por partes



2. Construcción de pila

Nuestra estructura pila podría ser un simple struct con su funcionalidad. Una gran idea está en colocarlo en un fichero ".h" y construirlo directamente ahí.

He encontrado un link que te ayudará muchísimo en este paso:
http://es.ccm.net/faq/2885-las-pilas-en-lenguaje-c#requisitos (http://es.ccm.net/faq/2885-las-pilas-en-lenguaje-c#requisitos)



3. Colocar cada una de las cartas de manera aleatoria

3-a. Explicado de una forma simple, requeriremos de la función random:

#include <time.h>

srand(time(NULL));
int numRand = rand() % 107; 

3-b En la que además, deberemos colocar un while que nos asegure que no hemos dado ese número todavía.

En definitiva, nuestro código permitirá la elección aleatoria de una de las posiciones de nuestro vector de struct carta:  "baraja" y a cada posición nueva que vaya dando la iremos colocando dentro de la pila en orden - push -, pero con elección aleatoria.



4. Función pop
Con la implementación del punto 2 vendrá ya la estructura del pop



5. Para finalizar

Me ha encantado tu proyecto y me encantaría ver la funcionalidad final, si quieres ponerte en contacto conmigo, sería un placer ayudarte en lo que pueda más allá de esta consulta.

Saludos,

moncker94