Noticias

¡Ayuda a la Comunidad GM, haz una donación!

* Sponsor

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: execute_string()  (Leído 1640 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado dixon

en: Noviembre 17, 2019, 01:36:43 am
Nombre del creador:  3dgeminis, Johann, Arcadian, somnus, Clamud y mi persona. En colaboración se logró el objetivo. Ver más
Breve descripción de su función: ejecuta el código que se encuentre en una cadena de texto. Solo soporta una función a la vez la cual puede ser: draw_text, draw_line o draw_circle.

Versión GM utilizada: Desde la versión 4.3c (March 4, 2003) hasta la studio 2


Código del Script:

//posicion del primer parentesis
parentesis=string_pos("(",argument0);
funcion=string_copy(argument0,1,parentesis-1)

//Escaner de funciones
argumentos=string_count(",",argument0);//contando cantidad de argumentos de la funcion
for(i=0;i<=argumentos;i+=1)
{
caracter_inicial=",";
if(i=0){caracter_inicial="("}
caracter_final=",";
if(i=argumentos){caracter_final=")"}
argument0=string_copy(argument0,string_pos(caracter_inicial,argument0)+1,string_length(argument0));
argumento[i]=string_copy(argument0,1,string_pos(caracter_final,argument0)-1);
//quitando comillas
argumento[i]=string_replace_all(argumento[i],'"',"");
argumento[i]=string_replace_all(argumento[i],"'","");
}

//variables de sistema
for(i=0;i<=argumentos;i+=1)
{
if(argumento[i]="mouse_x"){argumento[i]=string(mouse_x)}
if(argumento[i]="mouse_y"){argumento[i]=string(mouse_y)}
if(argumento[i]="score"){argumento[i]=string(score)}
}

if(funcion="draw_text")
 {
 dx=real(argumento[0]);
 dy=real(argumento[1]);
 draw_text(dx,dy,argumento[3]);
 }

if(funcion="draw_line")
 {
 x1=real(argumento[0]);
 y1=real(argumento[1]);
 x2=real(argumento[2]);
 y2=real(argumento[3]);
 draw_line(x1,y1,x2,y2);
 }

if(funcion="draw_circle")
{
 cx=real(argumento[0]);
 cy=real(argumento[1]);
 cr=real(argumento[2]);
 ca=10;//angulos internos del circulo
 cdm=30;
 i=0;
repeat(360/ca)
{
 i+=ca
 cd=i+cdm
 p1x=floor((cx+(cr)*cos(cd*pi/180)));
 p1y=floor((cy-(cr)*sin(cd*pi/180)));
 p2x=floor((cx+(cr)*cos((cd+ca)*pi/180)));
 p2y=floor((cy-(cr)*sin((cd+ca)*pi/180)));
 draw_line(p1x,p1y,p2x,p2y);                                                                                                                                  
}

}








Debe colocarse en un evento draw o dibujo.

Ejemplo1 : execute_string('draw_text(0,0,"Hola Mundo")')
Esto mostrará un Hola mundo en las coordenadas especificadas

Ejemplo2 : execute_string('draw_line(0,0,100,100)')
Esto mostrará una linea en las coordenadas especificadas.

El draw_text no soporta el caracter positivo (+), tampoco soporta la funcion string() y no reconoce las variables predeterminadas. Está en proceso de desarrollo.

Ejemplo de error: execute_string('draw_text(0,0,"La posicion x es: "+string(x))')
Esto dará un error porque no entiende eso, aún tengo que mejorarlo.


« Última modificación: Abril 25, 2021, 07:27:50 am por dixon »

Si Dios quiere; Limpiaré la oficina, puliré el piso y les serviré café a todos, luego, me enseñarán a programar e iré a comprarles más café.
 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


 


Warning: Parameter 1 to spoiler_buffer() expected to be a reference, value given in Unknown on line 0

Warning: Parameter 1 to custom_report_ob() expected to be a reference, value given in Unknown on line 0