Page 14 of 33
Re: Test de mi gameEngine en C++
Posted: Thu Dec 20, 2018 12:41 pm
by erkosone
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:
[Codebox=cpp file=Untitled.cpp]class cosa : public sprite{
public:
int a;
float b;
void frame(){
}
void metodoDeEntrada(int a, float b){
this->a = a;
this->b = b;
}
};[/Codebox]
En este ejemplo para lanzar un objeto con parametros a y b seria así:
[Codebox=cpp file=Untitled.cpp]cosa* c = new cosa();
c->metodoDeEntrada(100, 0.5);[/Codebox]
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.
Re: Test de mi gameEngine en C++
Posted: Thu Dec 20, 2018 2:33 pm
by Hokuto7
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.

Re: Test de mi gameEngine en C++
Posted: Thu Dec 20, 2018 5:16 pm
by Hokuto7
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.
[Codebox=cpp file=Untitled.cpp]
Personaje *personaje = new Personaje()
signal(personaje,s_kill)
[/Codebox]
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().
Re: Test de mi gameEngine en C++
Posted: Thu Dec 20, 2018 9:29 pm
by erkosone
voy a revisarlo. Gracias por avisar.
Re: Test de mi gameEngine en C++
Posted: Thu Dec 20, 2018 9:36 pm
by erkosone
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.
Re: Test de mi gameEngine en C++
Posted: Thu Dec 20, 2018 10:08 pm
by Hokuto7
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.
Re: Test de mi gameEngine en C++
Posted: Fri Dec 21, 2018 7:41 am
by erkosone
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

Re: Test de mi gameEngine en C++
Posted: Fri Dec 21, 2018 7:46 am
by erkosone
Te has debido equibocar de zip por que no hay clase bala.
Y el letMeAlne() en este codigo que me has colgado funciona bien.
Re: Test de mi gameEngine en C++
Posted: Fri Dec 21, 2018 11:24 am
by Hokuto7
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.
[Codebox=cpp file=Untitled.cpp]
#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;
}
}
[/Codebox]
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.
Re: Test de mi gameEngine en C++
Posted: Sun Dec 23, 2018 1:27 pm
by erkosone
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
