hacker


Ingresar con nombre de usuario, contraseña y duración de la sesión
| Portal Hacker | Editorial | Descargas | Ezine |
Inicio Ayuda Ingresar Registrarse
19 de Noviembre de 2008, 01:19:38
Noticias: La segunda fase del torneo de matemáticas ya ha empezado!!
Para ver este enlace Registrate o Inicia Sesion
ver

+  Foros pOrtal Hacker
|-+  Programacion
| |-+  C / C++
| | |-+  Código Abierto C / C++ (Moderadores: mycrox, TXS)
| | | |-+  El juego de sacar bolas de la caja
0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: El juego de sacar bolas de la caja  (Leído 218 veces)
csaralg
NZ1
*
Desconectado Desconectado

Mensajes: 66



Ver Perfil
« : 07 de Agosto de 2008, 12:20:39 »

Bueno, para este juego suponemos que existe una caja con una cantidad N de pelotitas. El primer jugador debe sacar un mínimo de 1 pelota y un máximo de N-1 pelotas. El segundo jugador debe sacar un mínimo de 1 pelota y un máximo igual al doble del numero sacado por el jugador anterior. Para el segundo turno del jugador 1 se aplican las mismas reglas que para el jugador 2 y así sucesivamente. Por ejemplo:

Hay 9 pelotas en la caja.

Jugador 1: (min=1 y max=8)  saca 2 pelotas. Quedan 7.
Jugador 2: (min=1 y max=4)  saca 3 pelotas. Quedan 4.
Jugador 1: (min=1 y max=6)  saca 4 pelotas. Quedan 0.

Gana el jugador que saca la ultima pelota de la caja. En el ejemplo ningún jugador esta jugando de manera optima. Se pide crear un programa que juegue de manera optima.

El siguiente código es una posible solución. Si alguien tiene otra solución seria bueno que la publique.

NOTA: El juego no lo invente yo (me refiero a las reglas) solo la solución (me refiero al código).

Código:
#include <iostream.h>
#include <conio.c>

void jugar(int *n, int *lim, int j, int tj);
int menu1(int n);
int menu2();
int maquina(int n, int lim);

void main(){
 int j1, j2, lim, n, nj=0;

 j1=menu1(1);
 j2=menu1(2);
 n=menu2();
 lim=n-1;
 clrscr();

 do{
  jugar(&n, &lim, 1, j1);
  if(n!=0){jugar(&n, &lim, 2, j2);}
 }while(n>0);

 system("pause");
}

int menu1(int n){
 int op;
 do{
  clrscr();
  cout<<"-------------------------------------"<<endl;
  cout<<"ELIJA AL JUGADOR "<<n<<" :"<<endl;
  cout<<"-------------------------------------"<<endl;
  cout<<"OPCIONES:"<<endl;
  cout<<"  [1] Hombre. "<<endl;
  cout<<"  [2] Maquina."<<endl;
  cout<<"-------------------------------------"<<endl;
  cout<<"    Ingrese una opcion: (   )      "<<endl;
  cout<<"-------------------------------------"<<endl;
  gotoxy(27, 8); cin>>op;
 }while(op<1 || op>2);
 return op;
}

int menu2(){
 int op;
 do{
  clrscr();
  cout<<"-------------------------------------"<<endl;
  cout<<"Ingrese el numero de pelotas: (     )"<<endl;
  cout<<"-------------------------------------"<<endl;
  gotoxy(33, 2); cin>>op;
 }while(op<2);
 return op;
}

void jugar(int *n, int *lim, int j, int tj){
 int b;

 cout<<"------------------------------------------"<<endl;
 cout<<"TURNO DEL JUGADOR "<<j<<"."<<endl;
 cout<<"Actualmente hay "<<*n<<" pelotas en la caja."<<endl;
 cout<<"Como maximo puede tomar "<<*lim<<" pelotas."<<endl;

 do{
  cout<<"Cuantas pelotas desea tomar? ";
  if(tj==1){cin>>b;} else{b=maquina(*n, *lim); cout<<b<<endl;}

  if(b>*lim){cout<<"ERROR! No puede sacar mas de "<<*lim<<"."<<endl;}
  if(*n-b<0){cout<<"ERROR! Solo hay "<<*n<<" pelotas en la caja."<<endl;}
  if(b==0){cout<<"ERROR! Debe sacar por lo menos 1 pelota."<<endl;}
 }while(b>*lim || *n-b<0 || b==0);

 *lim=2*b;
 *n=*n-b;

 if(*n==0){cout<<"\nEL JUGADOR "<<j<<" HA GANADO EL JUEGO!"<<endl;}
}

int maquina(int n, int lim){
 bool sgmt=false;

 if(n>13){n%=13; sgmt=true;}
 if(lim>=n && !sgmt){return n;}
 if(n>0 && n<7 && lim>=n){return n;}
 if(n>8 && n<12 && n-8<=lim){return n-8;}
 if(n>5 && n<8){return n-5;}
 if(n==4){return 1;}
 if(n>0 && n<3){return n;}
 return 1;
}

En línea
Grib_Jr.
NZ2
**
Desconectado Desconectado

Mensajes: 153


Querer es poder


Ver Perfil
« Respuesta #1 : 07 de Agosto de 2008, 01:36:51 »

felicitaciones, muy buen juego, no lo compile puesto que en este ciber no hay compilador y no puedo descargarlo, no me dejan los muy infelices, sin embargo, el juego tiene una buena base
En línea


Dark_Moor
NZ2
**
Desconectado Desconectado

Mensajes: 149


Adaptarse o morir.


Ver Perfil WWW
« Respuesta #2 : 07 de Agosto de 2008, 03:14:30 »

ES LOGICO QUE NO TE DEJEN ! XD
En línea
Grib_Jr.
NZ2
**
Desconectado Desconectado

Mensajes: 153


Querer es poder


Ver Perfil
« Respuesta #3 : 07 de Agosto de 2008, 05:14:57 »

xdd viejos del mal, les doy dinero por tar en su caga de ciber y no me dejan ni bajar 1 wea
En línea


csaralg
NZ1
*
Desconectado Desconectado

Mensajes: 66



Ver Perfil
« Respuesta #4 : 12 de Agosto de 2008, 10:04:07 »

jajaja tienes razon eso si molesta!!!  Grin  Gracias por los comentarios.
En línea
Páginas: [1] Ir Arriba Imprimir 
« anterior próximo »
Ir a:  


Ingresar con nombre de usuario, contraseña y duración de la sesión

Powered by SMF 1.1.6 | SMF © 2006-2008, Simple Machines LLC hacker

Juegos gratis - Articulos PHP - Juegos - Trucos - Letras - Juegos - Juegos Online