<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>Langton's ant</title>
<!-- rbcCanvas editor v0.8.2 -->
</head>
<body>
<script type="text/javascript" src="https://rbcanvas.net/0.8.2/runtime/opal/opal_patched.min.js" onload="Opal.load('opal')"></script>
<script type="text/javascript" src="https://rbcanvas.net/0.8.2/runtime/opal/opal-parser_patched.min.js" onload="Opal.load('opal-parser'); Opal.load('parser/ruby23');"></script>
<script type="text/javascript" src="https://rbcanvas.net/0.8.2/runtime/opal/native.min.js" onload="Opal.load('native')"></script>
<script type="text/javascript" src="https://rbcanvas.net/0.8.2/runtime/p5/p5.min.js"></script>
<script type="text/javascript" src="https://rbcanvas.net/0.8.2/runtime/rbcanvas/monkeypatch_p5.js"></script>
<script type="text/javascript" src="https://rbcanvas.net/0.8.2/runtime/rbcanvas/rbcanvas_transpiled_helper.js"></script>
<script type="text/javascript" src="https://rbcanvas.net/0.8.2/runtime/rbcanvas/rbcanvas_transpiled.js"></script>
<script type="text/javascript" src="https://rbcanvas.net/0.8.2/runtime/rbcanvas/microbit_bleuart.js"></script>
<script type="text/javascript" src="https://rbcanvas.net/0.8.2/runtime/rbcanvas/microbit_bleuart_rb.js"></script>
<script type="text/ruby" section="s00" name="main">
def setup
puts RBCanvas::CODE_USER
eval(RBCanvas::CODE_CONSTANT)
eval(RBCanvas::CODE_USER)
end
module RBCanvas
CODE_CONSTANT = <<-'EOC_CONSTANT'
%x{
cv = document.getElementById("defaultCanvas0");
if (cv) {
cv.remove(); // remove default Canvas (100 x 100)
}
// document.body.innerHTML = ""
}
EOC_CONSTANT
CODE_USER = <<-'EOC_USER'
include DX
include Console
$PROGRAM_NAME = "main"
Window.width = 1000
Window.height = 1000
Window.bgcolor = C_WHITE
class Number
def reverse() self.zero? ? 1 : 0 end
end
status = {}
pos = [0, 0]
dir = 0
Window.loop(false) do
Window.save do
Window.scale(5.0, 5.0)
Window.translate(80, 80)
status[pos] = status.fetch(pos, 0).reverse
dir = (dir + -(status[pos].zero? ? 1 : -1) ) % 4
Window.draw_box_fill(pos[0], pos[1], pos[0]+1, pos[1]+1, (status[pos].zero? ? C_WHITE : C_BLACK))
case dir
when 0
pos[1] -= 1
when 1
pos[0] += 1
when 2
pos[1] += 1
when 3
pos[0] -= 1
end
end
end
$PROGRAM_NAME = "main"
EOC_USER
end
</script>
</body>
</html>