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!
Test de mi gameEngine en C++
- erkosone
- Posts: 10656
- Joined: Tue Feb 24, 2009 2:13 pm
- Location: Barcelona.
- Contact:
- erkosone
- Posts: 10656
- Joined: Tue Feb 24, 2009 2:13 pm
- Location: Barcelona.
- Contact:
Re: Test de mi gameEngine en C++
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
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
http://iphonegamesdev.com/
[GEMIX - VIDEO TUTORIALES] http://www.youtube.com/user/fasetconasa
http://gurugameprogramming.blogspot.com.es/
[GEMIX - VIDEO TUTORIALES] http://www.youtube.com/user/fasetconasa
http://gurugameprogramming.blogspot.com.es/
- Hokuto7
- Posts: 1408
- Joined: Mon Aug 28, 2017 10:14 am
Re: Test de mi gameEngine en C++
Ponle la fecha de actualizacion a la libreria por que si no me pierdo,lo del keyboard no acabo de entender para que es. 
- erkosone
- Posts: 10656
- Joined: Tue Feb 24, 2009 2:13 pm
- Location: Barcelona.
- Contact:
Re: Test de mi gameEngine en C++
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..
rapidamente comprenderas para que es jeje..
http://iphonegamesdev.com/
[GEMIX - VIDEO TUTORIALES] http://www.youtube.com/user/fasetconasa
http://gurugameprogramming.blogspot.com.es/
[GEMIX - VIDEO TUTORIALES] http://www.youtube.com/user/fasetconasa
http://gurugameprogramming.blogspot.com.es/
- Hokuto7
- Posts: 1408
- Joined: Mon Aug 28, 2017 10:14 am
Re: Test de mi gameEngine en C++
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.
En gemix nunca lo he hecho y no se como se hace.
- erkosone
- Posts: 10656
- Joined: Tue Feb 24, 2009 2:13 pm
- Location: Barcelona.
- Contact:
Re: Test de mi gameEngine en C++
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
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
http://iphonegamesdev.com/
[GEMIX - VIDEO TUTORIALES] http://www.youtube.com/user/fasetconasa
http://gurugameprogramming.blogspot.com.es/
[GEMIX - VIDEO TUTORIALES] http://www.youtube.com/user/fasetconasa
http://gurugameprogramming.blogspot.com.es/
- CicTec
- Posts: 16590
- Joined: Thu Jul 31, 2008 10:18 pm
Re: Test de mi gameEngine en C++
[Codebox=gemix file=Untitled.gemix]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.
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.
- erkosone
- Posts: 10656
- Joined: Tue Feb 24, 2009 2:13 pm
- Location: Barcelona.
- Contact:
Re: Test de mi gameEngine en C++
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:
Mira te dejo un ejemplo:
You do not have the required permissions to view the files attached to this post.
http://iphonegamesdev.com/
[GEMIX - VIDEO TUTORIALES] http://www.youtube.com/user/fasetconasa
http://gurugameprogramming.blogspot.com.es/
[GEMIX - VIDEO TUTORIALES] http://www.youtube.com/user/fasetconasa
http://gurugameprogramming.blogspot.com.es/
- CicTec
- Posts: 16590
- Joined: Thu Jul 31, 2008 10:18 pm
Re: Test de mi gameEngine en C++
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.
- OskarG
- Posts: 612
- Joined: Tue Jan 12, 2010 2:12 am
Re: Test de mi gameEngine en C++
Amor ..amor ...amor cuanto espíritu navideño brota por este medio... ay dios!! Lógico ,si ya ha pasado la Navidad 