[ Foro de C++ ]

juego de cartas 7 y 1/2

02-Jun-2020 23:06
Invitado (carlos gomez)
1 Respuestas

Deben hacer el juego de cartas Siete y medio.
En este juego de cartas al jugador se le reparten cartas mientras no se pase de 7 y 1/2. El objetivo es acercarse a 7 y medio sin pasarse.
Cada carta vale su valor, las figuras valen 1/2 y se juega con un mazo de 40 cartas (es decir, sin 8 ni 9, ni comodines):
Carta Valor
1= 1
2= 2
3= 3
4= 4
5= 5
6= 6
7= 7
10= 1/2
11 =1/2
12 =1/2
Ejemplo:
Sale un 3, acumula 3. Pide otra carta.
Sale un 10, acumula 3 y 1/2. Pide otra carta.
Sale un 11, acumula 4.
Etcétera.
Si el jugador decide plantarse antes de pasarse de 7 y 1/2, juega la Computadora que hace lo mismo. Si la computadora empata o le gana al
jugador, entonces la PC es quien gana.
Contemplaciones:
No hace falta que digan de qué palo es la carta, pero tengan en cuenta que una vez que se sacan una carta, esa ya está en el mazo
(pueden marcar el mazo o contar los índices)
No hace falta que la partida sea eterna, puede hacerse 1 sola vez, aunque si la hacen hasta que el juegador decida dejar de jugar,
mejor.
Ayuda de cómo hacer el mazo
La mayor dificultad es cómo realizar el mazo para retirar una carta y que no vuelva a salir. Una forma es hacer un mazo con las 40 cartas y
quitarlas. O bien, hacer un mazo de valores y otro de bool que lleve en cuenta que carta ya salió y cual no.
Ejemplo:
Mazo de valores:
1, 2, 3, 4, 5, 6, 7, 10, 11, 12
1, 2, 3, 4, 5, 6, 7, 10, 11, 12
1, 2, 3, 4, 5, 6, 7, 10, 11, 12
1, 2, 3, 4, 5, 6, 7, 10, 11, 12
Donde cada columna es un palo


05-Jun-2020 22:30
Invitado (Javico)

/************************************************************
* Sugerencia a tarea de la página:
* https://www.aprendeaprogramar.com/mod/forum/discuss.php?d=4999
* (C) Javico - j4v1c0@gmail.com - 2020/06/05
************************************************************/
/*---------------------------------------------------------------
Titulo: SieteYmedio
Enunciado:
Deben hacer el juego de cartas Siete y medio.
En este juego de cartas al jugador se le reparten cartas mientras no se pase de 7 y 1/2. El objetivo es acercarse a 7 y medio sin pasarse.
Cada carta vale su valor, las figuras valen 1/2 y se juega con un mazo de 40 cartas (es decir, sin 8 ni 9, ni comodines):
Carta Valor
1= 1
2= 2
3= 3
4= 4
5= 5
6= 6
7= 7
10= 1/2
11 =1/2
12 =1/2
Ejemplo:
Sale un 3, acumula 3. Pide otra carta.
Sale un 10, acumula 3 y 1/2. Pide otra carta.
Sale un 11, acumula 4.
Etcétera.
Si el jugador decide plantarse antes de pasarse de 7 y 1/2, juega la Computadora que hace lo mismo. Si la computadora empata o le gana al
jugador, entonces la PC es quien gana.
Contemplaciones:
No hace falta que digan de qué palo es la carta, pero tengan en cuenta que una vez que se sacan una carta, esa ya está en el mazo
(pueden marcar el mazo o contar los índices)
No hace falta que la partida sea eterna, puede hacerse 1 sola vez, aunque si la hacen hasta que el juegador decida dejar de jugar,
mejor.
Ayuda de cómo hacer el mazo
La mayor dificultad es cómo realizar el mazo para retirar una carta y que no vuelva a salir. Una forma es hacer un mazo con las 40 cartas y
quitarlas. O bien, hacer un mazo de valores y otro de bool que lleve en cuenta que carta ya salió y cual no.
Ejemplo:
Mazo de valores:
1, 2, 3, 4, 5, 6, 7, 10, 11, 12
1, 2, 3, 4, 5, 6, 7, 10, 11, 12
1, 2, 3, 4, 5, 6, 7, 10, 11, 12
1, 2, 3, 4, 5, 6, 7, 10, 11, 12
Donde cada columna es un palo
---------------------------------------------------------------  */

#include <iostream>

using namespace std;

#define SI 1
#define NO 0

int mazo[40];

void CargarMazo();
int ExtraerCarta();
float Jugar(int JuegaHumano, float ValorAVencer);

main() {
int seguimos = SI;
char jugamos;
float puntosHumano, puntosComputadora;

while (seguimos) {
CargarMazo();
puntosComputadora=0;
puntosHumano = Jugar(SI,puntosComputadora);
if (puntosHumano>0) puntosComputadora = Jugar(NO,puntosHumano);
if (puntosHumano>puntosComputadora) {
cout << endl << endl << "FELICIDADES!!!... Ganaste..." << endl;
} else {
cout << endl << endl << "Lo siento... te gane..." << endl;
}

cout << endl << "Jugamos al siete y medio?... (S/N)";
cin >> jugamos;
seguimos = (jugamos=='s' || jugamos=='S') ? SI : NO;
}
}

void CargarMazo() {
for (int p=0; p<4; p++)
for (int n=0; n<10; n++)
mazo[p*10+n] = n+1;
}

int ExtraerCarta() {
int x, d;
x = rand()%40;
while (mazo[x]==NO) x = (rand()%40);
d = (mazo[x]>7) ? mazo[x]+2 : mazo[x];
mazo[x]=NO;
return d;
}

float Jugar(int JuegaHumano, float PuntosAvencer) {
int seguimos=SI;
char respuesta;
float puntos=0;
int carta;
if (JuegaHumano) // Juega humano
cout << endl << "Es tu turno de jugar al siete y medio..." << endl;
else                // Juega computadora
cout << endl << "Es mi turno de jugar..." << endl;

while (seguimos) {
carta = ExtraerCarta();
puntos += (carta>7) ? 0.5 : carta;
cout << "Salio un " << carta <<
" y la punturacion es " << puntos;

if (puntos>7.5) return -1;

if (JuegaHumano) { // Juega humano
cout << "... Seguimos?";
cin >> respuesta;
seguimos = (respuesta=='s' || respuesta=='S') ? SI : NO;
} else { // Juega computadora
seguimos = (puntos<PuntosAvencer) ? SI : NO;
cout << endl;
}
}
return puntos;
}






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)