Test de mi gameEngine en C++

Todo aquello que no está relacionado con Gemix Studio ni con la programación DIV en general.

Re: Test de mi gameEngine en C++

Postby erkosone » Thu Dec 20, 2018 12:41 pm

les creas un método de entrada, no sobreescribas el constructor por default que tienen por ahora.. tengo que mirar esto a fondo para hacerlo bien :)

Por ahora con la forma de programar que yo tengo no me ha hecho falta pasarle parametros al crearlas, pero vaya.. que puedes hacer esto y es muy facil:

Source Code (C++) [ Download ] [ Hide ]
  • class cosa : public sprite{
  •     public:
  •         int a;
  •         float b;
  •     void frame(){
  •        
  •     }
  •     void metodoDeEntrada(int a, float b){
  •         this->a = a;
  •         this->b = b;
  •     }
  • };


En este ejemplo para lanzar un objeto con parametros a y b seria así:
Source Code (C++) [ Download ] [ Hide ]
  • cosa* c = new cosa();
  • c->metodoDeEntrada(100, 0.5);


y desde frame haces lo que tengas que hacer..
No olvides que esto es C++ y que puedes crear tantos metodos como necesites, incluso interfaces, subclases con polimorfia y etc etc etc.. esto no es div jeje.. tienes todo al alcance de la mano ;)
Como por ejemplo.. linkar una lib para uso de webcam y openCV para vision artificial y poder hacer auntenticas virguerias.. pero tranki.. ya llegaremos a esos temas.. poco a poco :)

Aunque ya estas viendo lo que se tarda en dejar un motor "basico" funcionando.. una semana crearlo, por que estaba de vacaciones y he podido meterle caña.. pero piensa también que he tenido que aprender C++ que no sabia ni poner using namespace std; xd... así que para mi proxima semana libre que será dentro de 5 semanas le pegaré otro gran empujon a la libreria, durante este mes ire corrigiendo y poco a poco montando lo que falta de la base.
User avatar
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Test de mi gameEngine en C++

Postby Hokuto7 » Thu Dec 20, 2018 2:33 pm

Gracias por la aclaracion. ;)

Para el futuro tutorial podrias explicar esta forma de pasar parametros y la forma que tu tienes que no hace falta hacer esto. :)
User avatar
Hokuto7
 
Posts: 1401
Joined: Mon Aug 28, 2017 10:14 am

Re: Test de mi gameEngine en C++

Postby Hokuto7 » Thu Dec 20, 2018 5:16 pm

La funcion signal(),dentro de una clase me funciona bien con esto signal(this,s_kill),pero si la utilizo fuera de la clase de esta forma no funciona.
Source Code (C++) [ Download ] [ Hide ]
  • Personaje *personaje = new Personaje()
  • signal(personaje,s_kill)
  •  


La funcion letMeAlone(),si la utilizo dentro de una clase,el programa me peta y tengo que utilizar esta variable "s_kill_protected = true" para que el programa no pete.

Tengo un programa que es el mismo de tu tutorial_02 con dos clases y al utilizar el letMeAlone() en el void draw() solo se elimina la clase de las balas,la clase de la nave no se elimina,tiene que haber un fallo en el letMeAlone().
User avatar
Hokuto7
 
Posts: 1401
Joined: Mon Aug 28, 2017 10:14 am

Re: Test de mi gameEngine en C++

Postby erkosone » Thu Dec 20, 2018 9:29 pm

voy a revisarlo. Gracias por avisar.
User avatar
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Test de mi gameEngine en C++

Postby erkosone » Thu Dec 20, 2018 9:36 pm

Hokuto pasame un ejemplo de programa donde te peta el letMeAlone() porfa, y he doy un vistazo, lo estoy probando y me funciona bien.

Pasame un ejemplo también de signal() fuera de una clase, es raro, a mi me funciona bien, haber el codigo que has escrito si tiene algun error, cuando puedas hazme llegar un ejemplo tio.
User avatar
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Test de mi gameEngine en C++

Postby Hokuto7 » Thu Dec 20, 2018 10:08 pm

Aqui tiene el ejemplo,el signal() esta cometado para que funcione,solo descomentalo y veras que no funciona y en la clase bala esta comentado el s_kill_protected para que veas que peta el programa,si lo descomentas veras que no peta.

En el proximo tutorial intenta de explicar lo maximo posible,como los movimientos,colisiones,
textos,musica,fisica etc..Es para tener mas claro como usar la libreria y poder probar mas cosas en profundidad y descubrir si hay mas fallos y reportarlos.
You do not have the required permissions to view the files attached to this post.
User avatar
Hokuto7
 
Posts: 1401
Joined: Mon Aug 28, 2017 10:14 am

Re: Test de mi gameEngine en C++

Postby erkosone » Fri Dec 21, 2018 7:41 am

Gracias por el ejemplo tio, voy a mirarlo, si no te preocupes, en el siguiente ya es un juego completo para mostrar practicamente todo de la lib ;)
User avatar
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Test de mi gameEngine en C++

Postby erkosone » Fri Dec 21, 2018 7:46 am

Te has debido equibocar de zip por que no hay clase bala.
Y el letMeAlne() en este codigo que me has colgado funciona bien.
User avatar
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Test de mi gameEngine en C++

Postby Hokuto7 » Fri Dec 21, 2018 11:24 am

No me he equivocado,lo he mirado y es el que te he enviado pero te pongo todo el codigo para que no haya confusion.
Source Code (C++) [ Download ] [ Hide ]
  • #include "gameLibZero.cpp"
  •  
  • int st = 0;
  • images imagen;
  •  
  • void setup(){
  •     setMode(640,400);
  •     setFps(60);
  •     loadImages("data/imagenes",&imagen);
  • }
  • //personaje-----------------------------------------------------
  • class Personaje:public sprite{
  •     public:
  •     void frame(){
  •         screenDrawText(GetFontDefault(),23,x,CENTER,320,32,RED,255);
  •         if(key(KEY_LEFT)){
  •             x -= 5;
  •         }
  •         if(key(KEY_RIGHT)){
  •             x += 5;
  •         }
  •         if(key(KEY_UP)){
  •             y -= 5;
  •         }
  •         if(key(KEY_DOWN)){
  •             y += 5;
  •         }
  •        
  •     }//fin frame clase personaje
  •    
  • };//fin clase personaje
  •  
  • //bala--------------------------------------------------------
  • class Bala:public sprite{
  •     int estado = 0;
  •     public:
  •     void frame(){
  •         switch(estado){
  •             case 0:{
  •                 graph = imagen[2];
  •                 visible = true;
  •                 z = 512;
  •                 //s_kill_protected = true;
  •                 scene = true;
  •                 estado = 10;
  •             }
  •                 break;
  •             case 10:{
  •                 if(key(KEY_X)){
  •                     letMeAlone();
  •                 }
  •             }
  •                 break;
  •         }//fin switch estado clase bala
  •        
  •     }//fin frame clase bala
  •     //constructor
  •     void parametros(float posicionX,float posicionY){
  •         this->x = posicionX;
  •         this->y = posicionY;
  •     }//fin funcion parametros
  •    
  • };//fin clase bala
  •  
  • Personaje *personaje;
  • Bala *bala;
  • //inicio del programa-----------------------------------------
  • void draw(){
  •     switch(st){
  •         case 0:{
  •             //crear personaje y sus propiedades
  •             personaje = new Personaje();
  •             personaje->graph = imagen[1];
  •             personaje->visible = true;
  •             personaje->z = 256;
  •             personaje->scene = true;
  •             personaje->setCamera((sprite*)personaje);
  •             //crear 100 balas en posiciones aleatorias
  •             for(int contar = 0;contar < 100;contar++){
  •                 bala = new Bala();
  •                 bala->parametros(rand(-1000,1000),rand(-1000,1000));
  •             }
  •             st = 10;
  •         }
  •             break;
  •         case 10:{
  •             if(key(KEY_Z)){
  •                 letMeAlone();
  •                 //signal(personaje,s_kill);
  •                 //signal(bala,s_kill);
  •             }
  •         }
  •             break;
  •     }
  • }
  •  


El tema del signal() lo he solucionado,lo unico que habia que hacer era declarar la variable de clase encima del draw y debajo de las clases pero he descubierto mas errores.

En la clase bala si pulsas x peta el programa(a mi me pasa),en el draw() principal veras que si pulsas z uso el letMeAlone() y solo elimina la nave,la bala no se elimina.

Si comentas el letMeAlone() de draw() y descomentas los dos signal() el progrma peta y si utilizas solo el signal() para eliminar la bala no funciona.
User avatar
Hokuto7
 
Posts: 1401
Joined: Mon Aug 28, 2017 10:14 am

Re: Test de mi gameEngine en C++

Postby erkosone » Sun Dec 23, 2018 1:27 pm

Hola Hokuto!

Ya tengo controlado el letMeAlone(), yava tela me ha costado dos dias de investigar.. es la mierda de siempre C++ y sus maravillas... reconozco que no soy ningun experto en C++ y es por eso que me cuesta un poco darme cuenta de los errores tan especiales que me van saliendo..

En cuanto lo tenga presentable lo actualizo, pero vaya que ya esta solucionado pero quiero publicarlo bien arreglado sin chapuzas jeje :P
User avatar
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

PreviousNext

Return to Offtopic

Who is online

Users browsing this forum: No registered users and 4 guests