Dev - C++ - Ayuda con juego de 21 BLACK JACK c++

 
Vista:
sin imagen de perfil
Val: 1
Ha aumentado su posición en 3 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Ayuda con juego de 21 BLACK JACK c++

Publicado por Christopher (1 intervención) el 02/12/2019 04:27:01
Hola que tal, tengo un problema y es que debo crear un juego en c++ pero me atoré en la parte de crear un mazo y repartir las cartas les paso mis parámetros. Soy principiante programando y no logro entender del todo lo de los arreglos y matrices. HELP :(.


Revisar las reglas básicas del Black Jack (veintiuno)

Al iniciar el programa, se le preguntará al usuario cuántos jugadores participarán (máximo 4).
después de seleccionar el número de participantes, se les preguntará su nombre y con cuánto dinero ingresarán a la mesa.
Después se dará inicio al juego.
El objetivo del juego es tratar de llegar a sumar 21 con las cartas repartidas sin pasarse.
Se pide la apuesta a cada jugador antes de iniciar el juego
Se repartirán dos cartas a cada jugador y a la computadora (el crupier) de manera aleatoria de un mazo de 52 cartas completas cada vez que se inicie un juego. (Guardar y “barajear” en un arreglo)
Si se suma 21 con las primeras dos cartas que se reparte inicialmente, el jugador gana el dinero de su apuesta. En caso que el CPU saque 21 en sus primeras 2 cartas, esta ganará salvo que algún jugador obtenga el mismo resultado lo que resultaría en empate (no pierde ni gana dinero)
El valor de las cartas se determina por el número de las mismas, J, K y Q valen 10, el As puede valer 1 u 11 (preguntar al jugador el valor que desea asignarle)
Si no se obtiene el 21 en las dos primeras cartas, se le pregunta al jugador si quiere pedir una carta más o quedarse con las cartas que tenga.
Puede pedir tantas cartas requiera siempre y cuando no se pase de 21. Al pasarse de 21 automáticamente el jugador pierde la apuesta.
Cuando los jugadores hayan decidido parar de pedir cartas, la computadora (crupier) hará lo mismo (pedir cartas o parar), procurando siempre alcanzar el 21 y obtener una suma mayor que los jugadores.
Si el crupier obtiene una suma mayor que los jugadores, estos últimos pierden la apuesta y se les descuenta de su dinero.
Al finalizar la jugada, se les preguntará a los jugadores si desean continuar. puede continuar uno solo o ambos.
Caso contrario, si le gana al crupier, se aumenta el dinero acumulado a su cuenta.
Pueden seguir jugando mientras el jugador tenga dinero para apostar
Guardar toda la información de los jugadores en variables, y sus cartas en arreglos.
El mazo principal deberá estar guardado en un arreglo y obtener las cartas desde ahí aleatoriamente. El programa deberá borrar las cartas repartidas del arreglo. Y cuando se inicie una nueva partida, deberá llenarlo nuevamente.
El crupier (CPU) deberá siempre intentar ganarle a los jugadores, por lo que de manera aleatoria, deberemos simular la toma de decisiones del CPU para la elección de una carta bajo las siguientes probabilidades de pasarse.
valor de la mano
Probabilidad de pasarse pidiendo otra carta
21
100 %
20
92 %
19
85 %
18
77 %
17
69 %
16
62 %
15
58 %
14
56 %
13
39 %
12
31 %
11 o menos
0 %

El trabajo deberá ser realizado principalmente con funciones




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#include <iostream>
#include <stdlib.h>
#include <string.h>
#include <time.h>
using namespace std;
 
   //Variables globales
int numj, barajas[3][13], v;
float moni[4], monir;
string nom[4];
float ap[4];
 
   //Declaracion de funciones
void menu ();
void nombres ();
void disenio ();
void apuesta ();
void cartas ();
int repcartas();
 
int main (){
  //Llamada de funciones
  disenio ();
  menu ();
  disenio();
  nombres ();
  disenio();
  apuesta ();
  cartas();
  repcartas();
 
 
}				//Main
 
 
//************
void menu (){//Captura de numero de jugadores
  do{
      cout << "        Cuantos jugadores desean ingresar a la sala--> ";
      cin >> numj;
      cout << endl;
 
      if (numj > 4){
	  cout << "Error Maximo 4 jugadores" << endl;
	}
      else if (numj < 1){
	  cout << "Error Elige de 1 a 4 jugadores" << endl;
	}
 
      system ("Pause");
      system ("cls");
    } while (numj < 1 || numj > 4);
 
}				//menu()
 
 
//***********
void nombres (){	//Se capturan los nombres y el dinero con el que van a ingresar
 
  for (int i = 0; i < numj; i++)
    {
      cout << "Ingresa el nombre del jugador " << i + 1 << " --> ";
      cin >> nom[i];
      cout << "Cuanto dinero desea ingresar a la mesa el jugador " << i +
	1 << " --> ";
      cin >> moni[i];
      cout << endl;
    }
	system("cls");
 
}				// nombres()
 
//************
 
void disenio (){				//El "diseño" del juego
  cout <<"==========================================================================="<< endl;
  cout <<"=                               21 BLACK JACK                             ="<< endl;
  cout <<"=                                Bienvenido                               ="<< endl;
  cout <<"==========================================================================="<< endl;
 
}				//Diseño
 
//************
 
void apuesta (){
	  cout<< "***************************************"<< endl;
  for (int i = 0; i < numj; i++){
      cout << "Cuantos creditos apuestas " << nom[i] << " --> ";
      cin >> ap[i];
      monir=moni[i]-ap[i];
      cout<< "Te quedan " << monir<< " creditos"<< endl;
      cout<< "***************************************"<< endl;
    }
    system("Pause");
    system("cls");
 
    cout<< "============Apuestas=========="<< endl;
    for(int i=0; i<numj; i++){
    cout<< "Jugador "<< nom[i] << " Apostaste--> " << ap[i] << endl;
}
	system("Pause");
	system("cls");
}			//Apuesta
 
//***********
 
void cartas(){ //Llena mi baraja
	int v;
	for(int i=0; i<4; i++){
		v=1;
		for(int j=0; j<13; j++){
				if(v>=11){
				v=10;
				}
			barajas[4][13]=v;
			v++;
			}
 
		}
}
 
int repcartas(){
 
	int tipoDeCarta = rand() % 4;
	int carta = rand() % 13;
	string mensajeCarta = "";
	switch(tipoDeCarta) {
    	case 0: mensajeCarta = "de rombos";
    	    break;
    	case 1: mensajeCarta = "de corazones";
    	    break;
    	case 2: mensajeCarta = "de espadas";
     	   break;
   	 case 3: mensajeCarta = "de treboles";
    	    break;
    	default: //error
		break;
}
	int tipoCarta = 0;
	int cartaN = 0;
	do {
		tipoCarta = rand() % 4;
		cartaN = rand() % 13;
	} while(barajas[tipoCarta][cartaN] == 0);
	return barajas[tipoCarta][cartaN];
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder