Sie sind auf Seite 1von 5

El nuevo juego realiza una asignacion aleatoria dependiendo de la cantidad de

jugadores
1. Se cambio la funcion 'barajar' por 'jugar'; la cual realiza el mismo trabajo.
Sin embargo, la funcion 'barajar' parece mas efectiva, automatica y simple
2. Se agrego la funcion 'verificamano'; la cual accede a la nueva 'baraja'(vector
'cartas') y asigna cartas a la matriz 'mano' por medio de ciclos 'for' anidados

*PRINCIPALES CONSIDERACIONES:
- Si el nuevo programa funciona al asignar cartas a cada mano, es necesario hacer
la codificacion de cada tipo de carta por numero y palo dependiendo del valor
aleatorio al que pertenezcan
- Luego, se debera hacer la sumatoria de valores desde la matriz 'carta' y asignar
esto a la variable 'puntero' para cada objeto
- Al finalizar con las dispocisiones anteriores, podemos comenzar a trabajar en una
mejor interfaz grafica.

PRIMER ARCHIVO, CLASES:


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

using namespace std;

class Persona{
private:
char nombre[30];
int edad;
public:
void getInfo();
void showInfo();
};

class Player:public Persona{


private:
char nickname[30];
int punteo;
int mano[4][4]; //Primero son cartas y segundo el numero de
jugador :o
int cartas[51]; //NUEVA BARAJA
int baraja[51];
public:
void getNick();
void show();
int jugar(int cantidad);
void barajar();
int verificamano(int cantidad); //Accede a cartas y provee
distribuye las cartas a cada jugador
/*
Se van a evaluar las cartas hasta 52, en lugar de hacer una funcion
para barajar todas las cartas
CONSIDERAR: Son 52 cartas, 4 palos (picas, treboles, diamantes y
corazones).
Cada palo cuenta con 13 cartas, llendo desde el as(1)
hasta 10 y luego contando J(11), Q(12), K(13)
*/
};
SEGUNDO ARCHIVO, FUNCIONES:
#include "clases.h"

void Persona::getInfo(){
fflush(stdin);
cout<<"\nIngrese su nombre: ";
cin.getline(nombre,30);
cin.ignore();
cout<<"Ingrese su edad: ";
cin>>edad;
}
void Persona::showInfo(){
cout<<" DATOS:";
cout<<"\nNombre: "<<nombre;
cout<<"\nEdad: "<<edad;
}

void Player::getNick(){
Persona::getInfo();
cin.ignore();
cout<<"Ingrese nickname de jugador: ";
cin.getline(nickname,30);
}
void Player::show(){
Persona::showInfo();
cout<<"\nNickname: "<<nickname<<endl;
}

//Comienza el mero mosh del juego


bool verifica(int al,int pos,int carta[]){
for(int o=0;o<=pos;o++){
if(carta[o]==al) return true;
}
return false;
}
//En esta funcion se van a asignar valores aleatorios para la
mano de cada jugador
/*
void Player::jugar(){
int c,carta,i;
c=0;
carta=0;
i=0;

for(c=0;c<=4;c++){
carta=rand()%52;
mano[c]=baraja[carta];
while (verifica(carta,c,mano)==true){
carta=rand()%52;
}
mano[c]=baraja[carta];
}
}
*/
/*
IDEA: Funcion por referencia que reciba la 'cantidad' de
jugadores y proporcione manos
Asi, recibe la cantidad de jugadores y en base a esto, puede proporcionar 10, 15,
20 o 25 numeros aleatorios que no repitan;
luego, regresa los primero 5 numeros al primer jugador, los segundos 5 al siguiente
y asi sucesivamente.
Esto haria que se descarte la funcion 'barajar' pues las cartas son entregadas de
forma aleatoria directamente. La funcion 'juego' recibiria la cantidad de
jugadores y regresaria las cartas; fueran estas 10, 15, 20 o 25.
*/
void Player::barajar(){
int c,al;
srand(time(NULL)); //Utiliza la hora del sistema para inicializar
la funcion srand();

cout<<"Barajando naipes...\n";

for(c=0;c<=51;c++){
al=rand()%52; //Se genera un numero aleatorio desde 0 hasta 51
//cout<<"numero aleatorio: "<<al<<endl;
baraja[c]=al; //El numero aleatorio se guarda en la posicion "c" de
la baraja
//system("pause");
while(verifica(al,c,baraja)==true){ //si el numero ya existe en
el vector, se genera uno nuevo
// cout<<"Numero repetido";
al=rand()%52;
/*
cout<<"\nnuevo numero "<<al<<" pocision de vector:
"<<baraja[c]<<endl;
baraja[c]=al;
*/
//system("pause");
}
baraja[c]=al;
}
/*
for(c=0;c<=51;c++){ //muestra baraja en pantalla
cout<<baraja[c]<<" ";
}
*/
}

int Player::jugar(int cantidad){


//Dependiendo de la cantidad de jugadores, esta funcion retorna
10, 15... 25 cartas
//con valores aleatorios desde 0 hasta 51 :D
int i=0,num=0;
srand(time(NULL));
if(cantidad==2){
for(i=0;i<=9;i++){
num=rand()%52;
cartas[i]=num;
while(verifica(num,i,cartas)==true){
num=rand()%52;
}
cartas[i]=num;
}
}else if(cantidad==3){
for(i=0;i<=14;i++){
num=rand()%52;
cartas[i]=num;
while(verifica(num,i,cartas)==true){
num=rand()%52;
}
cartas[i]=num;
}
}else if(cantidad==4){
for(i=0;i<=19;i++){
num=rand()%52;
cartas[i]=num;
while(verifica(num,i,cartas)==true){
num=rand()%52;
}
cartas[i]=num;
}
}else if(cantidad==5){
for(i=0;i<=24;i++){
num=rand()%52;
cartas[i]=num;
while(verifica(num,i,cartas)==true){
num=rand()%52;
}
cartas[i]=num;
}
}

return cartas[51];
}

//OJO: Esta funcion tambien podria tomar los valores desde 'baraja' y
asignarlos a cada jugador
int Player::verificamano(int cantidad){
//Debe acceder a cartas, tomar la cantidad de cartas basado en
'cantidad' desde el main.cpp y entregar las primeras 5 y asi...
int i=0,c=0;
if(cantidad==2){ //Para dos jugadores
for(i=0;i<=1;i++){ //Cuenta cantidad de jugadores - Inicia con el
numero de jugador
for(c=0;c<=9;c++){
mano[c][i]=cartas[c]; //toma cartas desde 'cartas' y las
coloca en el numero de carta 'c' para el jugador 'i'(sea jugador 1 y 2)
}
}
}else if(cantidad==3){
for(i=0;i<=2;i++){ //para tres jugadores
for(c=0;c<=14;c++){
mano[c][i]=cartas[c];
}
}
}else if(cantidad==4){
for(i=0;i<=3;i++){ //para 4 jugadores
for(c=0;c<=19;c++){
mano[c][i]=cartas[c];
}
}
}else if(cantidad==5){
for(i=0;i<=4;i++){
for(c=0;c<=24;c++){
mano[c][i]=cartas[c];
}
}
}
return mano[4][4];
}
TERCER ARCHIVO, MAIN:
#include "funciones.h"

using namespace std;

int main(){
int cantidad,p;
cantidad=0;
Player jugador[cantidad];

cout<<"Ingrese candidad de jugadores: "<<endl;


cout<<"Maximo 5, minimo 2 jugadores ";
cin>>cantidad;
while(cantidad>5||cantidad<2){
cout<<"\nLa cantidad no es valida, ingrese cantidad de jugadores otra
vez: ";
cin>>cantidad;
}

for (p=0;p<=cantidad-1;p++){
cout<<"\nIngrese informacion de jugador #"<<p+1;
jugador[p].getNick();
for(int u=0;u<=20;u++){
cout<<"**";
}
}
system("cls");
jugador[0].barajar();
jugador[0].jugar(cantidad); //nuevo "bararajar"
system("pause");

return 0;
}

Das könnte Ihnen auch gefallen