Skip to content

Anthhon/azulejo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Azulejo

Linguagem esotérica de domínio específico para criação de pixel art estática e animada.
Arquivos Azulejo têm extensão .azlj. O runtime é gerenciado pela LÖVE2D.

Propósito

DSL declarativa para desenho em grade de pixels. Cada programa descreve uma cena visual (ou animação) usando comandos simples. Não é Turing-completa — e nem precisa ser.

Como Usar

love source/ caminho/para/arquivo.azlj

Tipos

Tipo Descrição Exemplo
int Inteiro positivo 16, 255
coord Par de coordenadas 2,4
color Hex RGB ou RGBA #FF0000, #FF0000FF
size Dimensão do canvas 16x16

Comandos

Canvas

size LARGURAxALTURA

Obrigatório. Deve ser o primeiro comando. Define tamanho da grade.

background #RRGGBB

Preenche fundo com cor sólida. Padrão: branco.

Cor

color #RRGGBB

Define cor ativa para todos os comandos de desenho seguintes.

Primitivas de Desenho

pixel x,y

Pixel único em x,y.

line x1,y1 x2,y2

Linha de (x1,y1) até (x2,y2).

rect x1,y1 x2,y2

Retângulo vazio.

fill x1,y1 x2,y2

Retângulo preenchido.

circle x,y r

Círculo com centro (x,y) e raio r.


Animação

Azulejo suporta animações frame-a-frame. Comandos de metadados vão antes do primeiro @frame. Comandos de desenho antes do primeiro @frame são executados em todos os frames (útil para background e elementos fixos).

Metadados

type animation

Declara arquivo como animação. Padrão: image.

framerate N

Frames por segundo. Padrão: 1.0. Deve ser > 0.

loop true
loop true N
loop false

Ativa loop. N opcional define número de repetições (>= 1). Sem N: loop infinito.

Frames

@frame

Marca início de um novo frame. Cada bloco entre marcadores é um frame independente.


Estrutura de um Arquivo de Animação

-- animacao.azlj
size 16x16
type animation
framerate 8
loop true

background #1a1a2e   -- executado em todos os frames

@frame
color #e94560
fill 4,4 8,8

@frame
color #e94560
fill 8,8 12,12

@frame
color #e94560
fill 4,8 8,12

Comandos antes do primeiro @frame rodam como um conjunto de comandos fixos antes da execução de cada frame.
Se não houver nenhum @frame, o arquivo inteiro é tratado como imagem estática.


Exemplo — Imagem Estática

-- hello.azlj
size 16x16
background #1a1a2e
color #e94560
fill 4,4 12,12
color #ffffff
pixel 6,7
pixel 10,7
line 6,10 10,10

Comentários

-- comentário de linha

Comentários podem aparecer no final de qualquer linha.


Estrutura do Projeto

azulejo/
├── README.md
├── source/
│   ├── main.lua        # entry point LÖVE2D
│   ├── tokenizer.lua
│   ├── parser.lua
│   ├── draw.lua
│   ├── state.lua
│   └── debug.lua
└── examples/
    ├── hello.azlj
    └── ...

Dependências


Roadmap

  • repeat / blocos de repetição
  • sprite / stamp (sprites reutilizáveis)

About

Scripting esoteric language to create pixelated arts.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages