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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [AYUDA[Error/Problema Cuatro en Línea
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [AYUDA[Error/Problema Cuatro en Línea  (Leído 1,833 veces)
toomi.143

Desconectado Desconectado

Mensajes: 3


Ver Perfil
[AYUDA[Error/Problema Cuatro en Línea
« en: 25 Marzo 2017, 01:20 am »

Hola a todos gente! Primero que nada quería comentarles que soy nuevo en este foro, y bastante nuevo en el mundo de la programación. Estoy programando un cuatro en línea de una manera bastante rudimentaria, no es eficaz, pero la idea es que funcione.

No tiene una interfaz gráfica, el tablero vacío son 0 y cuando juega el jugador 1 y 2 son 1 y 2 respectivamente.

Hasta ahora llegué a programar todo excepto cuando hay un cuatro en línea en diagonal, algo que todavía no llegué a hacer, pero me encontré con otro problema que la verdad pedí ayuda y nadie supo brindarmela.


MI PROBLEMA ES EL SIGUIENTE:

Cuando alguien desea introducir una "ficha" en la columna 6, 9, o 10,
POR PRIMERA VEZ automáticamente se "saltea" el turno, es decir, no toma el valor de esa ficha, y le corresponde jugar al siguiente jugador.
Esto solo me ocurre la primera vez en las columnas 6, 9 y 10 la verdad  me cuesta entender por que, en fin, adjunto el código y agradecería mucho al que encontrará este error

ACLARO: La lógica no es la mejor ni la más eficaz.

MUCHAS GRACIAS A LOS QUE TOMAN SU TIEMPO PARA DARME UNA MANO


Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. const int numeroDeFilas=10;
  5. const int numeroDeColumnas=10;
  6. const int empate=(numeroDeFilas*numeroDeColumnas);
  7. bool ganador=false;
  8.  
  9. void inicializarCuadro(int cuadro[][numeroDeColumnas])
  10. {
  11. int i,j;
  12. for (i=0; i<numeroDeFilas; i++)
  13. {
  14. for (j=0; j<numeroDeColumnas; j++)
  15. {
  16. cuadro[i][j]=0;
  17. }
  18. }
  19. }
  20.  
  21. void imprimirCuadro(int cuadro[][numeroDeColumnas])
  22. {
  23. int i,j;
  24. for (i=0; i<numeroDeFilas; i++)
  25. {
  26. for (j=0; j<numeroDeColumnas; j++)
  27. {
  28. cout << cuadro[i][j];
  29. }
  30. cout << endl;
  31. }
  32. }
  33.  
  34. void turnoUno(int cuadro[][numeroDeColumnas]) // Turno del Jugador 1
  35. {
  36. bool movimientoValido=false;
  37. int c,i;
  38. while (!movimientoValido)
  39. {
  40. cout << "Juega el Jugador 1" << endl;
  41. cout << "Ingrese el numero de columna, de 1 a 10" << endl;
  42. cin  >> c;
  43. c--;
  44. while (c<0 || c>9)
  45. {
  46. cout << "Movimiento Invalido, reingrese la jugada" << endl;
  47. imprimirCuadro(cuadro);
  48. cout << "Juega el Jugador 1" << endl;
  49. cout << "Ingrese el numero de columna, de 1 a 10" << endl;
  50. cin  >> c;
  51. c--;
  52. }
  53. for (i=numeroDeFilas;i>-1;i--)
  54. {
  55. if (cuadro[i][c]==0 && !movimientoValido)
  56. {
  57. cuadro[i][c]=1;
  58. movimientoValido=true;
  59. }
  60. }
  61. if (cuadro[numeroDeFilas][c]!=0 && !movimientoValido)
  62. {
  63. imprimirCuadro(cuadro);
  64. cout << "La Columna está llena, reingrese la jugada" << endl;
  65. }
  66. }
  67. }
  68.  
  69. void turnoDos(int cuadro[][numeroDeColumnas]) //Turno del Jugador 2
  70. {
  71. bool movimientoValido=false;
  72. int c,i;
  73. while (!movimientoValido)
  74. {
  75. cout << "Juega el Jugador 2" << endl;
  76. cout << "Ingrese el numero de columna, de 1 a 10" << endl;
  77. cin  >> c;
  78. c--;
  79. while (c<0 || c>9)
  80. {
  81. cout << "Movimiento Invalido, reingrese la jugada" << endl;
  82. imprimirCuadro(cuadro);
  83. cout << "Juega el Jugador 2" << endl;
  84. cout << "Ingrese el numero de columna, de 1 a 10" << endl;
  85. cin  >> c;
  86. c--;
  87. }
  88. for (i=numeroDeFilas;i>-1;i--)
  89. {
  90. if (cuadro[i][c]==0 && !movimientoValido)
  91. {
  92. cuadro[i][c]=2;
  93. movimientoValido=true;
  94. }
  95. }
  96. if (cuadro[numeroDeFilas][c]!=0 && !movimientoValido)
  97. {
  98. imprimirCuadro(cuadro);
  99. cout << "La Columna está llena, reingrese la jugada" << endl;
  100. }
  101. }
  102. }
  103.  
  104. void vertical(int cuadro[][numeroDeColumnas])
  105. {
  106. bool encontradoUno, encontradoDos=false;
  107. int i,j;
  108. int totalUno =0;
  109. int totalDos=0;
  110. for (j=0;j<numeroDeColumnas;j++)
  111. {
  112. totalUno=0;
  113. totalDos=0;
  114. for (i=0;i<numeroDeFilas;i++)
  115. {
  116. if (cuadro[i][j] == 1 && encontradoUno) //Si el Jugador1 Hace 4 en linea Vertical
  117. {
  118. totalUno++;
  119. }
  120. else
  121. {
  122. encontradoUno=false;
  123. totalUno=0;
  124. }
  125. if (cuadro[i][j] == 1 && !encontradoUno)
  126. {
  127. totalUno++;
  128. encontradoUno=true;
  129. }
  130. if (totalUno == 4)
  131. {
  132. cout << "El jugador 1 gana!" << endl;
  133. ganador=true;
  134. }
  135. if (cuadro[i][j] == 2 && encontradoDos) //Si el Jugador 2 Hace 4 en linea Vertical
  136. {
  137. totalDos++;
  138. }
  139. else
  140. {
  141. totalDos=0;
  142. encontradoDos=false;
  143. }
  144. if (cuadro[i][j] == 2 && !encontradoDos)
  145. {
  146. totalDos++;
  147. encontradoDos=true;
  148. }
  149. if (totalDos == 4)
  150. {
  151. cout << "El jugador 2 gana!" << endl;
  152. ganador=true;
  153. }
  154. }
  155. }
  156. }
  157.  
  158. void horizontal(int cuadro[][numeroDeColumnas])
  159. {
  160. bool encontradoUno, encontradoDos=false;
  161. int i,j;
  162. int totalUno =0;
  163. int totalDos=0;
  164. for (i=0;i<numeroDeFilas;i++)
  165. {
  166. totalUno=0;
  167. totalDos=0;
  168. for (j=0;j<numeroDeColumnas;j++)
  169. {
  170. if (cuadro[i][j] == 1 && encontradoUno) //Si el Jugador1 Hace 4 en linea Horizontal
  171. {
  172. totalUno++;
  173. }
  174. else
  175. {
  176. encontradoUno=false;
  177. totalUno=0;
  178. }
  179. if (cuadro[i][j] == 1 && !encontradoUno)
  180. {
  181. totalUno++;
  182. encontradoUno=true;
  183. }
  184. if (totalUno == 4)
  185. {
  186. cout << "El jugador 1 gana!" << endl;
  187. ganador=true;
  188. }
  189. if (cuadro[i][j] == 2 && encontradoDos) //Si el Jugador 2 Hace 4 en linea horizontal
  190. {
  191. totalDos++;
  192. }
  193. else
  194. {
  195. totalDos=0;
  196. encontradoDos=false;
  197. }
  198. if (cuadro[i][j] == 2 && !encontradoDos)
  199. {
  200. totalDos++;
  201. encontradoDos=true;
  202. }
  203. if (totalDos == 4)
  204. {
  205. cout << "El jugador 2 gana!" << endl;
  206. ganador=true;
  207. }
  208. }
  209. }
  210. }
  211.  
  212. void jugar(int cuadro[][numeroDeColumnas])
  213. {
  214. int fichas=0;
  215. while (fichas!=empate && !ganador)
  216. {
  217. if (fichas%2==0)
  218. {
  219. turnoUno(cuadro);
  220. vertical(cuadro);
  221. horizontal(cuadro);
  222. fichas++;
  223. imprimirCuadro(cuadro);
  224. }
  225. else
  226. {
  227. turnoDos(cuadro);
  228. vertical(cuadro);
  229. horizontal(cuadro);
  230. fichas++;
  231. imprimirCuadro(cuadro);
  232. }
  233.  
  234. }
  235. if (fichas == empate) //Caso de Empate
  236. {
  237. cout << "EMPATE! El juego ha terminado" << endl;
  238. }
  239. }
  240.  
  241. int main() //Programa Principal
  242. {
  243. int cuadro[numeroDeFilas][numeroDeColumnas];
  244. cout << "Cuatro en Linea" << endl;
  245. inicializarCuadro(cuadro);
  246. imprimirCuadro(cuadro);
  247. jugar(cuadro);
  248. return 0;
  249. }



En línea

Natalia94x

Desconectado Desconectado

Mensajes: 19


Ver Perfil
Re: [AYUDA[Error/Problema Cuatro en Línea
« Respuesta #1 en: 25 Marzo 2017, 01:49 am »

Hola toomi.143 , te podrias explicar un poco mejor? para poder ayudarte, Saludos!


En línea

toomi.143

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: [AYUDA[Error/Problema Cuatro en Línea
« Respuesta #2 en: 25 Marzo 2017, 07:31 am »

Hola toomi.143 , te podrias explicar un poco mejor? para poder ayudarte, Saludos!

Hola Natalia, el problema que tengo es el siguiente, por algún motivo cuando arranca el juego e inserto la primer ficha en cualquiera de las columnas 6, 9 o 10, tengo un bug, que lo que pasa es que saltea el turno y no coloca la ficha en esas columnas. Esto ocurre la primera vez que se desea insertar las fichas en dichas columnas.

Espero poder haber sido lo suficientemente claro =D

Gracias espero tu ayuda.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda sobre Cuatro en línea « 1 2 »
Programación C/C++
DickGumshoe 13 5,512 Último mensaje 19 Enero 2012, 19:12 pm
por satu
Ayuda database se detuvo en la linea 360 detenido por error con big dump
Bases de Datos
Weeken 3 3,957 Último mensaje 5 Junio 2013, 22:25 pm
por Shell Root
ayuda error en la linea 15 de fuentes
GNU/Linux
dobrevic08 1 2,054 Último mensaje 15 Abril 2016, 08:44 am
por Slava_TZD
juego de cuatro en linea en lenguaje C
Programación C/C++
gwennnnnn26 5 3,182 Último mensaje 7 Diciembre 2016, 01:24 am
por jvm1994
ayuda me sale error en la linea 10 pygame
Scripting
ReAdriel 4 2,380 Último mensaje 7 Agosto 2017, 04:51 am
por ReAdriel
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines