elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda Sobre Problema En Función While(Para creación de serpientes y escaleras)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda Sobre Problema En Función While(Para creación de serpientes y escaleras)  (Leído 1,272 veces)
greenpark

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Duda Sobre Problema En Función While(Para creación de serpientes y escaleras)
« en: 2 Junio 2017, 00:27 am »

Buenas tengo una duda, estoy trabajando con la creacion de el juego serpientes y escaleras en C, y a la hora de crear dichas serpientes y escaleras se me crea un bucle con el While, donde el programa se ejecuta algunas veces y otras no se ejecuta

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. void ingresar();
  6. void imprimir();
  7. void constructor();
  8. int turnojugador();
  9.  
  10. int dado1,dado2;
  11. char jugador1='X',PC='O';  
  12.  
  13. typedef struct modeloserpiente {
  14.       int cabeza_X,cabeza_Y, cola_X,cola_Y;
  15. }serpiente;
  16. typedef struct modeloescalera {
  17.        int inicio_X,inicio_Y, final_X,final_Y;
  18. }escalera;
  19.  
  20. typedef struct modelo_casilla{
  21.   char letra;
  22.   int numero;
  23. }casilla;
  24.  
  25. casilla matriz[10][10] = {0};
  26.  
  27. escalera escaleras[5]={0};
  28. serpiente serpientes[5]={0};      
  29.  
  30.  
  31. //Carga dentro de la matriz las serpientes y escalera generados al azar, no genera salida(no devuelve nada)//
  32. void constructor(){
  33. printf("\n");
  34.     int i,j,k,aux,bandera,e;
  35.     for(i=0;i<6;i++)
  36.     {
  37.        serpientes[i].cabeza_Y = (rand() % 9);
  38.        serpientes[i].cabeza_X = (rand() % 8) +1;
  39.        serpientes[i].cola_Y =   (rand() % 9);
  40.        matriz[serpientes[i].cabeza_X][serpientes[i].cabeza_Y].letra = 'S';
  41.        do
  42.        {
  43.          serpientes[i].cola_X = (rand() % 9); printf("\n");
  44.          if(serpientes[i].cola_X > serpientes[i].cabeza_X)
  45.          {
  46.            break;
  47.          }
  48.        }while(1);
  49.       matriz[serpientes[i].cola_X][serpientes[i].cola_Y].letra = 's';
  50.     }
  51.    for(i=0;i<5;i++)
  52. {
  53. escaleras[i].final_X = (rand() % 9);
  54. escaleras[i].inicio_Y = (rand() % 9);
  55. escaleras[i].final_Y = (rand() % 9);
  56. matriz[escaleras[i].inicio_X][escaleras[i].inicio_Y].letra = 'E';
  57. do
  58. {
  59. escaleras[i].inicio_X= (rand() % 9); printf("\n");
  60. if(escaleras[i].inicio_X < escaleras[i].final_X)
  61. {
  62. printf("\n");
  63. break;
  64. }
  65. }while(1);
  66.  
  67. matriz[escaleras[i].final_X][escaleras[i].final_Y].letra = 'e';
  68. }
  69. printf("\n");
  70. }
  71.  
  72. //Cargamos dentro de la matriz los numeros de casillas correspondiente a un trablero de juego//
  73. void ingresar(){
  74. int i,j;
  75. int aux;
  76.  
  77. aux=101;
  78. for (i=0; i<10 ; i++){
  79. for (j=0; j<10; j++){
  80. switch (i){
  81. case 0: {
  82. (matriz[i][j]).numero= 100-j;
  83. break;
  84. }
  85. case 1: {
  86. (matriz[i][j]).numero = 81+j;
  87. break;
  88. }
  89. case 2: {
  90. (matriz[i][j]).numero= 80-j;
  91. break;
  92. }
  93. case 3: {
  94. (matriz[i][j]).numero= 61+j;
  95. break;
  96. }
  97. case 4: {
  98. (matriz[i][j]).numero=60-j;
  99. break;
  100. }
  101. case 5: {
  102. (matriz[i][j]).numero= 41+j;
  103. break;
  104. }
  105. case 6: {
  106.                     (matriz[i][j]).numero= 40-j;
  107. break;
  108. }
  109. case 7: {
  110. (matriz[i][j]).numero= 21+j;
  111. break;
  112. }
  113. case 8: {
  114.     (matriz[i][j]).numero= 20-j;
  115. break;
  116. }
  117. case 9: {
  118. (matriz[i][j]).numero= 1+j;
  119. break;
  120. }
  121. }
  122.  
  123. }
  124. }
  125. }
  126.  
  127. //Imprimimos el tablero de juego considerando si cada casilla posee una ficha,escalera,serpiente, imprimiendolo o en caso contrario imprimiendo el numero//
  128. void imprimir(){
  129.     int i,j;
  130.     for (i=0; i<10; i++) {
  131.         for (j=0; j<10; j++) {
  132.          if(matriz[i][j].letra == 'Z'||matriz[i][j].letra == 'X' || matriz[i][j].letra == 'O' || matriz[i][j].letra == 'S' || matriz[i][j].letra == 'E' || matriz[i][j].letra == 's' || matriz[i][j].letra == 'e')
  133.          {
  134.             printf("%3c",matriz[i][j].letra);
  135.           }    
  136.           else
  137.           {
  138.             printf("%3d",matriz[i][j].numero);
  139.           }
  140.         }
  141.         printf("\n");
  142. }    
  143.  
  144. }
  145.  
  146. //Esta funcion pregunta al usuario si quiere seguir jugando o rendirse//
  147. //En caso de querer rendirse queda registrado para salir del juego//
  148. //En caso de seguir jugando se generara numeros para los dados y se movera la ficha la cantidad de casillas indicada por los dados//
  149. int turnojugador()
  150. {
  151.  srand(time(NULL));
  152.  printf("\nAhora le toca al jugador lanzar sus dados!\n");
  153.  int seleccion,aux,bandera;
  154.  do
  155.  {
  156.    printf("\nSeleccione una opcion de las siguientes:\n1-)Lanzar los dados.\n2-)Salir Del Juego. \n3-)Acerca De: \nSu eleccion es: ");
  157.    aux=scanf("%d",&seleccion);
  158.    fflush(stdin);
  159.    if(aux==1 && seleccion ==1 ||seleccion == 2 )
  160.    {
  161.      printf("Gracias Por Jugar Nuestro Juego \n ");
  162.   break;
  163.    }
  164.    else
  165.    {
  166.     printf("Resena\n Serpientes y escaleras es un antiguo juego\n de tablero indio, considerado \n actualmente como un clasico a nivel\n mundial. Se juega entre dos o mas \n personas en un tablero numerado y \n dividido en casilleros, que posee ademas \n un numero determinado de serpientes y \n escaleras que conectan, cada una, dos \n casilleros numerados. El movimiento se \n determina en la actualidad por un dado \n  cuyos valores estan \n comprendidos entre 1 y 6.\n\n Objetivo\n\n El objetivo del juego es lograr que la ficha\n del jugador llegue desde el inicio: \n casillero inferior izquierdo, hasta el final:\n casillero superior izquierdo, ayudado por\n las escaleras y evitando las serpientes\n \n\n Reglas\n\n 1-Tirar los dados y moverse \n 2-Deslizarse hacia abajo si sale serpientes \n 3-Subirse hacia arriba si sale escaleras \n 4-Caer Exactamente en 100 para ganar");    }
  167.  }while(1);
  168.  if(seleccion==2)
  169.  {
  170.    return 2;
  171.  }
  172.  dado1=(rand() % 6)+1;
  173.  dado2=(rand() % 6)+1;
  174.  printf("\nEn su primer dado obtuvo:%d\nEn su segundo dado optuvo:%d \n",dado1,dado2);
  175.  printf("\nUsted se movera %d casillas.",dado1+dado2);
  176.  int i,j,k;
  177.  int fila_nueva,columna_nueva;
  178.  for(i=0;i<10;i++)
  179.  {
  180.     for(j=0;j<10;j++)
  181.     {
  182.       if(matriz[i][j].letra=='X' || matriz[i][j].letra=='Z')
  183.       {
  184.  
  185.       }
  186.     }
  187.  }
  188. }
  189.  
  190. // Para finalizar el juego
  191. int finalizarJuego(int jug1, int jug2, int x, int y)
  192. {
  193. if(jug1>=100)
  194. {
  195.        jug1=100;
  196.        printf("\n");
  197.        printf("Jugador 1 es el Ganador",x,y);
  198.        printf("\n");
  199.    }
  200.    else
  201. {
  202.        jug2=100;
  203.        printf("\n");
  204.        printf("Jugador 2 es el Ganador ",y,x);
  205.        printf("\n");
  206.    }
  207.    return 0;
  208. }
  209.  
  210. int main() {
  211.  
  212. srand(time(NULL));      
  213. printf("\nBienvenido al juego\n");
  214. ingresar();
  215. constructor();
  216.    imprimir();
  217. matriz[9][0].letra = 'Z';
  218. turnojugador();
  219. return 0;
  220. }


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Codigo del Juego de Serpientes y Escaleras
Programación Visual Basic
YEXBOND007 0 6,737 Último mensaje 13 Marzo 2007, 06:33 am
por YEXBOND007
Duda personal sobre proceso de creación.
Foro Libre
m0rf 2 1,029 Último mensaje 16 Junio 2012, 22:04 pm
por m0rf
Duda sobre la creacion de usuarios
GNU/Linux
Drewermerc 8 2,290 Último mensaje 8 Diciembre 2014, 07:29 am
por Drewermerc
[?] [C++] Duda sobre creación de directorios
Programación C/C++
marlboreano 2 1,143 Último mensaje 22 Marzo 2015, 17:49 pm
por Orubatosu
Duda sobre creacion de pagina web
Desarrollo Web
Farok 3 1,406 Último mensaje 17 Mayo 2017, 20:27 pm
por arkero4
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines