Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: angardo en 28 Julio 2017, 22:42 pm



Título: Juego Pong, quisiera saber el error.
Publicado por: angardo en 28 Julio 2017, 22:42 pm
Hola que tal?, estoy haciendo el juego llamado pong en C, a la hora de ejecutar me compila bien, pero a la hora de ejecutar el programa se detiene, quisiera saber porque ocurre.

Código
  1. include <stdio.h>
  2. #define V 21
  3. #define H 75
  4.  
  5.  
  6. void inicio(char campo[V][H],int pelx,int pely,int iniJugador,int finJugador,int iniIA,int finIA);
  7. void borde(char campo[V][H]);
  8. void raqJug(char campo[V][H], int iniJugador, int finJugador);
  9. void raqIA(char campo[V][H], int iniIA, int finIA);
  10. void pel(char campo[V][H], int pelx,int pely);
  11.  
  12.  
  13.  
  14. int main(){
  15. int pelx,pely;
  16. int iniJugador, finJugador;
  17. int iniIA,finIA;
  18. char campo[V][H];
  19. pelx= 37;
  20. pely=10;
  21.  
  22. iniJugador=8;
  23. finJugador=12;
  24.  
  25. iniIA=8;
  26. finIA=12;
  27.  
  28. inicio(campo,pelx,pely,iniJugador,finJugador,iniIA,finIA);
  29.  
  30. return 0;
  31. }
  32.  
  33. void inicio(char campo[V][H],int pelx,int pely,int iniJugador,int finJugador,int iniIA,int finIA){
  34. borde(campo);
  35. raqJug(campo,iniJugador,finJugador);
  36. raqIA(campo,iniIA,finIA);
  37. pel(campo,pelx,pely);
  38. }
  39.  
  40. void borde(char campo[V][H]){
  41. int i,j;
  42. for(i=0; i<V-1;i++){
  43. for(j=0;i<H-1;j++){
  44. if(i==0 || i==V-1){
  45. campo[i][j]='-';
  46. }
  47. else  if (j==0 || j==H-1){
  48. campo[i][j]='|';
  49. }
  50. else{
  51. campo[i][j]=' ';
  52. }
  53. }
  54. }
  55. }
  56.  
  57. void raqJug(char campo[V][H], int iniJugador, int finJugador){
  58. int i,j;
  59.  
  60. for(i=iniJugador; i<=finJugador ; i++){
  61. for (j=2 ; j<=3 ; j++){
  62. campo[i][j]='X';
  63.  
  64. }
  65. }
  66. }
  67.  
  68. void raqIA(char campo[V][H], int iniIA, int finIA){
  69. int i,j;
  70.  
  71. for (i = iniIA; i<=finIA; i++){
  72. for (j =H-4; j <=H-3 ; j++){
  73. campo[i][j]='X';
  74.  
  75. }
  76. }
  77. }
  78.  
  79.  
  80. void pel(char campo[V][H], int pelx,int pely){
  81. campo[pely][pelx]='O';
  82. }
  83.  


Título: Re: Juego Pong, quisiera saber el error.
Publicado por: ivancea96 en 28 Julio 2017, 22:58 pm
Algo que vi es que hiciste los for parala matriz desde i=0 hasta "i<V-1". Querrías decir "i<V". Del otro modo, no llegas a tocar nunca eel último índice.

Y bueno, dices que al ejecutar se detiene, pero eso no es información suficiente. Busca en qué línea se detiene. Para ello, puedes poner printf, por ejemplo, hasta que veas que uno de ellos no se muestra.

De todos modos, mirando ahora el código, encontré, en la línea 43:
Código
  1. for(j=0;i<H-1;j++)
Fíjate en la condición, estás usando 'i' en vez de 'j'.


Título: Re: Juego Pong, quisiera saber el error.
Publicado por: angardo en 28 Julio 2017, 23:41 pm
gracias, si ese era mi error, en vez de j puse i(error mas tonto el que cometi), y por si las dudas , puse V-1 ya que el valor de V es 21, pero los indices de la matriz van desde el 0 hasta el 20, que son 21 indices en total, y si pongo solo V pues me daria error por que se esta escribiendo en un lugar que no le pertenece a la matriz.


Título: Re: Juego Pong, quisiera saber el error.
Publicado por: ivancea96 en 28 Julio 2017, 23:58 pm
El caso es que tienes i<V-1. i nunca va a llegar al 20 siendo V=21. Un símbolo "menor que" no dejará que llegue. Ese i va a llegar a 19, no a 20. Eso quedaría como "i<20". 20 no es menor que 20.