BlackJack contar cartas, programa en C

No es dificil, +1 -1, solo eso necesitas

Publicado por AlbertoBSD el 2020-07-05 19:53:38

Este codigo se encutra explicado en el video de youtube:



/*
		Juego de Baraja
		- Crear Mazo
		- Barajerar Mazo
		- Tener  1 Carta
		- Contar Cartas (con fines estadisticos)
*/

#include<time.h>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

char *baraja = "A234567890JQKA234567890JQKA234567890JQKA234567890JQK";
char *mazo;
int fin;
int pos = 0;

void crear_mazo(int numero);
void barajear_mazo();
char obtener_carta();
int termina();

int main() {
	char carta;
	int contador = 0;
	crear_mazo(10);
	barajear_mazo();
	printf("%s\n", mazo);
	while(!termina()) {
		carta = obtener_carta();
		switch(carta) {
			case 'A':
			case 'K':
			case 'Q':
			case 'J':
			case '0':
				contador--;
			break;
			case '9':
			case '8':
			case '7':
			break;
			case '6':
			case '5':
			case '4':
			case '3':
			case '2':
				contador++;
			break;
		}
		printf("%i\n",contador);
	}
}

void crear_mazo(int numero) {
	int i = 0;
	int longitud = strlen(baraja);
	int offset = 0;	
	mazo = calloc(longitud+1, numero);
	while(i < numero){
		memcpy(mazo+offset, baraja, longitud);
		offset += longitud;
		i++;
	 }
}

void barajear_mazo() {
	char *barajeado;
	int longitud = strlen(mazo);
	int random;
	fin = longitud;
	srand(time(NULL));
	barajeado = calloc(longitud+1, 1);
	int i = 0;
	while(i < longitud) {
		random = rand() %longitud;
		if(mazo[random] != '\0') {
			barajeado[i] = mazo[random];
			mazo[random] = 0;
			i++;
		}
	}
	free(mazo);
	mazo = barajeado;	
}

char obtener_carta() {
	char carta;
	carta =  mazo[pos];
	mazo[pos] = '\0';
	pos++;
	return carta;
}

int termina() {
	if(pos == fin) {
		return 1;
	} else{
		return 0;
	}
}