Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Temas - dixon

61
Hola, saludos a todos.

Resumen: Quiero dibujar una linea mediante código sin usar el draw_line y dibujar un hola mundo sin usar el draw_text. Esto empleando otro lenguaje de programación dentro del Game Maker.

Más Detalles:
Desde hace ya muchos años he tenido la duda de que si game maker puede entender otros lenguajes de programación diferentes al GML. Un día un programador que no conocía game maker, fue a mi casa de visita y colocó ante mis ojos un código en un evento draw que no pude entender y logró algo que ya no recuerdo pero creo que fue un "hola mundo", Luego no quiso darme mas detalles, solo me dio a entender que game maker era muy bueno. Ahora bien, leyendo la documentación del game maker 1.1 de 1999, encontré que se menciona el lenguaje de pascal de la siguiente manera:



Estilo pascal
El intérprete es en realidad bastante relajado. También puede usar código que se parezca mucho a pascal. Puede usar begin y end para delimitar bloques,: = para la tarea, e incluso agregar la palabra en una declaración if o do en un ciclo while. Por ejemplo, el siguiente fragmento de código también es válido:

begin
  x := 10;
  while x>0 do
  begin
    if x>5 then x:=x-5 else x:=x-1;
  end;
end;


Según entiendo esto no me quiere decir que pueda interpretar lenguaje pascal sino que podemos usar el GML en el mismo estilo de pascal. Pues al intentar hacer un hola mundo en pascal con el siguiente código y me dio errores pues no reconoce writeln.

///Esto es un hola mundo en lenguaje pascal.
program Hello;
   begin     
      writeln ('Hola mundo')
   end.   


Para finalizar, esta es mi intención: lograr dibujar mediante otro lenguaje una simple línea sin usar el draw_line, y dibujar un hola mundo sin usar draw_text. Gracias, cualquier idea recibirá un agradecimiento de mi parte.  ;D
62
General / Practicando máxima compatibilidad
Noviembre 02, 2019, 02:08:10 AM
Hola, gusto en saludarles.



He recurrido a todos los manuales. Presiona la siguiente imagen para descargar el paquete completo.


Me encuentro desarrollando código con la máxima compatibilidad posible para todas las versiones del game maker, desde la versión 1.1 del año 1999 hasta la actual studio 2 y estos son los resultados:

Si se coloca este código en un evento draw, se va a dibujar el siguiente personaje.
{

///simulando evento create dentro de un evento draw con variable score.

if(!score)
{
version=0
mousex=0
mousey=0

//background_color=c_black
font_color=c_green
//font_name="Courier New"
font_name="Arial"
font_size=12
pen_color=c_red
screen_width=480
screen_height=384



score=1
}
///evento draw
score+=1
if(score=3 && mousex=0)version=1

if(version)
{
mousex=mouse_x
mousey=mouse_y
}


//evento draw
dy=0

texto=mousex
draw_text(0,dy,texto)
dy+=12

texto=mousey
draw_text(0,dy,texto)
dy+=12

///dibujo
manx=mouse_x
many=mouse_y
//cabeza
draw_line(manx,many,manx+30,many)
draw_line(manx+30,many,manx+30,many+30)
draw_line(manx+30,many+30,manx,many+30)
draw_line(manx,many+30,manx,many)
///ojos y boca
draw_text(manx,many," 0 0")
draw_text(manx,many+14,"   -")
///tronco
draw_line(manx+15,many+30,manx+15,many+60)
draw_line(manx+15,many+60,manx+10,many+90)///pies isquierdo
draw_line(manx+15,many+60,manx+25,many+90)//pies derecho
draw_line(manx+15,many+40,manx+30,many+60)//brazo irquierdo
draw_line(manx+15,many+40,manx+5,many+60)//brazo derecho
}




Si se coloca este código en el evento draw, se crea una nave y un  control parqa moverla y disparar.
{

///simulando evento create dentro de un evento draw con variable score.

if(!score)
{
version=0
mousex=0
mousey=0

//background_color=c_black
font_color=c_green
//font_name="Courier New"
font_name="Arial"
font_size=12
pen_color=c_red
screen_width=480
screen_height=384

//nave
nx=100
ny=100
nv=5
disparo=0
bax=0
bay=0

score=1
}
///evento draw
score+=1
if(score=50 && mousex=0)version=1

if(version)
{
mousex=mouse_x
mousey=mouse_y
}


//evento draw
dy=0

texto=mousex
draw_text(0,dy,texto)
dy+=12

texto=mousey
draw_text(0,dy,texto)
dy+=12

texto=disparo
draw_text(0,dy,texto)
dy+=12

texto=nx
draw_text(0,dy,texto)
dy+=12

texto=ny
draw_text(0,dy,texto)
dy+=12

blx=10
bly=250
draw_line(blx,bly,blx,bly+50)
draw_line(blx,bly,blx+50,bly)
draw_line(blx+50,bly,blx+50,bly+50)
draw_line(blx,bly+50,blx+50,bly+50)
if(mousex>blx && mousex<blx+50 && mousey>bly && mousey<bly+50){nx-=nv}

blx=130
bly=250
draw_line(blx,bly,blx,bly+50)
draw_line(blx,bly,blx+50,bly)
draw_line(blx+50,bly,blx+50,bly+50)
draw_line(blx,bly+50,blx+50,bly+50)
if(mousex>blx && mousex<blx+50 && mousey>bly && mousey<bly+50){nx+=nv}

blx=70
bly=190
draw_line(blx,bly,blx,bly+50)
draw_line(blx,bly,blx+50,bly)
draw_line(blx+50,bly,blx+50,bly+50)
draw_line(blx,bly+50,blx+50,bly+50)
if(mousex>blx && mousex<blx+50 && mousey>bly && mousey<bly+50){ny-=nv}

blx=70
bly=310
draw_line(blx,bly,blx,bly+50)
draw_line(blx,bly,blx+50,bly)
draw_line(blx+50,bly,blx+50,bly+50)
draw_line(blx,bly+50,blx+50,bly+50)
if(mousex>blx && mousex<blx+50 && mousey>bly && mousey<bly+50){ny+=nv}

//boton central
blx=70
bly=250
draw_line(blx,bly,blx,bly+50)
draw_line(blx,bly,blx+50,bly)
draw_line(blx+50,bly,blx+50,bly+50)
draw_line(blx,bly+50,blx+50,bly+50)
if(mousex>blx && mousex<blx+50 && mousey>bly && mousey<bly+50){if(!disparo){disparo=1;bax=nx;bay=ny}}

/////////////para disparar
if(disparo)
{
draw_text(bax,bay,"  0");
bay-=10
if(bay<0)disparo=0
}

////////limites de movimiento nave
if(nx<0)nx=0
if(nx>460)nx=460
if(ny>330)ny=330
if(ny<0)ny=0

draw_text(nx,ny,"  /\")
draw_text(nx,ny+12,"  ||")
draw_text(nx,ny+24," /||\")
draw_text(nx,ny+36," ---")
   
}



Formas geometricas: Este código nos muestra cómo se pueden dibujar las figuras geométricas básicas cumpliendo las regla de la geometría.
corregido

{

///simulando evento create dentro de un evento draw con variable score.

if(!score)
{
//background_color=c_black
font_color=c_green
pen_color=c_red
screen_width=480
screen_height=384
score=1
version="nueva"
mousex=0
mousey=0

///nave
ny=100
nx=100
nv=5

//circulo
//cr: radio
//crd: radio deformacion
//cd: direcsion
//ca: circulo angulos internos
cx=250
cy=150
cr=100
crd=0
cd=90
cdm=0
ca=45
p1x=0
p1y=0

}

///evento draw
score+=1
if(score<50 && !mousex=0)version="vieja"

if(score>50)
{
if(version="nueva")
{
mousex=mouse_x
mousey=mouse_y
}

}
else
{
draw_text(100,100,"Presione aquí para evitar errores en versiones viejas")
}

//evento draw
dy=0

texto="Radio: "+string(cr)
draw_text(0,dy,texto)
dy+=12

texto="Angulo: "+string(cdm)
draw_text(0,dy,texto)
dy+=12

texto="Angulo interno: "+string(ca)
draw_text(0,dy,texto)
dy+=12

blx=10
bly=250
draw_line(blx,bly,blx,bly+50)
draw_line(blx,bly,blx+50,bly)
draw_line(blx+50,bly,blx+50,bly+50)
draw_line(blx,bly+50,blx+50,bly+50)
if(mousex>blx && mousex<blx+50 && mousey>bly && mousey<bly+50){cdm+=5;if(cdm>360)cdm-=360}

blx=130
bly=250
draw_line(blx,bly,blx,bly+50)
draw_line(blx,bly,blx+50,bly)
draw_line(blx+50,bly,blx+50,bly+50)
draw_line(blx,bly+50,blx+50,bly+50)
if(mousex>blx && mousex<blx+50 && mousey>bly && mousey<bly+50){cdm-=5;if(cdm<0)cdm+=360}

blx=70
bly=190
draw_line(blx,bly,blx,bly+50)
draw_line(blx,bly,blx+50,bly)
draw_line(blx+50,bly,blx+50,bly+50)
draw_line(blx,bly+50,blx+50,bly+50)
if(mousex>blx && mousex<blx+50 && mousey>bly && mousey<bly+50){cr+=5;if(cr>300)cr=300;}

blx=70
bly=310
draw_line(blx,bly,blx,bly+50)
draw_line(blx,bly,blx+50,bly)
draw_line(blx+50,bly,blx+50,bly+50)
draw_line(blx,bly+50,blx+50,bly+50)
if(mousex>blx && mousex<blx+50 && mousey>bly && mousey<bly+50){cr-=5;if(cr<5)cr=5}

//boton central
blx=70
bly=250
draw_line(blx,bly,blx,bly+50)
draw_line(blx,bly,blx+50,bly)
draw_line(blx+50,bly,blx+50,bly+50)
draw_line(blx,bly+50,blx+50,bly+50)

blx=200
bly=310
draw_line(blx,bly,blx,bly+50)
draw_line(blx,bly,blx+50,bly)
draw_line(blx+50,bly,blx+50,bly+50)
draw_line(blx,bly+50,blx+50,bly+50)
if(mousex>blx && mousex<blx+50 && mousey>bly && mousey<bly+50){ca+=5;if(ca>360)ca=360}

blx=260
bly=310
draw_line(blx,bly,blx,bly+50)
draw_line(blx,bly,blx+50,bly)
draw_line(blx+50,bly,blx+50,bly+50)
draw_line(blx,bly+50,blx+50,bly+50)
if(mousex>blx && mousex<blx+50 && mousey>bly && mousey<bly+50){ca-=5;if(ca<5)ca=5}

blx=400
bly=10
draw_line(blx,bly,blx,bly+50)
draw_line(blx,bly,blx+50,bly)
draw_line(blx+50,bly,blx+50,bly+50)
draw_line(blx,bly+50,blx+50,bly+50)
draw_text(blx+5,bly+15,"Trianulo")
if(mousex>blx && mousex<blx+50 && mousey>bly && mousey<bly+50){cdm=330;ca=120;cr=100}

blx=400
bly=70
draw_line(blx,bly,blx,bly+50)
draw_line(blx,bly,blx+50,bly)
draw_line(blx+50,bly,blx+50,bly+50)
draw_line(blx,bly+50,blx+50,bly+50)
draw_text(blx+2,bly+15,"Cuadrado")
if(mousex>blx && mousex<blx+50 && mousey>bly && mousey<bly+50){cdm=45;ca=90;cr=100}

blx=400
bly=130
draw_line(blx,bly,blx,bly+50)
draw_line(blx,bly,blx+50,bly)
draw_line(blx+50,bly,blx+50,bly+50)
draw_line(blx,bly+50,blx+50,bly+50)
draw_text(blx+2,bly+15,"Rombo")
if(mousex>blx && mousex<blx+50 && mousey>bly && mousey<bly+50){cdm=30;ca=60;cr=100}

blx=400
bly=190
draw_line(blx,bly,blx,bly+50)
draw_line(blx,bly,blx+50,bly)
draw_line(blx+50,bly,blx+50,bly+50)
draw_line(blx,bly+50,blx+50,bly+50)
draw_text(blx+2,bly+15,"Circulo")
if(mousex>blx && mousex<blx+50 && mousey>bly && mousey<bly+50){ca=5;cr=100}

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);                                                                                                                                   
}


}

//triangulo
//angulo interno: 120
//angulo: 333

//cuadrado
//angulo interno: 90
//angulo: 45

//rombo
//angulo interno: 60
//angulo: 30

//circulo
//angulo interno: 5



Los objetivos a alcanzar a corto plazo son los siguientes:

1. Crear un sistema de colisiones independiente sin uso de mascaras, para comprender el principio de colisión.
2. Crear un sistema 3d básico independiente para todas las versiones, inclusive para las que no cuentan con funciones 3d.
3. Crear un ejemplo de plataforma esferica con gravedad 360 empleando el sistema de colisiones independiente el cual no toma en cuenta las máscaras.
4. Crear juegos codificados que no necesiten ser descargados: agrupar todo en un solo codigo que pueda ser pegado en un evento draw.
5. Multi plataforma: el juego codificado debe contar con la capacidad de ser exportados a cualquier plataforma sin requerir modificación alguna.
6. Crear juegos fusionables: lograr crear una herramienta que me permita fusionar dos juegos codificados para crear un tercero.
7. Multi desarrollo: crear un pequeño motor de desarrollo que me permita programar lo básico del Gmk en entornos cómo Android, linux, Mac, ipad, etc...
8. Multi motor: crear un programa básico que me permita transformar el código de Gmk en código para otros motores de desarrollo como unity, cryengine, godot, etc...

Más detalles sobre la compatibilidad:

1. Game maker 1.1 no cuenta con draw_text() por lo tanto será descartada.
2. Game maker 1.4 si cuenta con draw_text()
3. El ancho de la room compatible para todas las versiones es 480x384 pixeles. Los pixeles finales no podrán observarse por lo tanto debe trabajarse en 479x383


4.Aunque las versiones anteriones a la 4 no usan mouse_x, se pueden adaptar.
5. Todas las versiones usan el draw_line(x,y,x2,y2)
6. Todas las versiones cuentan con la variable score


El siguiente código es compatible con todas las versiones desde la vieja 1.4 del año 2000 hasta la actual studio 2. Debe ser colocado en un evento draw. Este código solo fue creado para contemplar un poco de la compatibilidad existente en todas las versiones, si ejecutamos en cualquier version podremos ver como el mousex se adapta a todas las versiones. Hay que tener en cuenta que aunque una variable predeterminada del sistema como background_color o font_color, no se encuentren en todas las versiones, esto no quiere decir que vallan a generar errores, pues se convierten en variables declaradas.


{

///simulando evento create dentro de un evento draw con variable score.

if(!score)
{
background_color=c_black
font_color=c_green
screen_width=480
screen_height=384
score=1
version="nueva"
mousex=0
mousey=0
}

///evento draw
score+=1
if(score<100 && !mousex=0)version="vieja"

if(score>100)
{
if(version="nueva")
{
mousex=mouse_x
mousey=mouse_y
}
}
else
{
draw_text(100,100,"Presione aquí para evitar errores en versiones viejas")
}

//evento draw
dy=0

texto=version
draw_text(0,dy,texto)
dy+=12

texto=mousex
draw_text(0,dy,texto)
dy+=12

texto=mousey
draw_text(0,dy,texto)
dy+=12

}


La intención no es solo que el código sea compatible, sino que el código debe contener todo los recursos del juegos. De esta forma, para adquirir el juego no es necesario que se descargue la aplicación, solo se copia el código y se pega en un evento draw y listo. Para lograr esto he recurrido al ACII ART.

|\-----/|
| o_o |
\_^_/

      \        /\
        )     (  =')*
       (     /    )
         \(___)|

     |\___/,|          (`\
     |_ _     |.----------.) )
    ( T       )            /
(((  ^_    (((  / (((_/

__
.---'----`-.__
'-O-----O---'

__
.---'----`-.__
'-O-----O---'

       __!__
_____(_)_____
       !  !  !

             -----|-----
*>=====[_]L)
                -'-`-




El código final que se pretende obtener, en teoría será compatible para todas las versiones del Gmk y prodrá ser exportado para las distintas plataformas sin necesidad de modificación alguna. Entre estas plataformas se encuentra android. Hay que entender que para programar para pantallas táctiles no es indispensable crear los controles táctiles o teclas virtuales en objetos gui en game maker studio, pues con entender que la posición del dedo en la pantalla es la posición del ratón eso es suficiente.

Por ahora necesito entender el origen de los arrays, porque al no poder utilizarlos en versiones viejas tendré que imitarlos y creo que eso es posible con condiciones if, por que al parecer un array es el resultado de un conjunto de if.

Agradecería cualquier idea.

Aqui voy colocando las variables y funciones que son compatibles para todas las versiones:

1. x
2. y
3. score
4. draw_text(xpos,ypos,string)
5. draw_line(x,y,x2,y2)
6. random(n)

Aquí voy agregando algunos recursos:

Página web para descargar todas las versiones del gmk sin infringir ninguna ley.
gamemaker.cc

Codigos exclusivos para la compatibilidad
Código para utilizar funciones viejas en game makers modernos

{
repeat(!score)
{
font_size=12
font_name="Courier New"
version=2
//#set_font_size(font_size)#set_font_name(font_name)#version=1
score+=1
}
if(version=2)
{
texto="Hola mundo, hola mi nombre es dixon, con d mayuscula estoy programando para game maker tratando de crear la compatibilidad"
dy=100
draw_text_ext(0,dy,texto,12,480)
}

//dibujo
dy=0
texto="Hola mundo"
draw_text(0,dy,texto)
dy+=12
}


código para trabajar en CMD y crear códigos hibridos que puedan ejecutarse en game maker y en el cmd de windows

{
batch="
goto bat
"

///aqui vá todo el código para el game maker


}
:bat
@echo off
echo hola mundo
pause>null



Codigo hibrido de maxima compatibilidad
Este codigo genera un "Hola mudo" en todos los game maker, el el cmd de windows y en exploradores web mediante JavaScript


h="<!--html>
goto inicio

</html-->
<html>
<head>
<title>Mi primera página</title>
<script>
document.clear();
</script>

<script>
document.write('<br> Hola mundox');
</script>

</head>
<body>
</body>
</html>
<!--html>

:inicio
@echo off
cls
echo hola mundo
pause> null

"

draw_text(0,0,"Hola mundo")



*Para ejecutarlo en game maker: tenemos que copiarlo tal cual en un evento draw
*Para ejecurtarlo en el CMD: tenemos que guardarlo en un block de notas con la extensión .bat y luego habrirlo
*Para ejecutarlo en un explorador web: tenemos que guardarlo en un block de notas con la extensión .html y luego habrirlo.
63
Juegos completos / EL RESCATE DE LA TABLA DE MULTIPLICAR
Septiembre 21, 2019, 08:35:49 PM


EL RESCATE DE LA TABLA DE MULTIPLICAR


Preguntas y respuestas


GM4

Hoy en día, los niños pasan largas horas jugando video juegos y no dedican un solo momento a estudiar. Ante esta grave situación, se les recomienda a los padres que premien a sus hijos con video juegos solo si antes han realizado una actividad educativa. Para cumplir con ese objetivo se ha creado este pre-juego, el cual, de manera automatizada,  premia al niño con su juego favorito solo si ha realizado una buena practica de la tabla de multiplicar. La carpeta que contiene el juego cuenta con un archivo de texto llamado "_recompensa.txt" en el cual debemos de colocar la ruta del juego recompensa (Minecraft,Rabbit\'s Quest, Hechizos Literarios, Myotu Raise...).







Solo para Windows
Se adjunta archivo


Las imágenes son libres de derechos de autor, fueron descargadas de https://pixabay.com/es/

64
General / Terapia Mario Kart 64
Septiembre 18, 2019, 11:53:16 AM
Hola, buenos dias a todos.

En esta comunidad se encuentran muchos programadores que han desarrollado habilidades increíbles debido a sus esfuerzos, Algunos dan a conocer sus cualidades, otros no. Todos estos tienen algo en común y es que han dedicado muchas horas a estudiar y practicar. Es evidente que para conseguir el éxito y competir con estos individuos es necesario realizar ciertos esfuerzos físicos e intelectuales, pero también es necesario ser diligentes, quitarnos la pereza y levantarnos tempranos para luchar por nuestras metas. Aveces es difícil levantarse temprano para hacer las actividades diarias, para solucionar esto debemos contar con estímulos que nos impulsen a dar el primer paso y estos estímulos pueden ser los siguientes:

1. Tomar café dulcito (Con buena cantidad de azucar).
2.  Un desayuno delicioso y completo.
3. Musica de nuestro interez.
4. El beso de nuestra pareja (para los que cuentan con este gran recurso).
5. Jugar un video juego divertido (Ejemplo: Mario Kart 64).



Si tienes otra idea que sirva como estimulo u otro juego que quieras recomendar déjalo saber en los comentarios.

Este mensaje fue redactado a las 6:00AM Venezuela, mientras jugaba Mario Kart 64.(Gané la copa de Oro con la dificultad de 150cc).

Aqui dejo los enlaces de descarga del emulador.

PJ64 (EMULADOR DEL NINTENDO 64)
https://project64.uptodown.com/windows/descargar

65
Juegos completos / La hora de inspiración - 4 en uno
Agosto 26, 2019, 08:09:14 PM


La hora de inspiración


Diversos


GM4


¿Que clase de video juego puede ser creado en una hora?. Cada uno de los juegos presentados aquí fueron creados individualmente en 60 minutos,  por eso son de baja calidad. Todos están siendo agrupados en un solo ejecutable al estilo nes. Cada vez que puedo anexo un juego nuevo, mi objetivo es llegar a los 24 juegos.









Solo para windows, incluye editable.
http://ge.tt/7lrZDox2




66
General / AMOR Y VIDEO JUEGOS
Agosto 23, 2019, 11:58:15 PM









67


Queremos ser abogados / We want to be lawyers


Otro


GM4

Tenemos que elegir entre trabajar en un restaurante o adquirir la licenciatura en estudios jurídicos.






Solo para Windows, incluye editable.
http://ge.tt/6LtTVdx2
Presionar en la parte de abajo donde dice download:


68
Grafismo & Composición / Imágenes del proximo juego
Agosto 15, 2019, 02:36:06 AM
Hola, saludos a todos.

A continuación se muestran algunas imágenes del juego que tengo planeado publicar esta semana.

Mapa.


Personajes:


Vivienda


Vivienda


70
Juegos completos / THE MAN
Agosto 10, 2019, 04:46:59 AM


THE MAN


Plataformas


GM5

Trata sobre un hombre que hace trucos con su espada.






Solo para windows
http://ge.tt/6ErRRXx2


Más detalles:

Fue creado con un objetivo realmente sorprendente y motivador.

Objetivo: Desarrollar  juegos desde cero en un solo día con la condición de que las imágenes, sprites , audio y concepto sean 100% originales.

Programas utilizados:

*Game Maker 4.3c (ZIP) (gratuito): desarrollar juegos para windows 95/98/7/8/10...  http://gamemaker.cc/?section=gamemaker
*Manual español de game maker 5
http://descargas.abcdatos.com/tutorial/descargarL10237.html

*Famitracker (gratuito): Para componer audio 8 bits. http://famitracker.com/
Tutorial bueno: https://www.youtube.com/watch?v=7cC7WODcX0c

*Piskel (gratuito): Para crear pixel art
https://www.youtube.com/watch?v=7cC7WODcX0c

*Microsoft Paint xp para windows 7,8,10 (gratuito):
http://www.mediafire.com/file/onmw43dkfedc175/Paint_XDKIRBY925.rar/file

Experiencia vivida: Concebí el juego ayer jueves 08/08/2019 bajo el concepto de crearlo desde cero en un solo día. Comencé buscando tutoriales para crear música de 8 bits y pixel art, Invertí aproximadamente 4 horas desarrollando imágenes, músicas y sonidos. Lo que más me llevó tiempo fue la programación, tuve que suprimir muchas veces y empezar de cero varias veces. Fué desarrollado en 2 días.

Conocimientos adquiridos:
*Principios básicos de composición musical 8 bits
*Principios básicos de Pixel Art.
*Experiencias de programación:
   *Todo debe estar lo más ordenado posible para poder comprender el código.