domingo, 1 de junio de 2014

Cómo hacer videojuegos en C++ ??


Hola a todos,

No puedo contar el número de veces que me han preguntado... :  "oye, como lo hago para hacer videojuegos en C++?"

La respuesta es muy cruel. Con tiempo y paciencia (y la experiencia que eso conlleva). Uno de los grandes problemas de aprender a programar es que aprendes las cosas fantásticas que puedes llegar a hacer, pero poco a poco te das cuenta de la enormidad de trabajo  que conllevan.

Un consejo para avanzar en el sueño de hacer nuestro propio videojuego, id poco a poco, marcando objetivos que signifiquen un reto, pero realistas (no os planteéis hacer un videojuego AAA con 2 colegas en un garaje, por que (el 99,9% de las veces) no funciona)

Si realmente queréis hacer vuestro propio videojuego os propongo unos sencillos pasos para ir guiando vuestros esfuerzos:

- Domina el lenguaje: Antes que plantearte hacer un gran videojuego tienes que estar seguro que dominas el lenguaje con el que lo vas a desarrollar, sino, te vas a llevar sorpresas muy desagradables a medio desarrollo. La forma de mejorar no es más que programar, programar y programar en ese lenguaje e irte encontrando con los problemas y ventajas que ofrece. Si tu objetivo es C++ tal vez este link te sirva.

- Practica algoritmia: Estate seguro que estas en buena forma a la hora de resolver problemas de programación. Que las soluciones que propones sean buenas o como mínimo aceptables,  que no haces parches, que no te encuentras en callejones sin salida y que eres ágil programando y encontrando soluciones a problemas imprevistos. Sino, puedes perder mucho tiempo ( o el proyecto entero ) por una falta de práctica. La forma de mejorar es irte planteando retos que te superen pero a los que más tarde o más temprano puedas llegar a solucionarlos. Si estas empezando estos links te tendrían que ayudar: ejemplos y algoritmia.

- Ten una buena calidad de código: Aunque programes tú solo, haz que la calidad del código sea impecable, sino, el código que has hecho hoy no lo entenderás ni tu mismo al cabo de 3 meses. Además, ya no es solo una tema de poder entender el propio código sino de poderlo escalar. Sin una buena calidad de código llegará a un punto en que tu juego será un monstruo de 3 cabezas y 15 pies que nadie podrá controlar. Si eso de la calidad de código te suena a chino o te suena pero no sabes como controlarla, te recomiendo que te mires el siguiente enlace

- Usa librerías. Es muy normal que al principio quieras reinventar la rueda una y otra vez. Y si lo haces para aprender, está muy bien, pero no te engañes, si lo haces como una cosa productiva, USA LIBRERÍAS. Para casi cualquier cosa que quieras hacer hay una librería que ya está hecha , probada, funciona y además con una eficiencia más que aceptable. Esto engloba librerías para audio, gráficos, 3D, carga de archivos, XML's, etc.... Aqui tienes un link a un proyecto que te puede servir de guía

- Usa repositorios. Da igual si usas SVN, GIT, Mercurial o el que sea, pero usa repostiorios aunque estés tu solo. Esto te permitirá tener el código controlado y versionado y te hará mucho más fácil encontrar errores y soluciones. Aquí tienes un link a un artículo que te puede ir bien

- Armate de paciencia. La carrera no es un sprint, es una maratón, así que dosifica, aprende de tus errores y sigue tirando adelante. Márcate pequeños objetivos que puedas ir cumpliendo y veslos complicando a medida que te vayas viendo capaz de más. Poco a poco mejorará tu nivel y serás capaz de hacer cosas más impresionantes.

Ya finalmente, os dejo un link a unos cuantos proyectos que he ido haciendo del tema por si os pueden servir de base: mis motores de videojuegos.

LordPakusBlog

Cómo convertir de Hexadecimal a Decimal??


Una pregunta muy usual es la de : como convierto números de base 16 ( hexadecimal ) a base 10 ( decimal ).??

Hay muchas maneras de explicarlo, pero me parece que la más sencilla es poniendo un código sencillo que todo el mundo entenderá.

Copiad este código en un archivo main.c en blanco, compiladlo y ejecutadlo. Si tenéis dudas en este proceso podéis mirar este link

Cualquier duda, no vaciléis en hacérmela llegar.

int ValorDecimal( char c)
{
if( c >= '0' && c <= '9' )
{
return ( (int) c-'0');
}
else
{
if(c >= 'A' && c <= 'F')
{
return ((int) (c - 'A') + 10 );
}
else
{
if(c >= 'a' && c <= 'f')
{
return ((int)(c - 'a') + 10 );
}
else return 0;
}
}
}

int ConvertHexToDec(char *num)
{
int len = strlen(num);
int decimal = 0;
int i;

for(i = 0; i < len ; i++)
{
decimal *= 16;
decimal += ValorDecimal(num[i]);
}
return decimal;
}

int main(int argc, char *argv[])
{
char num[16];
int decimal = 0;
int salir = 0;

while(!salir)
{
printf("Introduzca un numero para convertir de hexadecimal a decimal: ");
scanf("%s",num);

decimal = ConvertHexToDec(num);

printf("%s en hexadecimal es el %d en decimal\n", num, decimal);
}
}

LordPakusBlog

Entradas populares