<!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>