Juego Pong, quisiera saber el error.

Iniciado por angardo, 28 Julio 2017, 22:42 PM

0 Miembros y 1 Visitante están viendo este tema.

angardo

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.

include <stdio.h>
#define V 21
#define H 75


void inicio(char campo[V][H],int pelx,int pely,int iniJugador,int finJugador,int iniIA,int finIA);
void borde(char campo[V][H]);
void raqJug(char campo[V][H], int iniJugador, int finJugador);
void raqIA(char campo[V][H], int iniIA, int finIA);
void pel(char campo[V][H], int pelx,int pely);



int main(){
int pelx,pely;
int iniJugador, finJugador;
int iniIA,finIA;
char campo[V][H];
pelx= 37;
pely=10;

iniJugador=8;
finJugador=12;

iniIA=8;
finIA=12;

inicio(campo,pelx,pely,iniJugador,finJugador,iniIA,finIA);

return 0;
}

void inicio(char campo[V][H],int pelx,int pely,int iniJugador,int finJugador,int iniIA,int finIA){
borde(campo);
raqJug(campo,iniJugador,finJugador);
raqIA(campo,iniIA,finIA);
pel(campo,pelx,pely);
}

void borde(char campo[V][H]){
int i,j;
for(i=0; i<V-1;i++){
for(j=0;i<H-1;j++){
if(i==0 || i==V-1){
campo[i][j]='-';
}
else  if (j==0 || j==H-1){
campo[i][j]='|';
}
else{
campo[i][j]=' ';
}
}
}
}

void raqJug(char campo[V][H], int iniJugador, int finJugador){
int i,j;

for(i=iniJugador; i<=finJugador ; i++){
for (j=2 ; j<=3 ; j++){
campo[i][j]='X';

}
}
}

void raqIA(char campo[V][H], int iniIA, int finIA){
int i,j;

for (i = iniIA; i<=finIA; i++){
for (j =H-4; j <=H-3 ; j++){
campo[i][j]='X';

}
}
}


void pel(char campo[V][H], int pelx,int pely){
campo[pely][pelx]='O';
}

ivancea96

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:
for(j=0;i<H-1;j++)
Fíjate en la condición, estás usando 'i' en vez de 'j'.

angardo

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.

ivancea96

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.