Test de mi gameEngine en C++

Todo aquello que no está relacionado con Gemix Studio ni con la programación DIV en general.
Post Reply
User avatar
erkosone
Posts: 10656
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.
Contact:

Re: Test de mi gameEngine en C++

Post by erkosone »

He terminado el ejemplo, me ha terminado rayando jajaja.. demasiado largos los videos..
Vale, esta actualizada la descarga del codigo de ejemplo en los videos de youtube, ahora voy a por el video del teclado que se explica en 1 minuto.

En breve mas cosas.. y por fin.. la libreria de red!
User avatar
erkosone
Posts: 10656
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.
Contact:

Re: Test de mi gameEngine en C++

Post by erkosone »

Entorno de desarrollo con la libreria actualizados al inicio del post :)

Ahora la libreria trae un pequeño pero util controlador de teclado..
Un ejemplo sencillo de uso es este:
[Codebox=cpp file=Untitled.cpp]#include "gameLibZero.cpp"

keyboard keyb;
void setup(){
setMode(640, 400);
setFps(60);
keyb.setFont(GetFontDefault());
}

void draw(){
keyb.core();
keyb.render();
}
[/Codebox]


creas una variable del tipo keyboard.. le pasas una fuente.. y a usarlo sin mas..

tu_objeto_teclado.core() hace que se capturen las teclas..
tu_objeto_teclado.render() pinta en las X Y del objeto keyboard el contenido del buffer de teclado con un cursor parpadeando etc etc..

El objeto keyboard es igual de completo que screenDrawText() admine alineación de texto, sizeFont, Font.. alpha etc etc..

El codigo del controlador de teclado por si alguien tiene curiosidad es este aunque se explica por si solo..
[Codebox=cpp file=Untitled.cpp]class keyboard{
public:
int size = 22; // text font size..
static const int buffer_size = 255; // keyboard buffer size..
char buffer[buffer_size]; // buffer..
int key; // allows key detection code..
int ptr = 0; // iterator..
bool visible = true;
int align = RIGHT;
float x, y;
float alpha = 255;
Font font;
bool font_defined = false;
int delay; // delay to show cursor..
//---------------------------------
//---------------------------------
void core(){
key = GetKeyPressed();
if(IsKeyPressed(KEY_BACKSPACE)){
key = -1000;
}
switch(key){
case -1:
// no key detected..
break;
case -1000:
{
if(ptr>0){
ptr --;
buffer[ptr] = 0;
}
delay = 0;
}
break;
default:
{
buffer[ptr] = key;
ptr++;

if(ptr>buffer_size){
cout<<"Warning: Keyboard buffer overflow."<<endl;
ptr--;
}
delay = 0;
}
break;
}
}
//---------------------------------
void setFont(Font fnt){
this->font = fnt;
font_defined = true;
}
//---------------------------------
void clear(){
memset(buffer, 0, sizeof(buffer));
ptr = 0;
}
//---------------------------------
void render(){
if(!font_defined){
cout<<"Warning: Keyboard font not defined.."<<endl;
}else{
screenDrawText(font, size, buffer, align, x, y, WHITE, alpha);
delay = (delay+1)%(fps/2);
if(delay<(fps/4)){
Vector2 offset = MeasureTextEx(font, buffer, size, text_spacing);
screenDrawText(font, size, "_", align, x+offset.x+2, y, WHITE, alpha);
}
}
}
//---------------------------------
};[/Codebox]


Mas cositas en los siguientes tutoriales ;)
User avatar
Hokuto7
Posts: 1408
Joined: Mon Aug 28, 2017 10:14 am

Re: Test de mi gameEngine en C++

Post by Hokuto7 »

Ponle la fecha de actualizacion a la libreria por que si no me pierdo,lo del keyboard no acabo de entender para que es. :?:
User avatar
erkosone
Posts: 10656
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.
Contact:

Re: Test de mi gameEngine en C++

Post by erkosone »

Intenta escribir un texto con acentos y caracteres especiales en gemix o DivDX, solo mostrarlo en pantalla mientras escirbes o borras caracteres.
rapidamente comprenderas para que es jeje..
User avatar
Hokuto7
Posts: 1408
Joined: Mon Aug 28, 2017 10:14 am

Re: Test de mi gameEngine en C++

Post by Hokuto7 »

Vale...ya he probado el ejemplo y ya se lo que es,esta chulo esto pero al pulsar enter no hay salto de linea.

En gemix nunca lo he hecho y no se como se hace.
User avatar
erkosone
Posts: 10656
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.
Contact:

Re: Test de mi gameEngine en C++

Post by erkosone »

Es bastante complicado en gemix y similares, tiene un sistema de adquisición de teclas a bajo nivel, que esta genial si quieres hacerte algo personalizado, pero deberia tener una función que retornara el "printable character" que es lo que usa hoy en dia cualquier lenguaje, esta función retorna el ultimo caracter imprimible, osea, si pulsas un acento no devuelve nada, y si luego pulsas una vocal pues retorna la vocal acentuada, o si pulsas mayusculas no retorna nada, y si pulsas una letra pues devuelve la letra en mayusculas. En gemix todo esto tienes que hacerlo tu a mano y es bastante trabajo hacerlo bien.

La verdad es que para cuando salga la beta seria buena sugerencia pedir una función así.

Bueno, pues he terminado el sistema de entrada de texto por teclado, voy a empezar un nuevo video sobre un juego de futbol con robots jeje... y de paso voy a plantear el tema de la resolución virtual, que es algo que en cuanto haga el port a android voy a necesitar como el respirar.

En realidad voy a comentar por la comunidad de raylib haber como montar el entorno con emscriptem para compilar para html5 directamente, haber si no es mucho trabajo y puedo montar el port a web.. que depende lo rapido que funcione ya te digo que va a ser el port definitivo ya que corre en todas las plataformas del tiron 8-)
User avatar
CicTec
Posts: 16590
Joined: Thu Jul 31, 2008 10:18 pm

Re: Test de mi gameEngine en C++

Post by CicTec »

erkosone wrote:Es bastante complicado en gemix y similares, tiene un sistema de adquisición de teclas a bajo nivel, que esta genial si quieres hacerte algo personalizado, pero deberia tener una función que retornara el "printable character" que es lo que usa hoy en dia cualquier lenguaje, esta función retorna el ultimo caracter imprimible, osea, si pulsas un acento no devuelve nada, y si luego pulsas una vocal pues retorna la vocal acentuada, o si pulsas mayusculas no retorna nada, y si pulsas una letra pues devuelve la letra en mayusculas. En gemix todo esto tienes que hacerlo tu a mano y es bastante trabajo hacerlo bien.
[Codebox=gemix file=Untitled.gemix]
private
string caracter;
begin
write(0, 160, 100, 4, caracter);

loop
caracter = itoa(ascii);
frame;
end
end
[/Codebox]
Me parece mucho mas facil que en tu libreria y segun la descripcion que has indicado tu sistema no funciona totalmente bien.
User avatar
erkosone
Posts: 10656
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.
Contact:

Re: Test de mi gameEngine en C++

Post by erkosone »

Pero este código que pones cicTec no detecta pulsaciones de teclas ni repeticiones ni tiene un buffer con texto ni nada, esto que es? es un simple detector de tecla pulsada.. no es lo mismo, yo hablo de un buffer de teclado completo no de un detector de teclas.

Mira te dejo un ejemplo:
You do not have the required permissions to view the files attached to this post.
User avatar
CicTec
Posts: 16590
Joined: Thu Jul 31, 2008 10:18 pm

Re: Test de mi gameEngine en C++

Post by CicTec »

De la descripcion que has dado indicabas eso de los caracteres imprimibles, sobre las pulsaciones se puede detectar con scan_code y de las repeticiones no sirve a mucho y el buffer puede serlo como no.
User avatar
OskarG
Posts: 612
Joined: Tue Jan 12, 2010 2:12 am

Re: Test de mi gameEngine en C++

Post by OskarG »

Amor ..amor ...amor cuanto espíritu navideño brota por este medio... ay dios!! Lógico ,si ya ha pasado la Navidad :mrgreen:
Post Reply

Return to “Offtopic”