![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
|
Como escribi en http://clubdelphi.com/foros/showthread.php?t=80367 llevo un rato dandole vueltas a hacer un nuevo lenguaje.
Eso me ha llevado a conocer un monton de lenguajes alternativos, y de entre ellos, este es muy parecido a pascal: http://nimrod-code.org/ (En el home se ve mas como un python, es mas bien un pythonpascal )Ya en el tutorial: http://nimrod-code.org/tut1.html
Muy interesante me parecio su metaprogramacion (MACROS en C++):
__________________
El malabarista. |
|
#2
|
||||
|
||||
|
Muy interesante. Yo también ando buscando un "nuevo lenguaje" (en realidad ya lo tengo, pero ahora tengo que implementarlo y me da mucha pereza
) y este tiene muy buena pinta.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi! - BAScript - Multi Language Scriptable Development Environment |
|
#3
|
||||
|
||||
|
Y como has pensando el lenguaje?
__________________
El malabarista. |
|
#4
|
||||
|
||||
|
Es un lenguaje orientado a objetos, dirigido por estados y basado en mensajes (toma ya
). Está pensado para aplicarlo a videojuegos, especialmente para definir comportamientos de personajes y objetos. Por ejemplo, este adaptado de "Programming Game IA By Example":Código:
ACTOR Bob IS aMiner
STATE EnCasa
IF Lugar # Casa
Msg "Walkin' home."
MoverA (Casa)
SEND MESSAGE EnCasa TO Esposa
ELSE
IF Fatigado
Descansa
ELSE
SET STATE TrabajaMina
END IF
END IF
END STATE
MESSAGE CenaLista
IF Lugar = Casa THEN
Msg "Okay hun, ahm a-comin"
SET Hambre TO 0
SET STATE Comiendo
END IF
END MESSAGE
STATE Comiendo
IF Hambre = 0
Msg "Smells Reaaal goood Elsa!"
SET Hambre TO 1
ELSE
IF Hambre = 1
Msg "Tastes real good too!"
SET Hambre TO 2
ELSE
Msg "Thankya li'lle lady. Ah better get back to whatever ah wuz doin'."
SET STATE PREVIOUS
END IF
END IF
END STATE
STATE TrabajaMina
IF Lugar # Mina
Msg "Walkin' to the gold mine."
MoverA (Mina)
ELSE
Cava
Msg "Pickin' up a nugget."
IF BolsaLlena
SET STATE VisitaBanco
ELSE
IF Sediento
SET STATE VisitaSaloon
END IF
END IF
END STATE
STATE VisitaBanco
IngresaDinero (Oro)
SET Oro TO 0
IF SuficienteOro (Dinero)
Msg "WooHoo! Rich enough for now. Back home to mah li'lle lady."
SET STATE EnCasa
ELSE
SET STATE TrabajaMina
END IF
END STATE
STATE VisitaSaloon
IF Lugar # Saloon
Msg "Boy, ah sure is thusty! Walking to the saloon."
MoverA (Saloon)
ELSE
IF Sediento
IF NOT Inventario (Wisky)
Compra (Wisky)
ELSE
Bebe (Wisky)
Msg "That's mighty fine sippin' liquer."
SET STATE TrabajaMina
END IF
END IF
END IF
END STATE
END ACTOR
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi! - BAScript - Multi Language Scriptable Development Environment |
|
#5
|
||||
|
||||
|
Véndeselo a facebook, para que lo usen todos sus usuarios que tienen la costumbre de ir contando al mundo lo que están haciendo
![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#6
|
||||
|
||||
|
Cita:
Si el lenguaje tiene capacidad de usar YIELD, mensajes y hacer un SELECT para esperar sus respuestas, forzosamente puede modelar una maquina de estado: https://gobyexample.com/select Pero me gustaría ver como eso podría ayudar de forma mas clara.
__________________
El malabarista. |
|
#7
|
||||
|
||||
|
Como digo, es para definir el comportamiento de los actores en un videojuego. Cada actor tiene un estado, el cual es quien define su comportamiento. Los mensajes se usan para que los actores se comuniquen entre sí.
La ventaja está en que el intérprete permitirá (si el motor así lo indica) que el diseñador del juego cree sus propios estados sin limitarse a los que el motor provee. Cita:
Me lo pensaré.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi! - BAScript - Multi Language Scriptable Development Environment |
|
#8
|
||||
|
||||
|
Si, entiendo lo de los estados. Lo que no entiendo es porque independiente de los mensajes (aparte que asi como se ven no muy diferentes a GOTO).
Si hay corutinas, cada vez que se hace YIELD se cede el control. Pero si ademas hay un canal de mensajes y por ende el YIELD se redirecciona con precision a quien espera el mensaje, entonces es como brincar a un nuevo estado (asi es como se hace en GO).
__________________
El malabarista. |
|
#9
|
||||
|
||||
|
No tengo ni idea de GO, así que no sé muy bien cómo va; y la verdad es que me pierdo con eso del YIELD y las corrutinas...
![]() Los mensajes no son GOTOs, ya que modifican el flujo del programa. Es más, es que en mi lenguaje no se definen flujos de ejecución, en el sentido estricto. Tanto las respuestas a mensajes como las descripciones de los estados se ejecutan en un tick o, quizá mejor dicho, en una iteración del bucle principal de juego. Es decir: ActualizaEstadosActores y DespachaMensajesPendientes son los puntos de entrada al intérprete del lenguaje. En el primero se ejecuta la rutina del estado actual del actor y en el segundo se despachan los mensajes de la cola de pendientes. Hay que tener en cuenta, también, que puede establecerse un retardo al envío de un mensaje. Es decir, que pueden funcionar como una especie de "alarma". Por ejemplo, cuando el minero Bob llega a casa avisa a su esposa Helen; la respuesta podría ser: Código:
ACTOR Helen IS Wife
...
MESSAGE EnCasa
IF SENDER = Esposo
Msg "Hi hun. I'll prepare your dinna'."
SEND MESSAGE CenaLista TO SELF DELAY 100
END IF
END MESSAGE
MESSAGE CenaLista
IF SENDER = SELF
Msg "Hun, her' are your dinna'."
SEND MESSAGE CenaLista TO Esposo
END IF
END
...
END ACTOR
No sé si esto aclara algo. Espero que sí.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi! - BAScript - Multi Language Scriptable Development Environment Última edición por Ñuño Martínez fecha: 06-10-2013 a las 12:12:04. |
|
#10
|
||||
|
||||
|
Basicamente, estas describiendo el modelo de canales y mensajes de GO.
Pegate una revisada de todo eso, que hay otras posibilidades muy interesantes para lo de juegos que se pueden modelar basado en ese modelo (que se llama https://en.wikipedia.org/wiki/Commun...tial_processes). Tambien revisa que es una corutina, un closure y como se usa el comando YIELD en C# o en Python.
__________________
El malabarista. |
|
#11
|
||||
|
||||
|
Ok. Le echaré un vistazo.
![]()
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi! - BAScript - Multi Language Scriptable Development Environment |
![]() |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Nuevo Foro Morfik programacion web /pascal | ASAPLTDA | Debates | 32 | 10-12-2010 22:16:51 |
| Nuevo tipo /contrato mant de Embarcadero | avmm2004 | Noticias | 52 | 04-03-2009 17:22:50 |
| Tipo de dato C a Pascal | Young | Varios | 1 | 23-02-2009 17:21:11 |
| crear un programa tipo pascal que funcione con el disco de inicio ms-dos | kurono | Varios | 5 | 14-03-2008 22:28:17 |
| manual de excepciones de object pascal para free pascal??? | Garion | OOP | 3 | 27-05-2005 00:42:29 |
|