1. 기억할 값
이름은 영문으로, 처음 값은 숫자로 정합니다.
state count = 0
state x = 80빈 코드 · 직접 만든 동작
상태를 만들고, 입력에 동작을 연결하세요.
코드를 적용하면 장면이 바뀝니다. 같은 이름의 상태는 이어집니다.
편집만으로 실행 중인 코드는 바뀌지 않습니다.
정지하면 시간만 멈춥니다. 아래 입력은 정지 중에도 작동합니다.
입력을 선언하면 여기에 버튼이 생깁니다.
장면을 클릭하면 키보드로 입력할 수 있습니다. 코드나 폼을 편집하는 동안에는 전달되지 않습니다.
선언한 상태의 값이 표시됩니다.
코어가 보고한 WebAssembly 메모리입니다. 브라우저·편집기·렌더러의 메모리와 프로세스 전체 사용량은 포함하지 않습니다. 예약 공간 안에 사용 중인 코드·상태·스테이징 공간이 포함되므로 합산하지 않습니다.
시간 지연으로 건너뛴 프레임: 0
이름은 영문으로, 처음 값은 숫자로 정합니다.
state count = 0
state x = 80버튼 이름과 키를 선언하고 .down / .up에 연결합니다.
input tap = Space
on tap.down {
count = count + 1
}좌표와 크기를 상태에 연결할 수 있습니다.
box tile(x, 180, 40, 40, "#7ed9ae")
text label(40, 60, count, "Count: ")실행하면 매 프레임 반응합니다. dt는 1/60초입니다.
on frame {
x = x + 30 * dt
if x > 600 { x = 0 }
}표현식+ - * /, < <= > >= == !=, && || !, 괄호, min(a,b), max(a,b), clamp(x,lo,hi)를 사용합니다. 논리 연산은 양쪽을 모두 계산합니다.
도형box id(x,y,width,height,"#rrggbb")circle id(x,y,radius,"#rrggbb")text id(x,y,value,"접두사")
글자의 value는 숫자 표현식입니다. 문자 접두사는 생략할 수 있습니다.
입력Space, Enter, ArrowLeft/Right/Up/Down, KeyA~KeyZ, Digit0~Digit9. 같은 키는 하나의 입력에 연결합니다.
직접 조작input drag = pointer(tile)로 도형에 입력을 연결합니다. on drag.down / .move / .up / .cancel에서 event_x, event_y는 장면 좌표입니다. 이동 방식과 취소 시 동작도 코드로 정합니다. 초점이나 포인터 캡처를 잃으면 .cancel이 전달됩니다.
값과 규칙 재사용record Tile { x=0; y=0 }로 필드를 정하고 item green = Tile(x=80)으로 대상을 만듭니다. rule move(t: Tile) { t.x=event_x }를 on drag.move use move(green)으로 연결합니다. 화면에서는 green.x를 읽습니다. 규칙은 연결한 대상의 값을 직접 바꿉니다.
여러 도형의 입력 묶기input drag = pointer { green_box: green; blue_box: blue }로 연결하고 on drag.move use move(drag.target)으로 현재 조작 대상을 전달합니다. 같은 레코드 타입의 대상끼리 묶으며, 각 도형은 따로 잡고 놓을 수 있습니다.
이 실험의 범위
상태 32개 · 입력 8개 · 도형/글자 24개 · 반응 64개 · 컴파일된 명령 512개 · 코드 32 KiB. 반복문, 함수 선언, 자동 충돌·물리는 없습니다. 줄바꿈 또는 세미콜론으로 구분하고 #으로 주석을 씁니다.
0으로 나누기 등 계산 실패 시 해당 이벤트의 상태 변경 전체를 취소합니다. 입력을 누르고 있을 때는 새 코드를 적용할 수 없습니다.
선택한 코드를 편집기에 불러옵니다. 자동으로 적용되지 않습니다.