Muy buenas, estoy siguiendo el tutorial para hacer el juego "pong", pero al Compilar y Ejecutar, se abre la consola pero me da el error de que el juego dejó de funcionar, estoy comparando el código y no veo ninguna diferencia, y lo he mirado todo. Si alguien encuentra el problema le agradecería que lo comentase. Seguramente sea algo que me he dejado o algún error tonto, pero por más que busco no lo encuentro. (También os comento que la función : leercamp, es sólo para ver como queda el campo y si va todo correcto por ahora, no es que vaya ahí de verdad al finalizar el juego.)
#include <stdio.h>
#define V 21
#define H 75

void inicio(char campo[V][H], int pelx, int pely, int inijug, int finjug, int iniia, int finia);
void borde(char campo[V][H]);
void raqjug(char campo[V][H], int inijug, int finjug);
void raqia(char campo[V][H], int iniia, int finia);
void pel(char campo[V][H], int pelx, int pely);
void leercamp(char campo[V][H]);

int main(){
	
	int pelx,pely,inijug,finjug,iniia,finia;
	char campo[V][H];
	
	pelx = 37;
	pely = 10;
	
	inijug = 8;
	finjug = 12;
	
	iniia = 8;
	finia = 12;
	
	inicio (campo,pelx,pely,inijug,finjug,iniia,finia);
	
	leercamp(campo);
	
	system("pause");
	return 0;
}

void inicio(char campo[V][H], int pelx, int pely, int inijug, int finjug, int iniia, int finia){
	borde(campo);
	raqjug(campo, inijug,finjug);
	raqia(campo, iniia,finia);
	pel(campo, pelx, pely);
}

void borde(char campo[V][H]){
	int i,j;
	
	for(i=0;i<V;i++){
		for(j=0;j<H;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 inijug, int finjug){
	int i,j;
	
	for(i=inijug;i<=finjug;i++){
		for(j=2;j<=3;i++){
			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';
}

void leercamp(char campo[V][H]){
	int i,j;
	
	for(i=0;i<V;i++){
		for(j=0;j<H;j++){
			printf("%c",campo[i][j]);
		}
		printf("\n");
	}
}
Gracias de antemano
No he revisado el código por falta de ganas, pero es que debo decirlo...
Este es un pesimo modo de programar un juego, no contiene el esquema de programación como tal.
La verdad no le encuentro la mecanica y tampoco es que así aprendas a programar algo "real", si quieres
programar juegos busca C++ SDL, yo aprendí MUCHO programando mini-juegos con SDL, es muy potente y
si se la combina con OpenGl puedes hacer motores graficos del ancho de unity y más.
Muchos juegos comerciales se han hecho con SDL o SDL + OpenGl y como decía antes se aprende mucho más
ya que se sigue un concepto(y se pone en practica muchas cosas)..
Es una critica constructiva... no con el ánimo de ofender. Nunca aprenda de un solo libro siempre busque varios tutoriales, lea otros códigos, pruebe por su cuenta y desarrolle su propia version, solo como consejo.
Vale, el problema es que no encuentro otros tutoriales del mismo nivel, y me preocupa estar aprendiendo de forma equivocada :/

¿Me recomiendas algún libro o forma de aprender, que comience desde principiante y sea fiable?

Gracias :)
Bueno para C puro tanto como para C++ siempre trato de buscar los tutoriales más oficiales(que estan en ingles).
Aquí una pagina buena de C [Enlace externo eliminado para invitados] también puede buscar videos de programación en youtube hay muchos... yo realmente ni recuerdo de donde aprendí todo lo que se, ya que estudie y leí cientos y cientos de tutoriales/pdfs, videos, etc..
Para programar videojuegos con SDL 1 y 2, OpenGl y más [Enlace externo eliminado para invitados]
que por cierto con SDL2 se pueden hacer juegos para PSP, también grandes videojuegos se hicieron con ésta libreria como amnesia, algunos de los motores de Doom que se pueden encontrar hoy en día, etc..

PD: De los errores se aprende, así que no tenga miedo al principio y a medida que vaya pasando el tiempo, usted solo se dara cuenta de ellos y si es prudente continuar o no, lo peor que puede pasar es que se de cuenta que el mundo de la programación no es para usted, de todos modos es un acto bastante grande empezar con un lenguaje tan tecnico como C/C++ en un futuro le recomiendo aprender pascal y ASM.
Gracias NvK, la cuestión es no parar de buscar lo que se quiere aprender... Gracias por los links.

Yo había pensado en Java o Delphi, ¿que te parecen?

Un abrazo.
Claro nunca deje de perseguir el conocimiento... es eterno
Delphi por supuesto es exelente para empezar y más que eso, lo usan mucho en las universidades, y de hecho la mayoria de troyanos de hoy en día se programan en este lenguaje por su potencia, estabilidad, etc.
Ademas es el único lenguaje que más se le acerca hoy en día a C.
Java por supuesto que no, no es un lenguaje y mucho menos aprendara algo relacionado con el hacking, si elije el camino facil olvidese de progamar drivers, malware a nivel avanzado, rootkits, manipulacion de memoria, hardware, relacion con la electronica, ingeniera inversa, etc..
Umm, entonces Delphi la mejor opción ¿? Para hacer prácticamente cualquier cosa que se imagine ¿?

PD: Creía que Delphi no se parecía a C o muy poco :/
Si, incluso hasta drivers se pueden hacer sea en windows o linux. Un claro ejemplo de troyanos es el coolvibes(nacido en éste mismo foro!) la madre del 80% de troyanos de hoy en día, como el spynet, bifrost y muchos más.
Responder

Volver a “C/C++”