build
This commit is contained in:
parent
2f5557a552
commit
1ead4a8c5c
|
@ -10,13 +10,12 @@ export function run (source) {
|
|||
code = source
|
||||
const output = mod.ludus(source).value
|
||||
res = JSON.parse(output)
|
||||
console.log(res)
|
||||
return res
|
||||
}
|
||||
|
||||
export function stdout () {
|
||||
if (!res) return ""
|
||||
return res.io.console.data
|
||||
return res.io.stdout.data
|
||||
}
|
||||
|
||||
export function turtle_commands () {
|
||||
|
@ -135,7 +134,7 @@ function command_to_state (prev_state, curr_command) {
|
|||
return {...prev_state, heading: heading}
|
||||
}
|
||||
case "loadstate": {
|
||||
console.log("LOADSTATE: ", curr_command)
|
||||
// console.log("LOADSTATE: ", curr_command)
|
||||
const [_, [x, y], heading, visible, pendown, penwidth, pencolor] = curr_command
|
||||
return {position: [x, y], heading, visible, pendown, penwidth, pencolor}
|
||||
}
|
||||
|
@ -270,7 +269,7 @@ function svg_render_turtle (state) {
|
|||
const pen_alpha = pa/255
|
||||
const ink = pendown ? `<line x1="${x1}" y1="${y1}" x2="0" y2="0" stroke="rgb(${pr} ${pg} ${pb})" stroke-opacity="${pen_alpha}" stroke-width="${penwidth}" />` : ""
|
||||
return `
|
||||
<g transform="translate(${x}, ${y})rotate(${turn_to_deg(heading)})">
|
||||
<g transform="translate(${x}, ${y})rotate(${-turn_to_deg(heading)})">
|
||||
<polygon points="${x1} ${y1} ${x2} ${y2} ${x3} ${y3}" stroke="none" fill="rgb(${fr} ${fg} ${fb})" fill-opacity="${fill_alpha}"/>
|
||||
${ink}
|
||||
</g>
|
||||
|
@ -278,14 +277,14 @@ function svg_render_turtle (state) {
|
|||
}
|
||||
|
||||
export function svg (commands) {
|
||||
console.log(commands)
|
||||
// console.log(commands)
|
||||
const states = [turtle_init]
|
||||
commands.reduce((prev_state, command) => {
|
||||
const new_state = command_to_state(prev_state, command)
|
||||
states.push(new_state)
|
||||
return new_state
|
||||
}, turtle_init)
|
||||
console.log(states)
|
||||
// console.log(states)
|
||||
const {maxX, maxY, minX, minY} = states.reduce((accum, {position: [x, y]}) => {
|
||||
accum.maxX = Math.max(accum.maxX, x)
|
||||
accum.maxY = Math.max(accum.maxY, y)
|
||||
|
@ -353,7 +352,7 @@ export function p5 (commands) {
|
|||
states.push(new_state)
|
||||
return new_state
|
||||
}, turtle_init)
|
||||
console.log(states)
|
||||
// console.log(states)
|
||||
const p5_calls = [...p5_call_root]
|
||||
for (let i = 1; i < states.length; ++i) {
|
||||
const prev = states[i - 1]
|
||||
|
|
|
@ -1,20 +1,22 @@
|
|||
import {run, svg} from "./ludus.mjs"
|
||||
import {run, svg, stdout} from "./ludus.mjs"
|
||||
|
||||
const code = `
|
||||
|
||||
let home = unbox (turtle_state)
|
||||
|
||||
let start = unbox (turtle_state)
|
||||
fd! (100)
|
||||
|
||||
loadstate! (home)
|
||||
|
||||
rt! (0.25)
|
||||
fd! (100)
|
||||
|
||||
do turtle_state > unbox
|
||||
loadstate! (start)
|
||||
& home! ()
|
||||
|
||||
rt! (0.25)
|
||||
fd! (100)
|
||||
lt! (0.25)
|
||||
|
||||
`
|
||||
|
||||
const result = run(code)
|
||||
|
||||
// console.log(stdout(result))
|
||||
|
||||
console.log(svg(result.io.turtle.data))
|
||||
|
|
|
@ -5,12 +5,12 @@
|
|||
|
||||
<line x1="0" y1="0" x2="6.123233995736766e-15" y2="100" stroke="rgb(255 255 255)" stroke-opacity="1" stroke-width="1"/>
|
||||
|
||||
<line x1="6.123233995736766e-15" y1="100" x2="100" y2="100" stroke="rgb(255 255 255)" stroke-opacity="1" stroke-width="1"/>
|
||||
<line x1="6.123233995736766e-15" y1="100" x2="0" y2="0" stroke="rgb(255 255 255)" stroke-opacity="1" stroke-width="1"/>
|
||||
|
||||
<line x1="100" y1="100" x2="100" y2="0" stroke="rgb(255 255 255)" stroke-opacity="1" stroke-width="1"/>
|
||||
<line x1="0" y1="0" x2="100" y2="0" stroke="rgb(255 255 255)" stroke-opacity="1" stroke-width="1"/>
|
||||
|
||||
|
||||
<g transform="translate(100, 0)rotate(180)">
|
||||
<g transform="translate(100, 0)rotate(90)">
|
||||
<polygon points="0 20 -13.226237306473037 -15.00222139260919 13.226237306473037 -15.00222139260919" stroke="none" fill="rgb(255 255 255)" fill-opacity="0.5882352941176471"/>
|
||||
<line x1="0" y1="20" x2="0" y2="0" stroke="rgb(255 255 255)" stroke-opacity="1" stroke-width="1" />
|
||||
</g>
|
||||
|
@ -22,11 +22,9 @@
|
|||
|
||||
let home = unbox (turtle_state)
|
||||
|
||||
fd! (100)
|
||||
rt! (0.25)
|
||||
fd! (100)
|
||||
|
||||
& loadstate! (home)
|
||||
loadstate! (home)
|
||||
|
||||
rt! (0.25)
|
||||
fd! (100)
|
||||
|
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Loading…
Reference in New Issue
Block a user