Programación Específica > Programación de Videojuegos

 Duda Sobre Programación

(1/2) > >>

Renatus:
Hola a todos  :lol:  !!!

Soy Novato en allegro y me gustaría comentarles una duda
que tengo con respecto a la metodología de trabajo en
allegro/c++ con el fin de pedir algo de ayuda.

Mi duda es la siguiente; en todos los ejemplos que
veo sobre estructuras básicas del código de los juegos
en allegro, existe siempre un bucle principal que es el
que domina prácticamente todo el juego y es aquí dentro
donde se ubican explícitamente, entre otras cosas, los
comandos que pintan y actualizan procesos determinados
como el personaje principal, la barra de energía,
el fondo, etc.

Pero... que pasa con los procesos de los cuales no se
sabe qué numero determinado de ellos va a crearse (los
disparos, los enemigos, etc)?
Me refiero a, cómo hago referencia a cada uno de ellos
para, por ejemplo, pintarlos en pantalla, dentro del
bucle principal? O es que no se hace así?.

Se me había ocurrido que quizás se pueda crear un bucle
interno propio para cada uno de estos procesos dentro
de la clase que los va a crear y hacer que cada uno de
estos objetos se encargen de pintarse y actualizarse
solos, pero al intentarlo, tuve problemas para sincronizar
el temporizador con cada uno de estos bucles particulares.

Además estoy seguro de que existe una metodología más eficiente
que la que mencioné y seguramente será la que utilizan
generalmente los programadores de juegos.
Desearía saber si podrían ayudarme con esta duda, por favor.

Se que lo que pregunto es quizás una tontería  :( , pero
es de verdad que necesito un consejo.

Adjunto a este mensaje, 12 sprites en 256 colores que he
realizado para un proyecto de juego de naves y me gustaría
compartirlos con ustedes, siéntanse libres para utilizarlos
donde quieran si es que les gustan.
Los sprites no son gran cosa pero...

Muchas Gracias  :D !!!

Enko:

--- Citar ---Pero... que pasa con los procesos de los cuales no se
sabe qué numero determinado de ellos va a crearse (los
disparos, los enemigos, etc)?

--- Fin de la cita ---
Pues lo ideal seria crear un motor de sprites.  Desconozco como hacerlo en C.
La idea seria que cada disparo que creas, tenga  su propia rutina de movimiento y el motor se encarga de que esa rutina se cumpla. Por eso si tines una X cantidad de disparos , el motor se tiene que encargar de mover esa X cantidad de disparos.

Es asi como lo haria yo,  pero ,  estoy seguro que deben habe maneras mas sencillas y rapidas.


--- Citar ---Se me había ocurrido que quizás se pueda crear un bucle
interno propio para cada uno de estos proceso

--- Fin de la cita ---
Si haces eso asi nomas, cuando el personaje dispare el juego se detendra.

Renatus:
Muchas Gracias EugenioEnko, agradezco mucho tu respuesta  :lol: .
Es un tema que me tiene un poco confundido pues, allegro y c++ son
algo nuevo para mi y esto me resulta intrigante..  :D
Muchas gracias de nuevo y nos vemos  :D  !!!

JuanK:
no se si estas en c o en c++...

en c++ deberias tener por ejemplo:

una clase nave
una clase disparo

la clase nave instancia objetos de la clase disparo.


asi cuando

nave.disparar()

se haria dentro del codigo algo asi como

disparo1.activo=true


eso por un lado, mientras el bucle ppal tendria:

--- Código: Text --- while(true){   nave.procesarCuadro();   nave.dibujarCuadro();}  
y la clase nave


--- Código: Text --- procesarCuadro(){   if disparo1.activo  {      disparo1.procesarCuadro();       ...       ...      if disparo1.impacto=true;      {          disparo1.inactivarDisparo();      }       }.........} dibujarCuadro(){  if disparo1.activo  {      disparo1.dibujarCuadro();  }}  
en fin esta es una idea muy general, que aplica para juegos pequeños, para juegos mas grandes tambien aplica, pero debes aumentar la complejidad, y mas cuando se manejan mucjos mas personajes.... tendrias que usar listas enlazadas etc...

Renatus:
Muchas Gracias JuanK Te agradezco el hecho de que me hallas respondido.
De veras me ha servido de mucho. Gracias  ;) .

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa