"Ning√ļn juego dura tanto hasta que te lo terminas como el que te programas t√ļ mismo,
ninguno te absorbe tanto y ninguno te produce tanta satisfacción cuando lo has acabado"
Programacion de videojuegos
Inicio Foro √öltimo post
Viernes 26 de Febrero del 2021

Menu principal
Colaborar (con PayPal)

Para continuar con el trabajo de esta Web y poder pagar el hosting, viene bien la ayuda que sea. Gracias a todos.

Importe: 

Ultimas descargas
19.Jan

Clase que permite dibujar texto en OpenGL con mucha facilidad.Usa FreeType2.Para ver que hace y c...


 Foro de UnSitioWeb
Bienvenido/a Visitante   
Normas del foro   por Vicengetorix el 04-10-2009 02:30
« InicioAnterior11SiguienteFin »
 Asunto :Respuesta:pregunta sobre el codigo.. 16-11-2009 23:31 
Vicengetorix
Incorporado: 27-12-2008 18:54
Posts: 99
Localización
Foro : Sobre el curso de programación de juegos
Tema : pregunta sobre el codigo

Vamos por partes.

-200 es tambi√©n el tama√Īo con el que he definido el array "char cad[200]" (ahora que lo pienso deber√≠a haberla definido con 201 por lo menos para que no pueda dar error de memoria nunca).
Al leer del fichero, es suficiente para leer la mayoria de las l√≠neas y hay que poner el l√≠mite en alg√ļn sitio. Es una cifra que me ha parecido bien. Si la l√≠nea es m√°s larga, la pr√≥xima lectura la empezar√° donde termin√≥ en la √ļltima l√≠nea.

-La variable "c" la he puesto como máximo en 10 porque creo que el fichero COB no tiene ninguna línea con más de 10 parámetros separados por espacios en una misma línea.

-Efectivamente, '\0' es el car√°cter nulo que termina las cadenas de caracteres. Si detectas '\0' en una cadena es que ha terminado.

-En el array "char campo[10][200]" guardo 10 cadenas de carácteres (variable "c") de 200 carácteres de longitud (lo que se lee del fichero como máximo, aunque deberían ser de 201 por seguridad). Esas cadenas serán cada uno de los trozos separados por espacios o tabulador ('\t') de la línea del fichero COB. En el caso que la línea sea una con las coordenadas de un vértice, campo[0] contendra un puntero a la cadena de carácteres con la coordenada X, campo[1] con la coordenada Y y campo[2] con la coordenada Z. Si, como en este caso, son campos numéricos se convierten a float con la función atof( campo[0] ), por ejemplo.
En la funci√≥n "leelinea" se lee del fichero COB una linea (la gran mayor√≠a de las veces entera) y luego, mientras se recorre la cadena que se ha leido, se rellena el array campo[][] con los trozos de la l√≠nea que estaban separados por espacios. Si hubiera m√°s de 10 campos, del 11 hacia delante se desprecian, no se usar√°n. Si hubiera menos de 10, se rellenar√°n filas del array campo[][] hasta terminar la l√≠nea y las √ļltimas ¬īfilas del array no se rellenar√°n.

Espero que se entienda mejor así.
IP Logged
 Asunto :pregunta sobre el codigo.. 16-11-2009 20:33 
cristiaan3003
Incorporado: 12-11-2009 06:22
Posts: 14
Localización
Foro : Sobre el curso de programación de juegos
Tema : pregunta sobre el codigo

Hola, ahora estoy leyendo el codigo mirando que hace y tratando de entender ya que estoy haciendo y tp y me lo van a preguntar en detalle

¬ŅComo trabaja leerlinea?
te pregunto sobre la funcion leelinea de la clse fichero.
vos haces un getline de log 200, porque cad tiene esa longuitud, la pregunta es porque 200 de largo, ¬Ņ es porque el fichero cob sus lineas tiene 200 caracteres de largo?
y en esta linea que haces?
porque la variable c va hasta 10?
veo que comparas con \0, eso seria si ha terminado el string?
while( cad != '\0' && (cad == ' ' || cad == '\t') ) i++;
while( cad != '\0' && c < 10 )

En la variable campo , cuando la defines pones

// Aqui dejaremos troceada, la linea,
// en campos separados por espacio o
// tabulador.
char campo[10][200];
, pero despus no entiendo como la usas dentro de la funcion leer linea y afuera pones por ejmplo cob.campo[0], o cob.campo[2].
y no entiendo y me pierdo en el codigo
IP Logged
 Asunto :Respuesta:pregunta (capitulo 15, carga de modelos).. 15-11-2009 17:33 
cristiaan3003
Incorporado: 12-11-2009 06:22
Posts: 14
Localización
Foro : Sobre el curso de programación de juegos
Tema : pregunta (capitulo 15, carga de modelos)

hola, bueno gracias jaja, ahora quedo¬°¬°¬°¬°¬°¬°¬°¬°¬°¬°¬°¬°
mira--> http://img4.imageshack.us/img4/33/64578697.jpg
IP Logged
 Asunto :Respuesta:pregunta (capitulo 15, carga de modelos).. 15-11-2009 02:43 
Vicengetorix
Incorporado: 27-12-2008 18:54
Posts: 99
Localización
Foro : Sobre el curso de programación de juegos
Tema : pregunta (capitulo 15, carga de modelos)

Otra cosa, por si acaso.
Mejor es usar paths relativos a los ficheros y si puede ser, sin espacios en blanco (suele ser fuente de problemas al tratar las cadenas).
IP Logged
 Asunto :Respuesta:pregunta (capitulo 15, carga de modelos).. 15-11-2009 02:35 
Vicengetorix
Incorporado: 27-12-2008 18:54
Posts: 99
Localización
Foro : Sobre el curso de programación de juegos
Tema : pregunta (capitulo 15, carga de modelos)

Así, derepente, veo dos fallos en el código y otro de otro tipo.

Cuando insertes una cadena de caracteres en el código, para el caracter \ usa siempre \\.
Si usas una sola barra el compilador se creer√° que es un caracter especial como \t(tabulador), \0(fin de cadena) u otro cualquiera; con dos barras el compilador sabr√° que lo que quieres es el caracter \.

La funci√≥n strrchr(...) busca la √ļltima aparici√≥n del caracter que le dices (por eso va entre comillas simples y no dobles, no es una cadena si no solo un caracter) y retorna un puntero al punto de la cadena donde lo encuentra. Una explicaci√≥n mejor: http://www.conclase.net/c/librerias/funcion.php?fun=strrchr

La funci√≥n strrchr(...) se usa para buscar el √ļltimo caracter '\\' y por tanto eliminar el path del nombre del fichero que viene dentro del fichero .COB, el del modelo.
No puedes pasar como segundo parametro de esta función una cadena, solo un caracter.

El ultimo fallo que veo es que el nombre del fichero de textura en el modelo (el que se tiene que cargar) es "RHINO.jpg" y tu fichero de textura se llama "rino.jpg". No coinciden.

Suerte.
IP Logged
 Asunto :Respuesta:pregunta (capitulo 15, carga de modelos).. 14-11-2009 19:15 
cristiaan3003
Incorporado: 12-11-2009 06:22
Posts: 14
Localización
Foro : Sobre el curso de programación de juegos
Tema : pregunta (capitulo 15, carga de modelos)

hola, yo de nuevo, mira no hay caso no me carga la textura del rinoceronte. te envio unos link de las pruevas que fui haciendo y como tengo el codigo, tmbien te mando el link del codigo del avion entero para que veas bien como tng las carpetas, la carpeta dibus tmb la puse por todos lados pero nada.

source ( Yo uso visual c++ 6.0, win xp sp3),si lo ejecutas apreta la "n" asi sale el fog, tng un problemita con eso y se ve todo negro, cuando apreta "n" lo desactivas. para ejecutar habrir el archivo --> "main.dsp"
http://www.filefactory.com/file/a1bh6d7/n/avion_version_5.rar

puesto asi me tira error
http://img265.imageshack.us/img265/8406/dibujojn.jpg

no tira error pero noc arga nada
http://img42.imageshack.us/img42/6945/dibujo1hl.jpg

imagen de como tengo las carpetas
http://img526.imageshack.us/img526/4899/dibujo5bt.jpg

imagen de como veo el rinoceronte
http://img40.imageshack.us/img40/9499/vistanb.jpg
IP Logged
 Asunto :Respuesta:pregunta (capitulo 15, carga de modelos).. 14-11-2009 14:36 
Vicengetorix
Incorporado: 27-12-2008 18:54
Posts: 99
Localización
Foro : Sobre el curso de programación de juegos
Tema : pregunta (capitulo 15, carga de modelos)

Gracias por lo de la p√°gina.

Lo de las texturas:
El fichero "mad.png" es la textura que se aplica a uno de los cubos (el que parece de madera).
El fichero "usw.png" es el logo de la p√°gina que se pinta en la esquina superior izquierda de la ventana.

La textura del rino es el fichero "RHINO.jpg" que puedes encontrar en el capitulo 15 al final de la primera parte, donde se explica el formato ".COB" en ASCII, junto al modelo, "rino.cob".

Lo primero es aclarar que el modelo de triciclo no tiene textura, simplemente tiene varios materiales aplicados a los tri√°ngulos pero ning√ļn material con textura. Por eso, se ve correctamente aunque no se puedan cargar texturas.

Si un material tuviera textura, como el rinoceronte, se cargaría en la propia función "CargaModelo(...)", ya que el nombre del fichero de la textura va en el propio modelo.

El trozo de código que carga la textura es este. Observa que desprecia el path del fichero y lo carga siempre desde un directorio llamado "dibus", que es donde yo guardo las texturas:

// Si esta linea empieza con "texture" es que
// este meterial tiene textura que cargar
if(Iguales(cob.campo[0],"texture:") )
{
// Pongo primero el directorio con las texturas
strcpy(Materiales[M].textura,"dibus\\");
// Luego le a√Īado el nombre de fichero sin path.
strcat( Materiales[M].textura,strrchr(cob.cad,'\\') );
// Cargo ahora la textura.
// Si falla algo lo dejo como si no tuviera.
if(!CargaTextura(&(Materiales[M].Tex),Materiales[M].textura, false))
Materiales[M].textura[0] = '\0';
cob.leelinea();
// Cargo offset y repeticion de la textura.
Materiales[M].tOffset[0]=atof(strtok(cob.campo[1],",") );
Materiales[M].tOffset[1]=atof( strtok(NULL,",") );
Materiales[M].tRepite[0]=atof( strtok(cob.campo[3],",") );
Materiales[M].tRepite[1]=atof( strtok(NULL,",") );
}


Puede que no te cargue la textura si lo busca en un directorio llamado "dibus" y tu no la tienes ahí.

Prueba a modificar el código.
IP Logged
 Asunto :Respuesta:pregunta (capitulo 15, carga de modelos).. 14-11-2009 01:17 
cristiaan3003
Incorporado: 12-11-2009 06:22
Posts: 14
Localización
Foro : Sobre el curso de programación de juegos
Tema : pregunta (capitulo 15, carga de modelos)

ok, ya solucione el primer tema.
en tu codigo pones
// Cargo texturas con la funcion de
// una forma mas comoda.
CargaTextura(&tex1,"dibus//mad.png");
CargaTextura(&tex2,"dibus//usw.png");

con eso cargas la texturas que despues se van a aplicar el modelo?? (¬Ņmad.png es la foto del rino??)o nada que ver, si el modelo tiene textura se tiene que cargar solas o yo con la funcion cargar textura defino que textura le va a asiganar a las coordenadas de textura que obtubo del archivo??

la pregunta, es porque el avion viste me queda blanco y negro y a vos el triciclo te queda con los colores iguales a los que esta en el truespace

ha no dije, pero la pagina muy buena , hay muchas pagina pero casi todos los codigos que hay estan por la mitad o no andan para nada y cuando se pregunta nadie responde bien o no saben(en muchos casos nadie responde y te podes quedar esperando tranquilo una respuesta que nunca llega).
saludos
IP Logged
 Asunto :Respuesta:pregunta (capitulo 15, carga de modelos).. 13-11-2009 21:48 
Vicengetorix
Incorporado: 27-12-2008 18:54
Posts: 99
Localización
Foro : Sobre el curso de programación de juegos
Tema : pregunta (capitulo 15, carga de modelos)

Tienes razón en lo de utilizar un array o arreglo para los datos, tendrías que hacerlo con un tipo base que fuera una estructura con los punteros necesarios para cargar un modelo.

La opción correcta, en mi opinión, es usar la programación orientada a objetos y crear una clase (llamada modelo por ejemplo) con las variables, punteros y funciones necesarias, incluida una que se llamara, por ejemplo, Carga(char* fichero) y otro Pinta(). Luego solo tendrías que crear un objeto por modelo a cargar y llamar al metodo "Carga" de cada objeto al inicializar y al método "Pinta" de cada objeto, cada vez que pintes la escena (cada frame).

El tema del color es dificil de saber sin conocer el modelo bien.
Podría ser que fuera un modelo con textura y no la encuentre al cargar.
El el capítulo 15, si te has fijado, en el nombre del fichero de textura, desprecia todo el path de donde está el fichero y se queda solo con el nombre y la extensión.
Luego va ha buscar el fichero donde he dejado todas las texturas de los modelos.
IP Logged
 Asunto :Respuesta:pregunta (capitulo 15, carga de modelos).. 13-11-2009 18:09 
cristiaan3003
Incorporado: 12-11-2009 06:22
Posts: 14
Localización
Foro : Sobre el curso de programación de juegos
Tema : pregunta (capitulo 15, carga de modelos)

hola, bueno gracias hay lo solucione, ya triangule, tambien tenia que borrar una parte de todos numero del archivo .cob(lo habri como txt) xq sino me tiraba error cuando cagarba el modelo el programa.
ahora la pregunta( 2 ) yo ya pude cargar un modelo ( en particular cargue un avion).
ahora si quiero cargar un arbol por ejemplo tng q llamar otra ves a CargarModelo() pero resulta que llamo a CargarModelo(9 en mi programa en una rutina llamada
// Inicializa GLUT y OpenGL
void initialize()
ose la cargo al principo y no pasa mas por ahi , despues llamo
a PintaModelo() en
// Cada vez que hace un redisplay

lo que quiero decir, es que si llamo en initialize() a CargarModelo() 2 veces seguidas me va a quedar los datos del ultimo solamente, no ahi una forma de hacer tipo CargarModelo( vector_de_modelo le paso el elemento a cargar);

y despues llamo a pintar con

PintarModelo( pintar elemto i del vector);

y la otra consulta es que me carga el avion perfectamente pero en blanco y negro digamos (bloanco con algunos grises) pero no del color = al que tiene el trueSpace. ¬Ņno lo carga porque el avion no tiene textura?
http://img23.imageshack.us/img23/7077/dibujodfp.jpg
IP Logged
 Asunto :Respuesta:pregunta.. 12-11-2009 19:49 
Vicengetorix
Incorporado: 27-12-2008 18:54
Posts: 99
Localización
Foro : Sobre el curso de programación de juegos
Tema : pregunta (capitulo 15, carga de modelos)

En primer lugar, bienvenido al foro de UnSitioWeb.
Respecto a tu pregunta, est√° claro que te refieres al capitulo 15 de carga de modelos .COB.
La opción es la marcada en la imagen, capturada de la versión 7.6 del truSpace:
triangula.jpg
IP Logged
 Asunto :pregunta (capitulo 15, carga de modelos).. 12-11-2009 07:32 
cristiaan3003
Incorporado: 12-11-2009 06:22
Posts: 14
Localización
Foro : Sobre el curso de programación de juegos
Tema : pregunta (capitulo 15, carga de modelos)

HOLA QUERIA SABER COMO triangular el modelo antes de guardarlo AL ARCHIVO .COB EN EL TRUESPACE, YA TENGO EL PROGRAMA PERO NO ENCUENTRO ESA OPCION. CRISTIAN , ARGENTINA, SANTA FE
IP Logged
 Asunto :Respuesta:Hollaaa.... 09-11-2009 11:07 
Vicengetorix
Incorporado: 27-12-2008 18:54
Posts: 99
Localización
Foro : Presentación de nuevos foreros
Tema : Hollaaa..

Bienvenido y enhorabuena por el alumbramiento.
Esperemos que UnSitioWeb te ayude a terminar algunos proyectos. Siempre ayuda saber que hay mas bichos raros en el mundo con semejante afición.
Es habitual que digas que te gusta programar juegos y te miren como a un mono de un zoo.
A mi me parece una afici√≥n m√°s √ļtil que ver la tele.
IP Logged
 Asunto :Hollaaa.... 09-11-2009 10:42 
Javi
Incorporado: 09-11-2009 09:07
Posts: 1
Localización
Foro : Presentación de nuevos foreros
Tema : Hollaaa..

Hola a todos, mi nombre es Javi. Soy aficionado a la programaci√≥n. Emepez√© con un MSX a programar en Basic hace ya muchos a√Īos, luego tuve un Amiga, pero con √©ste mas que programar me dediqu√© a jugar con √©l ^_^ .Luego me pase a los pcs y aqu√≠ retom√© mi hobby. He hecho cosas en ensamblador para x86, juegos incabados, alguna minidemo etc... Un d√≠a conoc√≠ el lenguje pascal y comenc√© a aprendre a programar en √©ste lenguaje, hice √ļtilidades,algun juego que no llegu√© a acabar nunca y m√°s etcs. Posteriormente evolucion√© a Delphi donde hice m√°s utiliades, tambi√©n aprend√≠ algo de DX7 y con esto hice un remake de un juego publicado en una WEB de retroremakes (inacabado como no :( )
y algun que otro juego inspirado en juegos antiguos, que tempoco he acabdo. a Principios de este a√Īo comenc√© a aprender C (utilizo DEV-C), he programado alguna utilidad para la consola WII y tambi√©n he hecho un mini remake del Gradius usando SDL (inacabado tambi√©n <g> ) actualmente estaba aprendiendo a hacer cosas con opengl y en eso descubr√≠ esta WEB por medio de un mensaje en Stratos, los tutoriales me ayudaron mucho a evolucionar de SDL a SDL+OPNGL y he estado haciendo un un mini juego del mario bros.

Como se puede observar no he acabado nunca ningun proyecto, esto es debido a que mi hobby es programar por programar, como yo le digo a mi mujer: a otros les da por hacer sudokus X-D

En este momento estoy parado, pues acabo de ser pap√° y este proyecto es el que me consume el tiempo actualmente, pero espero llegar a hacer algun jueguecillo para cuando crezca mi ni√Īa <3

Salu2.
IP Logged
 Asunto :Respuesta:Buenas ^^.. 28-10-2009 15:38 
Vicengetorix
Incorporado: 27-12-2008 18:54
Posts: 99
Localización
Foro : Presentación de nuevos foreros
Tema : Buenas ^^

Pues bienvenido y si tienes alguna duda ya sabes, para eso est√° el foro.
IP Logged
 Asunto :Buenas ^^.. 28-10-2009 14:44 
Juan Andrés
Incorporado: 28-10-2009 13:38
Posts: 1
Localización
Foro : Presentación de nuevos foreros
Tema : Buenas ^^

Pues na, descubri esta web casi que por casualidad, pero me encanto desde el primer dia. Me parece que el curso es genial, y esta bien explicado, aunque aun hay algunas cosillas que me cuesta entender (pero desde luego muchas menos que con mi profesora de informatica grafica XD)
A todo esto, actualmente estoy en 3¬ļ de la carrera de ingenieria informatica, y mi objetivo es llegar a programar algun dia un videojuego decente (ademas esta es la razon por la que elegi esta carrera, jeje!)
Espero poder aprender y ayudar a otros usuarios ^^
IP Logged
 Asunto :Respuesta:Hello!.. 23-10-2009 12:01 
Vicengetorix
Incorporado: 27-12-2008 18:54
Posts: 99
Localización
Foro : Presentación de nuevos foreros
Tema : Hello!

Bienvenido a UnSitioWeb.
Me alegro de que te guste la p√°gina, que mi trabajo me cuesta (sarna con gusto no pica).
Suerte con los examenes y animo con los juegos.
IP Logged
 Asunto :Hello!.. 23-10-2009 07:28 
Bernardo
Incorporado: 23-10-2009 05:18
Posts: 1
Localización
Foro : Presentación de nuevos foreros
Tema : Hello!

Hola amigo. Siempre busque información sobre programación de videojuegos, pero nunca podía encontrarla, hasta que me compre el libro de users, pero no me gusto. Ahora encontre tu pagina y me parece buenisima, rindo unos exames sobre redes y base de datos y me meto de lleno en tu curso de opengl. Además me encanta el lenguaje c/c++ por su estilo.
Saludos amigo, si queres contestarme a mi correo no tengo problema, incluso podriamos trabajar juntos, si te parece. Primero tendría que aprender opengl para hacer videojuegos.
Chau, suerte che. Muy buena la pagina. ;D
IP Logged
 Asunto :Normas del foro.. 04-10-2009 02:30 
Vicengetorix
Incorporado: 27-12-2008 18:54
Posts: 99
Localización
Foro : Sobre este sitio web
Tema : Normas del foro

Si, normas. Todos sabemos lo que es correcto y lo que no, pero siempre hay alguien que se pasa y abusa. Adem√°s las nuevas tecnolog√≠as no deben estar re√Īidas con los buenos modales y el saber estar.

Insultos, palabras soeces, guarrerías, ... lo que es ilegal tampoco vale.

Procurad NO dar datos personales que luego pasan las cosas que pasan y nos creemos que es solo a los dem√°s hasta que nos toca a nosotros.

Haced el favor y comportaos.
IP Logged
 Asunto :Me presentare yo primero.. 03-10-2009 00:15 
Vicengetorix
Incorporado: 27-12-2008 18:54
Posts: 99
Localización
Foro : Presentación de nuevos foreros
Tema : Me presentare yo primero

Para dar ejemplo y que se me conozca.
Soy un aficicionado, ya un poco tarra, a la programaci√≥n de juegos, a la que empec√© a aficionarme hace muuuuchos a√Īos con un Spectrum 48kb, siendo un chaval.
Empecé con basic, pase al ensamblador Z80. Luego al ensamblador del M68000 (un Atari ST) y al del 8086 (PC), por ultimo aprendí C y C++.
Luego conseguí estudiar y trabajar en informática, aprendí otros lenguajes, sistemas, bases de datos, redes, ..., nada que ver con los juegos.
Paralelamente a mi trabajo (y a mi vida personal) he ido aprendiendo cosas. Tras dejar de escribir directamente en memoria de video prové con DirectX y por fin me pase a OpenGL.

Los juegos que m√°s me gustan son los de estrategia, batallas y construir ciudades.
También los de conectarse unos colegas a pegar tiros están bien. En general todos me gustan aunque reconozco que juego poco.

Creo que con esta presentación os podreis hacer una idea.
IP Logged
P√°gina #  « InicioAnterior11SiguienteFin »


Powered by ccBoard




Banner