hola necesito mucho ayuda estoy realizando un programada de voltear el dado en c++. el juego consiste en que se tira un dado al azar y le toca a la maquina o al jugador (nosostros) se anota la puntuacion de la cara superior y se resta 7 (las careas opuestas). A continuacion el juegador o la maquina dependiendo del turno se elige norte sur este y oeste. Si eliges norte por ejemplo : el resultado del dado es 1 al elegir norte se gira la cara y quedaria el correspondiente numeo ( 2). con este oeste y sur lo mismo este hacia la derecha sur hacia atras y oeste hacia la izquierda. la partida termina cuando la maquina o el jugador llegan a 50. si se lllega 50 pierdes . se debe anotar la puntuacion en cada lanzamiento. tambien hay q hacer el dibujo del dado- de momento tengo las caras y el lanzamiento del dado no consigo q las caras giren al hacer norte sur este y oeste y anote la puntuacion. me estoy volviendo loco y he estado mirando en libros webs foros y no encuentro la solucion. De verdad necesito q alguien me ayude tengo q entregarla este domingo. un saludo y gracias
codigo:
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <ctime>
#include <string>
using namespace std;
int main(){ //generacion de caras del dado ( del 1 al 6 )
int norte,sur,este,oeste,random,cara1,cara2,cara3,cara4,cara5,cara6,face,Puntuacion = 0, partidasGanadas= 0,partidasEmpatadas = 0,partidasPerdidas = 0, puntuacionFinal = 0, eleccion1,cara,eJ,eC;
bool salir = false;
string eleccionJugador,reglas;
ifstream leer_reglas;
do{
cout << "Que quieres hacer?" << endl;
cout << "1- Juega y tira el dado" << endl;
cout << "6- Ver instrucciones" << endl;
cout << "0- Salir" << endl;
cin >> eleccion1;
switch(eleccion1)
{
case 0:
cout << "Puntuacion :" << Puntuacion << endl;
cout << "Partidas Ganadas : " << partidasGanadas << endl;
cout << "Partidas Perdidas : " << partidasPerdidas << endl;
cout << "Partidas Empatadas : " << partidasEmpatadas << endl;
cout << "Puntuacion final :" << puntuacionFinal << endl;
cout << "Hasta luego!" << endl;
cout <<"Pulse una enter para continuar....";
cin.fail();
cin.sync();
cin.get();
salir = true;
break;
case 6:
leer_reglas.open("reglas.txt");
if(leer_reglas.is_open()){
while (!leer_reglas.fail() && reglas != "XXX" ){
getline ( leer_reglas,reglas);
if (reglas != "XXX"){
cout << reglas << endl;
}
}
leer_reglas.close();
}
break;
case 1:
srand(time(0));
cout << "resultado del dado" << endl;
for ( int i = 1; i <= 1; i++ ){
cout << 1 + (rand()%6) << endl;
}
srand (time(NULL));
random = 1+(rand()%24);
if ( random == 0 ){
cara1 = 1;
cara2 = 2;
cara3 = 3;
}
else if ( random == 1 ){
cara1 = 1;
cara2 = 3;
cara3 = 5;
}
else if ( random == 2 ){
cara1 = 1;
cara2 = 5;
cara3 = 4;
}
else if ( random == 3 ){
cara1 = 1;
cara2 = 4;
cara3 = 2;
}
else if ( random == 4 ){
cara1 = 2;
cara2 = 6;
cara3 = 3;
}
else if ( random == 5 ){
cara1 = 2;
cara2 =3;
cara3 =1;
}
else if ( random == 6 ){
cara1 = 2;
cara2 =4;
cara3 =6;
}
else if ( random == 7 ){
cara1 =2;
cara2 =1;
cara3 =4;
}
else if ( random == 8 ){
cara1 =3;
cara2 =5;
cara3 =1;
}
else if ( random == 9 ){
cara1 =3;
cara2 =1;
cara3 =2;
}
else if ( random == 10 ){
cara1 =3;
cara2 =2;
cara3 =6;
}
else if ( random == 11 ){
cara1 =3;
cara2 =5;
cara3 =1;
}
else if ( random == 12){
cara1 =4;
cara2 =2;
cara3 =1;
}
else if ( random == 13 ){
cara1 =4;
cara2 =1;
cara3 =5;
}
else if ( random == 14 ){
cara1 =4;
cara2 =5;
cara3 =6;
}
else if ( random == 15 ){
cara1 =4;
cara2 =6;
cara3 =2;
}
else if ( random == 16 ){
cara1 =5;
cara2 =6;
cara3 =4;
}
else if ( random == 17 ){
cara1 =5;
cara2 =4;
cara3 =1;
}
else if ( random == 18 ){
cara1 =5;
cara2 =1;
cara3 =3;
}
else if ( random == 19 ){
cara1 =5;
cara2 =3;
cara3 =6;
}
else if ( random == 20 ){
cara1 =6;
cara2 =5;
cara3 =3;
}
else if ( random == 21 ){
cara1 =6;
cara2 =3;
cara3 =2;
}
else if ( random == 22 ){
cara1 =6;
cara2 =2;
cara3 =4;
}
else if ( random == 23 ){
cara1 =6;
cara2 =4;
cara3 =5;
}
cout << "Elige elemento ( 1-norte, 2-sur, 3-este, 4-oeste)" << endl;
cin >> eJ;
while((eJ != 1)&&(eJ != 2)&&(eJ != 3)&&(eJ != 4))
{
cout << "Elemento desconocido. Intentelo de nuevo " << endl;
cout << "Elige elemento ( 1-norte, 2-sur, 3-este, 4-oeste)" << endl;
cin >> eJ;
}
switch(eJ){
case 1: eleccionJugador = "norte";
break;
case 2: eleccionJugador = "sur";
break;
case 3: eleccionJugador = "este";
break;
case 4: eleccionJugador = "oeste";
break;
}
srand (time(NULL));
eC = 1+ rand ( ) % 6;
switch(eC){
case 2:
cout << "eleccion cpu: norte" << endl;
cout << "Tu eleccion : " << eleccionJugador << endl;
if ( (face == 1) || (eJ == 1)){
cout << "puntuacion" << endl;
srand(time(0));
for ( int i = 1; i <= 1; i++ ){
cout << 1 + (rand()%6) << endl;
}
cara1 = cara2;
cara2 = (cara1)-7;
norte=true;
sur=false;
este=false;
oeste=false;
Puntuacion++;
}
else if (( face == 2) || (eJ == 1)){
cout << "puntuacion" << endl;
srand(time(0));
for ( int i = 1; i <= 1; i++ ){
cout << 1 + (rand()%6) << endl;
}
cara2 = cara2;
cara2 = (cara2)-7;
norte=true;
sur=false;
este=false;
oeste=false;
Puntuacion++;
}
else if (( face == 3)|| ( eJ == 1)){
cout << "puntuacion" << endl;
srand(time(0));
for ( int i = 1; i <= 1; i++ ){
cout << 1 + (rand()%6) << endl;
}
cara3= cara2;
cara2 = (cara3)-7;
norte=true;
sur=false;
este=false;
oeste=false;
Puntuacion++;
}
else if (( face == 4)|| ( eJ == 1 )){
cout << "puntuacion" << endl;
srand(time(0));
for ( int i = 1; i <= 1; i++ ){
cout << 1 + (rand()%6) << endl;
}
cara4 = cara2;
cara2 = (cara4)-7;
norte=true;
sur=false;
este=false;
oeste=false;
Puntuacion++;
}
else if (( face == 5)|| ( eJ == 1 )){
cout << "puntuacion" << endl;
srand(time(0));
for ( int i = 1; i <= 1; i++ ){
cout << 1 + (rand()%6) << endl;
}
cara5 = cara2;
cara2 = (cara5)-7;
norte=true;
sur=false;
este=false;
oeste=false;
Puntuacion++;
}
else if (( face == 6)|| ( eJ == 1 )){
cout << "puntuacion" << endl;
cout << 1 + (rand()%6) << endl;
srand(time(0));
for ( int i = 1; i <= 1; i++ ){
cout << 1 + (rand()%6) << endl;
}
cara6 = cara2;
cara2 = (cara6)-7;
norte=true;
sur=false;
este=false;
oeste=false;
Puntuacion++;
}
;break;
case 3:
cout << "eleccion cpu: sur" << endl;
cout << "Tu eleccion : " << eleccionJugador << endl;
if ( (face == 1) || (eJ == 2) ){
cout << "puntuacion" << endl;
Puntuacion++;
srand(time(0));
for ( int i = 1; i <= 1; i++ ){
cout << 1 + (rand()%6) << endl;
}
cara2 = cara1;
cara1 = (cara2)-7;
norte=false;
sur=true;
este=false;
oeste=false;
}
else if (( face == 2) || (eJ == 2) ){
cout << "puntuacion" << endl;
Puntuacion++;
srand(time(0));
for ( int i = 1; i <= 1; i++ ){
cout << 1 + (rand()%6) << endl;
}
cara2 = cara1;
cara1 = (cara2)-7;
norte=false;
sur=true;
este=false;
oeste=false;
}
else if (( face == 3) || (eJ == 2) ){
cout << "puntuacion" << endl;
srand(time(0));
for ( int i = 1; i <= 1; i++ ){
cout << 1 + (rand()%6) << endl;
}
cara3 = cara1;
cara1 = (cara3)-7;
norte=false;
sur=true;
este=false;
oeste=false;
Puntuacion++;
}
else if (( face == 4) || (eJ == 2) ){
cout << "puntuacion" << endl;
Puntuacion++;
srand(time(0));
for ( int i = 1; i <= 1; i++ ){
cout << 1 + (rand()%6) << endl;
}
cara4 = cara1;
cara1 = ( cara4 )-7;
norte=false;
sur=true;
este=false;
oeste=false;
}
else if (( face == 5) || (eJ == 2) ){
cout << "puntuacion" << endl;
Puntuacion++;
srand(time(0));
for ( int i = 1; i <= 1; i++ ){
cout << 1 + (rand()%6) << endl;
}
cara5 = cara1;
cara1 = ( cara5 )-7;
norte=false;
sur=true;
este=false;
oeste=false;
}
else if (( face == 6) || (eJ == 2) ){
cout << "puntuacion" << endl;
Puntuacion++;
srand(time(0));
for ( int i = 1; i <= 1; i++ ){
cout << 1 + (rand()%6) << endl;
}
cara6 = cara1;
cara1 = (cara6)-7;
norte=false;
sur=true;
este=false;
oeste=false;
}
break;
case 4:
cout << "eleccion cpu: este" << endl;
cout << "Tu eleccion : " << eleccionJugador << endl;
if ((face == 1) || (eJ == 3) ){
cout << "puntuacion" << endl;
Puntuacion++;
srand(time(0));
for ( int i = 1; i <= 1; i++ ){
cout << 1 + (rand()%6) << endl;
}
cara1 = cara3;
cara3 = (cara1)-7;
norte=false;
sur=false;
este=true;
oeste=false;
}
else if (( face == 2) || (eJ == 3) ){
cout << "puntuacion" << endl;
Puntuacion++;
srand(time(0));
for ( int i = 1; i <= 1; i++ ){
cout << 1 + (rand()%6) << endl;
}
cara2 = cara3;
cara3 = (cara2)-7;
norte=false;
sur=false;
este=true;
oeste=false;
}
else if (( face == 3) || (eJ == 3) ){
cout << "puntuacion" << endl;
Puntuacion++;
srand(time(0));
for ( int i = 1; i <= 1; i++ ){
cout << 1 + (rand()%6) << endl;
}
cara3 = cara3;
cara3 = (cara3)-7;
norte=false;
sur=false;
este=true;
oeste=false;
}
else if (( face == 4) || (eJ == 3) ){
cout << "puntuacion" << endl;
Puntuacion++;
srand(time(0));
for ( int i = 1; i <= 1; i++ ){
cout << 1 + (rand()%6) << endl;
}
cara4 = cara3;
cara3 = (cara4)-7;
norte=false;
sur=false;
este=true;
oeste=false;
}
else if (( face == 5) || (eJ == 3) ){
cout << "puntuacion" << endl;
Puntuacion++;
srand(time(0));
for ( int i = 1; i <= 1; i++ ){
cout << 1 + (rand()%6) << endl;
}
cara5 = cara3;
cara3 = (cara5)-7;
norte=false;
sur=false;
este=true;
oeste=false;
}
else if (( face == 6) || (eJ == 3) ){
cout << "puntuacion" << endl;
Puntuacion++;
srand(time(0));
for ( int i = 1; i <= 1; i++ ){
cout << 1 + (rand()%6) << endl;
}
cara6 = cara3;
cara3 = (cara6)-7;
norte=false;
sur=false;
este=true;
oeste=false;
}
break;
case 5:
cout << "eleccion cpu: oeste" << endl;
cout << "Tu eleccion : " << eleccionJugador << endl;
if ( (face == 1) || (eJ == 4) ){
cout << "puntuacion" << endl;
srand(time(0));
for ( int i = 1; i <= 1; i++ ){
cout << 1 + (rand()%6) << endl;
}
cara1 = cara4;
cara4 = (cara1)-7;
norte=false;
sur=false;
este=false;
oeste=true;
Puntuacion++;
}
else if (( face == 2) || (eJ == 4) ){
cout << "puntuacion" << endl;
srand(time(0));
for ( int i = 1; i <= 1; i++ ){
cout << 1 + (rand()%6) << endl;
}
cara2=cara4;
cara4=(cara2)-7;
norte=false;
sur=false;
este=false;
oeste=true;
Puntuacion++;
}
else if (( face == 3) || (eJ == 4) ){
cout << "puntuacion" << endl;
srand(time(0));
for ( int i = 1; i <= 1; i++ ){
cout << 1 + (rand()%6) << endl;
}
cara3 = cara4;
cara4= (cara3)-7;
norte=false;
sur=false;
este=false;
oeste=true;
Puntuacion++;
}
else if (( face == 4) || (eJ == 4) ){
cout << "puntuacion" << endl;
srand(time(0));
for ( int i = 1; i <= 1; i++ ){
cout << 1 + (rand()%6) << endl;
}
cara4 = cara4;
cara4 = (cara4)-7;
norte=false;
sur=false;
este=false;
oeste=true;
Puntuacion++;
}
else if (( face == 5) || (eJ == 4) ){
cout << "puntuacion" << endl;
srand(time(0));
for ( int i = 1; i <= 1; i++ ){
cout << 1 + (rand()%6) << endl;
}
cara5= cara4;
cara4 = (cara5)-7;
norte=false;
sur=false;
este=false;
oeste=true;
Puntuacion++;
}
else if (( face == 6) || (eJ == 4) ){
cout << "puntuacion" << endl;
srand(time(0));
for ( int i = 1; i <= 1; i++ ){
cout << 1 + (rand()%6) << endl;
}
cara6 = cara4;
cara4 = (cara6)-7;
norte=false;
sur=false;
este=false;
oeste=true;
Puntuacion++;
}
break;
}
}
}while (!salir);
return 0;
}
[MOD] El codigo se pone entre etiquetas, gracias.
Para empezar bastaría con declarar "srand (time(NULL));" al comienzo el main y no llamarlo cada vez ya que así corres el riesgo que siempre te salga el mismo valor.
La puntuación lo miraré con más calma.
Saluditos".
ok muchas gracias
cuando puedas dime q mas esta mal gracias
Cita de: shawwilliam en 25 Enero 2013, 17:39 PM
cuando puedas dime q mas esta mal gracias
Seguro que al elegir la opción 1 y el tipo norte,sur,etc te sale el menú principal sin que haga ninguna jugada. Eso se debe a que la opción de eC la tienes como "eC = 1+ rand ( ) % (6);" con lo que cuando sale "eC = 1 o 6 no se corresponde con los case de eC, que van de 2 a 5. Por eso debes cambiarlo a "2+ rand ( ) % (4);".
Por otro lado no tienes implementada la forma de calcular jugadas ganadas,empatadas, perdidas y, lo principal, simplemente jugadas. Este último caso lo logras con:
...................................
case 1:
partidasJugadas++; <==declara como int a esta variable
cout << "resultado del dado: " ;
cout << 1 + (rand()%6) << endl;
Ya me diras que tal te va con la implementación de las otras variables.
Saluditos!.
una vez q he implenteado las partidas jugadas.¿ seria exactamente igual q con las partidas perdidas,ganadas,y final ?
Cita de: shawwilliam en 26 Enero 2013, 16:35 PM
una vez q he implenteado las partidas jugadas.¿ seria exactamente igual q con las partidas perdidas,ganadas,y final ?
La partidasJugadas sería igual a las ganadas+perdidas+empatadas.
Por cierto, ¿podrías explicarme mejor el sistema de puntuación?.
Aparentemente es el resultado del dado más la cara -norte,sur,este,oeste- que elija. ¿O estoy equivocado?. No entiendo lo de restarle 7 que comentas. :P
Saluditos!.
otra cosa como haria el dibujo del dado ?????
Cita de: shawwilliam en 26 Enero 2013, 17:18 PM
otra cosa como haria el dibujo del dado ?????
En C++ a secas nada de nada.
Habría que recurrir a las API de windows y sus directx, o bien a las librerías de openGL o SDL o ...... Pero son librerías, a encontrar, instalar y saber manejar sus funciones respectivas.
Como vez ,un nuevo mundo se abre ante tus ojos .... y hay más,claro.
Saluditos!.
hay q restarle 7 debido a las caras opuestas es como la profe ha dicho q lo hagamos
Bueno... yo hice el programa en C..... Porque en C++ no sé, espero que te sirva, solo tienes que cambiar algunas cosillas, como el printf a cout y demás..... No creo que sea tan excesivo hacer 800 lineas (CREO) igual me equivoco! Aquí te dejo el código!!!
#include <stdio.h>
#include <conio.h>
main()
{
int numeroaleatorio, numeroaleatorio2 ,partidasganadas, partidasperdidas, partidasempatadas;
char c;
partidasganadas=0;
partidasperdidas=0;
partidasempatadas=0;
srand(time(NULL));
printf("Pulsa 'o' para empezar.\n");
while((c=getchar())!='y')
{
if (c=='\n')
continue;
numeroaleatorio = rand() % 6 + 1;
numeroaleatorio2 = rand() % 6 + 1;
printf("Tiras el dado y sale : %d\n", numeroaleatorio);
printf("La maquina ha tirado el dado y ha salido %d\n", numeroaleatorio2);
if(numeroaleatorio>numeroaleatorio2)
{
partidasganadas++;
printf("Tu llevas %d partidas ganadas\n", partidasganadas);
}
else if(numeroaleatorio==numeroaleatorio2)
{
partidasempatadas++;
printf("Has quedado empate, una pena. Llevas %d partidas empatadas\n", partidasempatadas );
}
else
{
partidasperdidas++;
printf("La suerte no va contigo.., llevas %d partidas perdidas %c%c", partidasperdidas, ':', '(');
}
printf("Pulsa 'o' para repetir\n");
}
}