Programa a un robot pintor renacentista en tu propio lenguaje de scripting.
BrushBot-3000 es una aplicación de escritorio hecha con Godot 4 y C# en la que escribes código en un lenguaje propio, BrushScript, y ves cómo un bot lo ejecuta paso a paso sobre un lienzo de píxeles. Incluye un intérprete completo escrito desde cero: analizador léxico, sintáctico, semántico y evaluador.
- Un lenguaje propio. Instrucciones de dibujo (
DrawLine,DrawCircle,DrawRectangle,Fill,SetPixel), control del pincel (Spawn,Respawn,Color,Size), variables, expresiones aritméticas y booleanas, y control de flujo con etiquetas y saltos condicionales (GoTo [etiqueta] (condición)). - Errores en vivo. Mientras escribes, las líneas con errores léxicos, sintácticos o semánticos se resaltan en rojo y el mensaje aparece en la terminal integrada. No puedes ejecutar hasta resolverlos.
- Ejecución animada. El bot dibuja paso a paso, con la velocidad ajustable desde un slider, o de golpe con Skip.
- Lienzo configurable de 1×1 a 256×256 píxeles.
- Colores predefinidos y personalizados con
RGBA(r, g, b, a). El blanco actúa como borrador.
Requisitos: Godot 4.x — versión .NET/Mono y el
.NET SDK 10 (o el que indique BrushBot3000.csproj).
git clone https://github.com/andr-migue/BrushBot-3000
cd BrushBot-3000Abre Godot, pulsa Importar, selecciona project.godot y deja que compile la solución
de C#. Después, F5 para ejecutar.
Spawn(32, 32)
Color("Yellow")
Size(3)
DrawCircle(0, 0, 10)
Fill()
Color("Orange")
DrawCircle(0, 0, 4)
Todo programa empieza por Spawn(x, y). A partir de ahí, escribe en el editor de la
izquierda y pulsa docs/brushscript.md.
En examples/ hay scripts listos para cargar desde la aplicación:
| Script | Qué muestra |
|---|---|
spiral.pw |
Bucle con etiqueta y salto condicional |
heart.pw |
El mínimo imprescindible, en 13 líneas |
flower.pw |
Composición con Fill y varios colores |
fibonacci.pw |
Aritmética y variables |
control_flow.pw |
Saltos, condiciones y Respawn |
print_numbers.pw |
Salida por la terminal con Print |
doll.pw, one_piece.pw |
Dibujos más elaborados |
examples/generated/ contiene scripts generados automáticamente a
partir de imágenes con la herramienta tools/image_to_pw: son
miles de SetPixel seguidos, pensados para ver el bot pintar una foto entera.
El sistema de errores distingue las cuatro etapas y siempre apunta a línea y columna:
| Etapa | Ejemplo |
|---|---|
| Léxico | Carácter inesperado, cadena sin cerrar |
| Sintáctico | Paréntesis desbalanceados, argumentos que faltan |
| Semántico | Variable no declarada, tipo incorrecto, etiqueta inexistente |
| Ejecución | División por cero, dibujar fuera del lienzo |
Las tres primeras etapas acumulan todos los errores y los muestran juntos, en lugar de parar en el primero.
assets/ texturas, iconos, fuente y música
docs/ referencia del lenguaje y arquitectura
examples/ scripts .pw de ejemplo
scenes/ escenas de Godot (main.tscn, brush.tscn)
src/
Language/ el intérprete, en C# puro y sin dependencias de Godot
App/ la capa de Godot: UI, dibujado del lienzo y del pincel
tools/ utilidad en Python para convertir imágenes en scripts .pw
El intérprete no conoce a Godot y la capa de Godot no conoce la gramática: se comunican
a través de un único objeto Context. El detalle está en
docs/architecture.md.
Código bajo MIT. Los recursos de assets/ son de terceros y mantienen sus
propias licencias — ver CREDITS.md.



