\r\n record<\/button>\r\n play<\/button>\r\n clear screen<\/button>\r\n\r\n\r\n \r\n <\/td>\r\n forward<\/button><\/td>\r\n <\/td>\r\n <\/tr>\r\n \r\n left<\/button><\/td>\r\n <\/td>\r\n right<\/button><\/td>\r\n <\/tr>\r\n \r\n <\/td>\r\n back<\/button><\/td>\r\n <\/td>\r\n <\/tr>\r\n<\/table>","post":"","numboards":1,"description":"This code creates an interactive turtle graphics board with controls for moving forward, backward, turning, and clearing the canvas. You can record sequences of commands, play them back with animation, and toggle a grid display. Parameters like step size, angle, and speed are adjustable.\r\n\r\n**AI generated desctiption**","dimensions":[{"width":"100%","height":null,"aspect-ratio":"1 \/ 1"}],"wider":0,"license":{"id":2,"identifier":"CC BY-SA 4.0","title":"Creative Commons Attribution ShareAlike 4.0 International","free":"- Share\r\n- Adapt","restrictions":"- Attribution\r\n- ShareAlike\r\n- No additional restrictions","with_attribution":1,"link":"https:\/\/creativecommons.org\/licenses\/by-sa\/4.0\/","image":"https:\/\/i.creativecommons.org\/l\/by-sa\/4.0\/88x31.png","rank":1},"timestamp":"2025-09-26 20:01:09","visible":0,"tags":[{"id":151,"alias":"turtle","name":"Turtle"}],"tag_ids":[151],"refers_to":[],"refers_to_ids":[],"authors":[],"authors_ids":[],"unique_ids":["jxgbox-68e43c13863cc"],"code_display":"\/\/ Define the id of your board in BOARDID\n\nconst board = JXG.JSXGraph.initBoard(BOARDID, {\r\n boundingbox: [-500, 500, 500, -500],\r\n axis: true,\r\n defaultAxes: {\r\n x: {\r\n visible: false,\r\n ticks: {\r\n label: {\r\n visible: false\r\n }\r\n }\r\n },\r\n y: {\r\n visible: false,\r\n ticks: {\r\n label: {\r\n visible: false\r\n }\r\n }\r\n }\r\n }\r\n});\r\n\r\n\/\/ Global variables:\r\nvar turtle = board.create('turtle', [0, 0], { strokeWidth: 2, strokeColor: 'blue', arrow: { strokeWidth: 2,\r\n strokeColor: 'red' } });\r\nvar is_recording = false;\r\nvar program = [];\r\nvar step;\r\nvar angle = 45;\r\nvar stepsize = 100;\r\nvar time = 300;\r\n\r\n\/\/ Event handlers:\r\ndocument.getElementById(\"btn_forward\").addEventListener('click', function(evt) {\r\n if (is_recording) {\r\n program.push('turtle.forward(stepsize);');\r\n if (document.getElementById(\"show_record\").checked) { turtle.forward(stepsize); }\r\n } else {\r\n turtle.forward(stepsize);\r\n }\r\n});\r\n\r\ndocument.getElementById('btn_back').addEventListener('click', function(evt) {\r\n if (is_recording) {\r\n program.push('turtle.back(stepsize);');\r\n if (document.getElementById('show_record').checked) { turtle.back(stepsize); }\r\n } else {\r\n turtle.back(stepsize);\r\n }\r\n});\r\n\r\ndocument.getElementById('btn_left').addEventListener('click', function(evt) {\r\n if (is_recording) {\r\n program.push('turtle.left(angle);');\r\n if (document.getElementById('show_record').checked) { turtle.left(angle); }\r\n } else {\r\n turtle.left(angle);\r\n }\r\n});\r\n\r\ndocument.getElementById('btn_right').addEventListener('click', function(evt) {\r\n if (is_recording) {\r\n program.push('turtle.right(angle);');\r\n if (document.getElementById('show_record').checked) { turtle.right(angle); }\r\n } else {\r\n turtle.right(angle);\r\n }\r\n});\r\n\r\ndocument.getElementById('btn_clear').addEventListener('click', function(evt) {\r\n turtle.clearScreen();\r\n});\r\n\r\ndocument.getElementById('btn_record').addEventListener('click', function(evt) {\r\n if (!is_recording) {\r\n is_recording = true;\r\n document.getElementById('btn_record').innerHTML = 'stop';\r\n document.getElementById('btn_record').classList.add('record');\r\n program = [];\r\n board.defaultAxes.x.setAttribute({ visible: true });\r\n board.defaultAxes.y.setAttribute({ visible: true });\r\n turtle.clearScreen();\r\n } else {\r\n is_recording = false;\r\n document.getElementById('btn_record').innerHTML = 'record';\r\n document.getElementById('btn_record').classList.remove('record');\r\n\r\n if (!document.getElementById('show_grid').checked) {\r\n board.defaultAxes.x.setAttribute({ visible: false });\r\n board.defaultAxes.y.setAttribute({ visible: false });\r\n }\r\n\r\n turtle.clearScreen();\r\n }\r\n});\r\n\r\n\/\/ Animation\r\nvar do_step = function() {\r\n if (step < program.length) {\r\n eval(program[step]);\r\n step++;\r\n setTimeout(do_step, time);\r\n }\r\n}\r\ndocument.getElementById('btn_play').addEventListener('click', function(evt) {\r\n step = 0;\r\n do_step();\r\n});\r\n\r\ndocument.getElementById('show_grid').addEventListener('change', function(evt) {\r\n if (document.getElementById('show_grid').checked) {\r\n board.defaultAxes.x.setAttribute({ visible: true });\r\n board.defaultAxes.y.setAttribute({ visible: true });\r\n } else {\r\n board.defaultAxes.x.setAttribute({ visible: false });\r\n board.defaultAxes.y.setAttribute({ visible: false });\r\n }\r\n});\r\n\r\ndocument.getElementById('step_size').value = stepsize;\r\ndocument.getElementById('angle').value = angle;\r\ndocument.getElementById('time').value = time;\r\n\r\ndocument.getElementById('step_size').addEventListener('change', function(evt) {\r\n stepsize = 1 * (document.getElementById('step_size').value);\r\n});\r\n\r\ndocument.getElementById('angle').addEventListener('change', function(evt) {\r\n angle = 1 * (document.getElementById('angle').value);\r\n});\r\n\r\ndocument.getElementById('time').addEventListener('change', function(evt) {\r\n time = 1 * (document.getElementById('time').value);\r\n});","code_execute_html":"<\/div>\n Share Turtle bot Show plain example JSFiddle Link QR code Copy QR Download QR iFrame <iframe src="http://jsxgraph.uni-bayreuth.de/share/iframe/turtle-bot" style="border: 1px solid black; overflow: hidden; width: 550px; aspect-ratio: 55 / 65;" name="JSXGraph example: Turtle bot" allowfullscreen ></iframe> <iframe src="http://jsxgraph.uni-bayreuth.de/share/iframe/turtle-bot" style="border: 1px solid black; overflow: hidden; width: 550px; aspect-ratio: 55 / 65;" name="JSXGraph example: Turtle bot" allowfullscreen ></iframe> This code has to HTML <table> <tr> <td>Show recording: </td> <td><input type="checkbox" id="show_record"></td> </tr> <tr> <td>Show grid: </td> <td><input type="checkbox" id="show_grid"></td> </tr> <tr> <td>Step size: </td> <td><input type="number" id="step_size" min="0" max="500"></td> </tr> <tr> <td>Angle: </td> <td><input type="number" id="angle" min="0" max="359"></td> </tr> <tr> <td>Time : </td> <td><input type="number" id="time" min="0" max="2000"></td> </tr> </table> <p> <button id="btn_record">record</button> <button id="btn_play">play</button> <button id="btn_clear">clear screen</button> <table> <tr> <td></td> <td><button id="btn_forward">forward</button></td> <td></td> </tr> <tr> <td><button id="btn_left">left</button></td> <td></td> <td><button id="btn_right">right</button></td> </tr> <tr> <td></td> <td><button id="btn_back">back</button></td> <td></td> </tr> </table> <div id="board-0-wrapper" class="jxgbox-wrapper " style="width: 100%; "> <div id="board-0" class="jxgbox" style="aspect-ratio: 1 / 1; width: 100%;" data-ar="1 / 1"></div> </div> <script type = "text/javascript"> /* This example is licensed under a Creative Commons Attribution ShareAlike 4.0 International License. https://creativecommons.org/licenses/by-sa/4.0/ Please note you have to mention The Center of Mobile Learning with Digital Technology in the credits. */ const BOARDID = 'board-0'; const board = JXG.JSXGraph.initBoard(BOARDID, { boundingbox: [-500, 500, 500, -500], axis: true, defaultAxes: { x: { visible: false, ticks: { label: { visible: false } } }, y: { visible: false, ticks: { label: { visible: false } } } } }); // Global variables: var turtle = board.create('turtle', [0, 0], { strokeWidth: 2, strokeColor: 'blue', arrow: { strokeWidth: 2, strokeColor: 'red' } }); var is_recording = false; var program = []; var step; var angle = 45; var stepsize = 100; var time = 300; // Event handlers: document.getElementById("btn_forward").addEventListener('click', function(evt) { if (is_recording) { program.push('turtle.forward(stepsize);'); if (document.getElementById("show_record").checked) { turtle.forward(stepsize); } } else { turtle.forward(stepsize); } }); document.getElementById('btn_back').addEventListener('click', function(evt) { if (is_recording) { program.push('turtle.back(stepsize);'); if (document.getElementById('show_record').checked) { turtle.back(stepsize); } } else { turtle.back(stepsize); } }); document.getElementById('btn_left').addEventListener('click', function(evt) { if (is_recording) { program.push('turtle.left(angle);'); if (document.getElementById('show_record').checked) { turtle.left(angle); } } else { turtle.left(angle); } }); document.getElementById('btn_right').addEventListener('click', function(evt) { if (is_recording) { program.push('turtle.right(angle);'); if (document.getElementById('show_record').checked) { turtle.right(angle); } } else { turtle.right(angle); } }); document.getElementById('btn_clear').addEventListener('click', function(evt) { turtle.clearScreen(); }); document.getElementById('btn_record').addEventListener('click', function(evt) { if (!is_recording) { is_recording = true; document.getElementById('btn_record').innerHTML = 'stop'; document.getElementById('btn_record').classList.add('record'); program = []; board.defaultAxes.x.setAttribute({ visible: true }); board.defaultAxes.y.setAttribute({ visible: true }); turtle.clearScreen(); } else { is_recording = false; document.getElementById('btn_record').innerHTML = 'record'; document.getElementById('btn_record').classList.remove('record'); if (!document.getElementById('show_grid').checked) { board.defaultAxes.x.setAttribute({ visible: false }); board.defaultAxes.y.setAttribute({ visible: false }); } turtle.clearScreen(); } }); // Animation var do_step = function() { if (step < program.length) { eval(program[step]); step++; setTimeout(do_step, time); } } document.getElementById('btn_play').addEventListener('click', function(evt) { step = 0; do_step(); }); document.getElementById('show_grid').addEventListener('change', function(evt) { if (document.getElementById('show_grid').checked) { board.defaultAxes.x.setAttribute({ visible: true }); board.defaultAxes.y.setAttribute({ visible: true }); } else { board.defaultAxes.x.setAttribute({ visible: false }); board.defaultAxes.y.setAttribute({ visible: false }); } }); document.getElementById('step_size').value = stepsize; document.getElementById('angle').value = angle; document.getElementById('time').value = time; document.getElementById('step_size').addEventListener('change', function(evt) { stepsize = 1 * (document.getElementById('step_size').value); }); document.getElementById('angle').addEventListener('change', function(evt) { angle = 1 * (document.getElementById('angle').value); }); document.getElementById('time').addEventListener('change', function(evt) { time = 1 * (document.getElementById('time').value); }); </script> <table> <tr> <td>Show recording: </td> <td><input type="checkbox" id="show_record"></td> </tr> <tr> <td>Show grid: </td> <td><input type="checkbox" id="show_grid"></td> </tr> <tr> <td>Step size: </td> <td><input type="number" id="step_size" min="0" max="500"></td> </tr> <tr> <td>Angle: </td> <td><input type="number" id="angle" min="0" max="359"></td> </tr> <tr> <td>Time : </td> <td><input type="number" id="time" min="0" max="2000"></td> </tr> </table> <p> <button id="btn_record">record</button> <button id="btn_play">play</button> <button id="btn_clear">clear screen</button> <table> <tr> <td></td> <td><button id="btn_forward">forward</button></td> <td></td> </tr> <tr> <td><button id="btn_left">left</button></td> <td></td> <td><button id="btn_right">right</button></td> </tr> <tr> <td></td> <td><button id="btn_back">back</button></td> <td></td> </tr> </table> <div id="board-0-wrapper" class="jxgbox-wrapper " style="width: 100%; "> <div id="board-0" class="jxgbox" style="aspect-ratio: 1 / 1; width: 100%;" data-ar="1 / 1"></div> </div> <script type = "text/javascript"> /* This example is licensed under a Creative Commons Attribution ShareAlike 4.0 International License. https://creativecommons.org/licenses/by-sa/4.0/ Please note you have to mention The Center of Mobile Learning with Digital Technology in the credits. */ const BOARDID = 'board-0'; const board = JXG.JSXGraph.initBoard(BOARDID, { boundingbox: [-500, 500, 500, -500], axis: true, defaultAxes: { x: { visible: false, ticks: { label: { visible: false } } }, y: { visible: false, ticks: { label: { visible: false } } } } }); // Global variables: var turtle = board.create('turtle', [0, 0], { strokeWidth: 2, strokeColor: 'blue', arrow: { strokeWidth: 2, strokeColor: 'red' } }); var is_recording = false; var program = []; var step; var angle = 45; var stepsize = 100; var time = 300; // Event handlers: document.getElementById("btn_forward").addEventListener('click', function(evt) { if (is_recording) { program.push('turtle.forward(stepsize);'); if (document.getElementById("show_record").checked) { turtle.forward(stepsize); } } else { turtle.forward(stepsize); } }); document.getElementById('btn_back').addEventListener('click', function(evt) { if (is_recording) { program.push('turtle.back(stepsize);'); if (document.getElementById('show_record').checked) { turtle.back(stepsize); } } else { turtle.back(stepsize); } }); document.getElementById('btn_left').addEventListener('click', function(evt) { if (is_recording) { program.push('turtle.left(angle);'); if (document.getElementById('show_record').checked) { turtle.left(angle); } } else { turtle.left(angle); } }); document.getElementById('btn_right').addEventListener('click', function(evt) { if (is_recording) { program.push('turtle.right(angle);'); if (document.getElementById('show_record').checked) { turtle.right(angle); } } else { turtle.right(angle); } }); document.getElementById('btn_clear').addEventListener('click', function(evt) { turtle.clearScreen(); }); document.getElementById('btn_record').addEventListener('click', function(evt) { if (!is_recording) { is_recording = true; document.getElementById('btn_record').innerHTML = 'stop'; document.getElementById('btn_record').classList.add('record'); program = []; board.defaultAxes.x.setAttribute({ visible: true }); board.defaultAxes.y.setAttribute({ visible: true }); turtle.clearScreen(); } else { is_recording = false; document.getElementById('btn_record').innerHTML = 'record'; document.getElementById('btn_record').classList.remove('record'); if (!document.getElementById('show_grid').checked) { board.defaultAxes.x.setAttribute({ visible: false }); board.defaultAxes.y.setAttribute({ visible: false }); } turtle.clearScreen(); } }); // Animation var do_step = function() { if (step < program.length) { eval(program[step]); step++; setTimeout(do_step, time); } } document.getElementById('btn_play').addEventListener('click', function(evt) { step = 0; do_step(); }); document.getElementById('show_grid').addEventListener('change', function(evt) { if (document.getElementById('show_grid').checked) { board.defaultAxes.x.setAttribute({ visible: true }); board.defaultAxes.y.setAttribute({ visible: true }); } else { board.defaultAxes.x.setAttribute({ visible: false }); board.defaultAxes.y.setAttribute({ visible: false }); } }); document.getElementById('step_size').value = stepsize; document.getElementById('angle').value = angle; document.getElementById('time').value = time; document.getElementById('step_size').addEventListener('change', function(evt) { stepsize = 1 * (document.getElementById('step_size').value); }); document.getElementById('angle').addEventListener('change', function(evt) { angle = 1 * (document.getElementById('angle').value); }); document.getElementById('time').addEventListener('change', function(evt) { time = 1 * (document.getElementById('time').value); }); </script> JavaScript /* This example is licensed under a Creative Commons Attribution ShareAlike 4.0 International License. https://creativecommons.org/licenses/by-sa/4.0/ Please note you have to mention The Center of Mobile Learning with Digital Technology in the credits. */ const BOARDID = 'your_div_id'; // Insert your id here! const board = JXG.JSXGraph.initBoard(BOARDID, { boundingbox: [-500, 500, 500, -500], axis: true, defaultAxes: { x: { visible: false, ticks: { label: { visible: false } } }, y: { visible: false, ticks: { label: { visible: false } } } } }); // Global variables: var turtle = board.create('turtle', [0, 0], { strokeWidth: 2, strokeColor: 'blue', arrow: { strokeWidth: 2, strokeColor: 'red' } }); var is_recording = false; var program = []; var step; var angle = 45; var stepsize = 100; var time = 300; // Event handlers: document.getElementById("btn_forward").addEventListener('click', function(evt) { if (is_recording) { program.push('turtle.forward(stepsize);'); if (document.getElementById("show_record").checked) { turtle.forward(stepsize); } } else { turtle.forward(stepsize); } }); document.getElementById('btn_back').addEventListener('click', function(evt) { if (is_recording) { program.push('turtle.back(stepsize);'); if (document.getElementById('show_record').checked) { turtle.back(stepsize); } } else { turtle.back(stepsize); } }); document.getElementById('btn_left').addEventListener('click', function(evt) { if (is_recording) { program.push('turtle.left(angle);'); if (document.getElementById('show_record').checked) { turtle.left(angle); } } else { turtle.left(angle); } }); document.getElementById('btn_right').addEventListener('click', function(evt) { if (is_recording) { program.push('turtle.right(angle);'); if (document.getElementById('show_record').checked) { turtle.right(angle); } } else { turtle.right(angle); } }); document.getElementById('btn_clear').addEventListener('click', function(evt) { turtle.clearScreen(); }); document.getElementById('btn_record').addEventListener('click', function(evt) { if (!is_recording) { is_recording = true; document.getElementById('btn_record').innerHTML = 'stop'; document.getElementById('btn_record').classList.add('record'); program = []; board.defaultAxes.x.setAttribute({ visible: true }); board.defaultAxes.y.setAttribute({ visible: true }); turtle.clearScreen(); } else { is_recording = false; document.getElementById('btn_record').innerHTML = 'record'; document.getElementById('btn_record').classList.remove('record'); if (!document.getElementById('show_grid').checked) { board.defaultAxes.x.setAttribute({ visible: false }); board.defaultAxes.y.setAttribute({ visible: false }); } turtle.clearScreen(); } }); // Animation var do_step = function() { if (step < program.length) { eval(program[step]); step++; setTimeout(do_step, time); } } document.getElementById('btn_play').addEventListener('click', function(evt) { step = 0; do_step(); }); document.getElementById('show_grid').addEventListener('change', function(evt) { if (document.getElementById('show_grid').checked) { board.defaultAxes.x.setAttribute({ visible: true }); board.defaultAxes.y.setAttribute({ visible: true }); } else { board.defaultAxes.x.setAttribute({ visible: false }); board.defaultAxes.y.setAttribute({ visible: false }); } }); document.getElementById('step_size').value = stepsize; document.getElementById('angle').value = angle; document.getElementById('time').value = time; document.getElementById('step_size').addEventListener('change', function(evt) { stepsize = 1 * (document.getElementById('step_size').value); }); document.getElementById('angle').addEventListener('change', function(evt) { angle = 1 * (document.getElementById('angle').value); }); document.getElementById('time').addEventListener('change', function(evt) { time = 1 * (document.getElementById('time').value); }); /* This example is licensed under a Creative Commons Attribution ShareAlike 4.0 International License. https://creativecommons.org/licenses/by-sa/4.0/ Please note you have to mention The Center of Mobile Learning with Digital Technology in the credits. */ const BOARDID = 'your_div_id'; // Insert your id here! const board = JXG.JSXGraph.initBoard(BOARDID, { boundingbox: [-500, 500, 500, -500], axis: true, defaultAxes: { x: { visible: false, ticks: { label: { visible: false } } }, y: { visible: false, ticks: { label: { visible: false } } } } }); // Global variables: var turtle = board.create('turtle', [0, 0], { strokeWidth: 2, strokeColor: 'blue', arrow: { strokeWidth: 2, strokeColor: 'red' } }); var is_recording = false; var program = []; var step; var angle = 45; var stepsize = 100; var time = 300; // Event handlers: document.getElementById("btn_forward").addEventListener('click', function(evt) { if (is_recording) { program.push('turtle.forward(stepsize);'); if (document.getElementById("show_record").checked) { turtle.forward(stepsize); } } else { turtle.forward(stepsize); } }); document.getElementById('btn_back').addEventListener('click', function(evt) { if (is_recording) { program.push('turtle.back(stepsize);'); if (document.getElementById('show_record').checked) { turtle.back(stepsize); } } else { turtle.back(stepsize); } }); document.getElementById('btn_left').addEventListener('click', function(evt) { if (is_recording) { program.push('turtle.left(angle);'); if (document.getElementById('show_record').checked) { turtle.left(angle); } } else { turtle.left(angle); } }); document.getElementById('btn_right').addEventListener('click', function(evt) { if (is_recording) { program.push('turtle.right(angle);'); if (document.getElementById('show_record').checked) { turtle.right(angle); } } else { turtle.right(angle); } }); document.getElementById('btn_clear').addEventListener('click', function(evt) { turtle.clearScreen(); }); document.getElementById('btn_record').addEventListener('click', function(evt) { if (!is_recording) { is_recording = true; document.getElementById('btn_record').innerHTML = 'stop'; document.getElementById('btn_record').classList.add('record'); program = []; board.defaultAxes.x.setAttribute({ visible: true }); board.defaultAxes.y.setAttribute({ visible: true }); turtle.clearScreen(); } else { is_recording = false; document.getElementById('btn_record').innerHTML = 'record'; document.getElementById('btn_record').classList.remove('record'); if (!document.getElementById('show_grid').checked) { board.defaultAxes.x.setAttribute({ visible: false }); board.defaultAxes.y.setAttribute({ visible: false }); } turtle.clearScreen(); } }); // Animation var do_step = function() { if (step < program.length) { eval(program[step]); step++; setTimeout(do_step, time); } } document.getElementById('btn_play').addEventListener('click', function(evt) { step = 0; do_step(); }); document.getElementById('show_grid').addEventListener('change', function(evt) { if (document.getElementById('show_grid').checked) { board.defaultAxes.x.setAttribute({ visible: true }); board.defaultAxes.y.setAttribute({ visible: true }); } else { board.defaultAxes.x.setAttribute({ visible: false }); board.defaultAxes.y.setAttribute({ visible: false }); } }); document.getElementById('step_size').value = stepsize; document.getElementById('angle').value = angle; document.getElementById('time').value = time; document.getElementById('step_size').addEventListener('change', function(evt) { stepsize = 1 * (document.getElementById('step_size').value); }); document.getElementById('angle').addEventListener('change', function(evt) { angle = 1 * (document.getElementById('angle').value); }); document.getElementById('time').addEventListener('change', function(evt) { time = 1 * (document.getElementById('time').value); }); Download Print Turtle bot Turtle This code creates an interactive turtle graphics board with controls for moving forward, backward, turning, and clearing the canvas. You can record sequences of commands, play them back with animation, and toggle a grid display. Parameters like step size, angle, and speed are adjustable. **AI generated desctiption** Show recording: Show grid: Step size: Angle: Time : record play clear screen forward left right back <table> <tr> <td>Show recording: </td> <td><input type="checkbox" id="show_record"></td> </tr> <tr> <td>Show grid: </td> <td><input type="checkbox" id="show_grid"></td> </tr> <tr> <td>Step size: </td> <td><input type="number" id="step_size" min="0" max="500"></td> </tr> <tr> <td>Angle: </td> <td><input type="number" id="angle" min="0" max="359"></td> </tr> <tr> <td>Time : </td> <td><input type="number" id="time" min="0" max="2000"></td> </tr> </table> <p> <button id="btn_record">record</button> <button id="btn_play">play</button> <button id="btn_clear">clear screen</button> <table> <tr> <td></td> <td><button id="btn_forward">forward</button></td> <td></td> </tr> <tr> <td><button id="btn_left">left</button></td> <td></td> <td><button id="btn_right">right</button></td> </tr> <tr> <td></td> <td><button id="btn_back">back</button></td> <td></td> </tr> </table> <table> <tr> <td>Show recording: </td> <td><input type="checkbox" id="show_record"></td> </tr> <tr> <td>Show grid: </td> <td><input type="checkbox" id="show_grid"></td> </tr> <tr> <td>Step size: </td> <td><input type="number" id="step_size" min="0" max="500"></td> </tr> <tr> <td>Angle: </td> <td><input type="number" id="angle" min="0" max="359"></td> </tr> <tr> <td>Time : </td> <td><input type="number" id="time" min="0" max="2000"></td> </tr> </table> <p> <button id="btn_record">record</button> <button id="btn_play">play</button> <button id="btn_clear">clear screen</button> <table> <tr> <td></td> <td><button id="btn_forward">forward</button></td> <td></td> </tr> <tr> <td><button id="btn_left">left</button></td> <td></td> <td><button id="btn_right">right</button></td> </tr> <tr> <td></td> <td><button id="btn_back">back</button></td> <td></td> </tr> </table> // Define the id of your board in BOARDID const board = JXG.JSXGraph.initBoard(BOARDID, { boundingbox: [-500, 500, 500, -500], axis: true, defaultAxes: { x: { visible: false, ticks: { label: { visible: false } } }, y: { visible: false, ticks: { label: { visible: false } } } } }); // Global variables: var turtle = board.create('turtle', [0, 0], { strokeWidth: 2, strokeColor: 'blue', arrow: { strokeWidth: 2, strokeColor: 'red' } }); var is_recording = false; var program = []; var step; var angle = 45; var stepsize = 100; var time = 300; // Event handlers: document.getElementById("btn_forward").addEventListener('click', function(evt) { if (is_recording) { program.push('turtle.forward(stepsize);'); if (document.getElementById("show_record").checked) { turtle.forward(stepsize); } } else { turtle.forward(stepsize); } }); document.getElementById('btn_back').addEventListener('click', function(evt) { if (is_recording) { program.push('turtle.back(stepsize);'); if (document.getElementById('show_record').checked) { turtle.back(stepsize); } } else { turtle.back(stepsize); } }); document.getElementById('btn_left').addEventListener('click', function(evt) { if (is_recording) { program.push('turtle.left(angle);'); if (document.getElementById('show_record').checked) { turtle.left(angle); } } else { turtle.left(angle); } }); document.getElementById('btn_right').addEventListener('click', function(evt) { if (is_recording) { program.push('turtle.right(angle);'); if (document.getElementById('show_record').checked) { turtle.right(angle); } } else { turtle.right(angle); } }); document.getElementById('btn_clear').addEventListener('click', function(evt) { turtle.clearScreen(); }); document.getElementById('btn_record').addEventListener('click', function(evt) { if (!is_recording) { is_recording = true; document.getElementById('btn_record').innerHTML = 'stop'; document.getElementById('btn_record').classList.add('record'); program = []; board.defaultAxes.x.setAttribute({ visible: true }); board.defaultAxes.y.setAttribute({ visible: true }); turtle.clearScreen(); } else { is_recording = false; document.getElementById('btn_record').innerHTML = 'record'; document.getElementById('btn_record').classList.remove('record'); if (!document.getElementById('show_grid').checked) { board.defaultAxes.x.setAttribute({ visible: false }); board.defaultAxes.y.setAttribute({ visible: false }); } turtle.clearScreen(); } }); // Animation var do_step = function() { if (step < program.length) { eval(program[step]); step++; setTimeout(do_step, time); } } document.getElementById('btn_play').addEventListener('click', function(evt) { step = 0; do_step(); }); document.getElementById('show_grid').addEventListener('change', function(evt) { if (document.getElementById('show_grid').checked) { board.defaultAxes.x.setAttribute({ visible: true }); board.defaultAxes.y.setAttribute({ visible: true }); } else { board.defaultAxes.x.setAttribute({ visible: false }); board.defaultAxes.y.setAttribute({ visible: false }); } }); document.getElementById('step_size').value = stepsize; document.getElementById('angle').value = angle; document.getElementById('time').value = time; document.getElementById('step_size').addEventListener('change', function(evt) { stepsize = 1 * (document.getElementById('step_size').value); }); document.getElementById('angle').addEventListener('change', function(evt) { angle = 1 * (document.getElementById('angle').value); }); document.getElementById('time').addEventListener('change', function(evt) { time = 1 * (document.getElementById('time').value); }); // Define the id of your board in BOARDID const board = JXG.JSXGraph.initBoard(BOARDID, { boundingbox: [-500, 500, 500, -500], axis: true, defaultAxes: { x: { visible: false, ticks: { label: { visible: false } } }, y: { visible: false, ticks: { label: { visible: false } } } } }); // Global variables: var turtle = board.create('turtle', [0, 0], { strokeWidth: 2, strokeColor: 'blue', arrow: { strokeWidth: 2, strokeColor: 'red' } }); var is_recording = false; var program = []; var step; var angle = 45; var stepsize = 100; var time = 300; // Event handlers: document.getElementById("btn_forward").addEventListener('click', function(evt) { if (is_recording) { program.push('turtle.forward(stepsize);'); if (document.getElementById("show_record").checked) { turtle.forward(stepsize); } } else { turtle.forward(stepsize); } }); document.getElementById('btn_back').addEventListener('click', function(evt) { if (is_recording) { program.push('turtle.back(stepsize);'); if (document.getElementById('show_record').checked) { turtle.back(stepsize); } } else { turtle.back(stepsize); } }); document.getElementById('btn_left').addEventListener('click', function(evt) { if (is_recording) { program.push('turtle.left(angle);'); if (document.getElementById('show_record').checked) { turtle.left(angle); } } else { turtle.left(angle); } }); document.getElementById('btn_right').addEventListener('click', function(evt) { if (is_recording) { program.push('turtle.right(angle);'); if (document.getElementById('show_record').checked) { turtle.right(angle); } } else { turtle.right(angle); } }); document.getElementById('btn_clear').addEventListener('click', function(evt) { turtle.clearScreen(); }); document.getElementById('btn_record').addEventListener('click', function(evt) { if (!is_recording) { is_recording = true; document.getElementById('btn_record').innerHTML = 'stop'; document.getElementById('btn_record').classList.add('record'); program = []; board.defaultAxes.x.setAttribute({ visible: true }); board.defaultAxes.y.setAttribute({ visible: true }); turtle.clearScreen(); } else { is_recording = false; document.getElementById('btn_record').innerHTML = 'record'; document.getElementById('btn_record').classList.remove('record'); if (!document.getElementById('show_grid').checked) { board.defaultAxes.x.setAttribute({ visible: false }); board.defaultAxes.y.setAttribute({ visible: false }); } turtle.clearScreen(); } }); // Animation var do_step = function() { if (step < program.length) { eval(program[step]); step++; setTimeout(do_step, time); } } document.getElementById('btn_play').addEventListener('click', function(evt) { step = 0; do_step(); }); document.getElementById('show_grid').addEventListener('change', function(evt) { if (document.getElementById('show_grid').checked) { board.defaultAxes.x.setAttribute({ visible: true }); board.defaultAxes.y.setAttribute({ visible: true }); } else { board.defaultAxes.x.setAttribute({ visible: false }); board.defaultAxes.y.setAttribute({ visible: false }); } }); document.getElementById('step_size').value = stepsize; document.getElementById('angle').value = angle; document.getElementById('time').value = time; document.getElementById('step_size').addEventListener('change', function(evt) { stepsize = 1 * (document.getElementById('step_size').value); }); document.getElementById('angle').addEventListener('change', function(evt) { angle = 1 * (document.getElementById('angle').value); }); document.getElementById('time').addEventListener('change', function(evt) { time = 1 * (document.getElementById('time').value); }); This example is licensed under a Creative Commons Attribution ShareAlike 4.0 International License. Please note you have to mention The Center of Mobile Learning with Digital Technology in the credits.
<iframe src="http://jsxgraph.uni-bayreuth.de/share/iframe/turtle-bot" style="border: 1px solid black; overflow: hidden; width: 550px; aspect-ratio: 55 / 65;" name="JSXGraph example: Turtle bot" allowfullscreen ></iframe>
<table> <tr> <td>Show recording: </td> <td><input type="checkbox" id="show_record"></td> </tr> <tr> <td>Show grid: </td> <td><input type="checkbox" id="show_grid"></td> </tr> <tr> <td>Step size: </td> <td><input type="number" id="step_size" min="0" max="500"></td> </tr> <tr> <td>Angle: </td> <td><input type="number" id="angle" min="0" max="359"></td> </tr> <tr> <td>Time : </td> <td><input type="number" id="time" min="0" max="2000"></td> </tr> </table> <p> <button id="btn_record">record</button> <button id="btn_play">play</button> <button id="btn_clear">clear screen</button> <table> <tr> <td></td> <td><button id="btn_forward">forward</button></td> <td></td> </tr> <tr> <td><button id="btn_left">left</button></td> <td></td> <td><button id="btn_right">right</button></td> </tr> <tr> <td></td> <td><button id="btn_back">back</button></td> <td></td> </tr> </table> <div id="board-0-wrapper" class="jxgbox-wrapper " style="width: 100%; "> <div id="board-0" class="jxgbox" style="aspect-ratio: 1 / 1; width: 100%;" data-ar="1 / 1"></div> </div> <script type = "text/javascript"> /* This example is licensed under a Creative Commons Attribution ShareAlike 4.0 International License. https://creativecommons.org/licenses/by-sa/4.0/ Please note you have to mention The Center of Mobile Learning with Digital Technology in the credits. */ const BOARDID = 'board-0'; const board = JXG.JSXGraph.initBoard(BOARDID, { boundingbox: [-500, 500, 500, -500], axis: true, defaultAxes: { x: { visible: false, ticks: { label: { visible: false } } }, y: { visible: false, ticks: { label: { visible: false } } } } }); // Global variables: var turtle = board.create('turtle', [0, 0], { strokeWidth: 2, strokeColor: 'blue', arrow: { strokeWidth: 2, strokeColor: 'red' } }); var is_recording = false; var program = []; var step; var angle = 45; var stepsize = 100; var time = 300; // Event handlers: document.getElementById("btn_forward").addEventListener('click', function(evt) { if (is_recording) { program.push('turtle.forward(stepsize);'); if (document.getElementById("show_record").checked) { turtle.forward(stepsize); } } else { turtle.forward(stepsize); } }); document.getElementById('btn_back').addEventListener('click', function(evt) { if (is_recording) { program.push('turtle.back(stepsize);'); if (document.getElementById('show_record').checked) { turtle.back(stepsize); } } else { turtle.back(stepsize); } }); document.getElementById('btn_left').addEventListener('click', function(evt) { if (is_recording) { program.push('turtle.left(angle);'); if (document.getElementById('show_record').checked) { turtle.left(angle); } } else { turtle.left(angle); } }); document.getElementById('btn_right').addEventListener('click', function(evt) { if (is_recording) { program.push('turtle.right(angle);'); if (document.getElementById('show_record').checked) { turtle.right(angle); } } else { turtle.right(angle); } }); document.getElementById('btn_clear').addEventListener('click', function(evt) { turtle.clearScreen(); }); document.getElementById('btn_record').addEventListener('click', function(evt) { if (!is_recording) { is_recording = true; document.getElementById('btn_record').innerHTML = 'stop'; document.getElementById('btn_record').classList.add('record'); program = []; board.defaultAxes.x.setAttribute({ visible: true }); board.defaultAxes.y.setAttribute({ visible: true }); turtle.clearScreen(); } else { is_recording = false; document.getElementById('btn_record').innerHTML = 'record'; document.getElementById('btn_record').classList.remove('record'); if (!document.getElementById('show_grid').checked) { board.defaultAxes.x.setAttribute({ visible: false }); board.defaultAxes.y.setAttribute({ visible: false }); } turtle.clearScreen(); } }); // Animation var do_step = function() { if (step < program.length) { eval(program[step]); step++; setTimeout(do_step, time); } } document.getElementById('btn_play').addEventListener('click', function(evt) { step = 0; do_step(); }); document.getElementById('show_grid').addEventListener('change', function(evt) { if (document.getElementById('show_grid').checked) { board.defaultAxes.x.setAttribute({ visible: true }); board.defaultAxes.y.setAttribute({ visible: true }); } else { board.defaultAxes.x.setAttribute({ visible: false }); board.defaultAxes.y.setAttribute({ visible: false }); } }); document.getElementById('step_size').value = stepsize; document.getElementById('angle').value = angle; document.getElementById('time').value = time; document.getElementById('step_size').addEventListener('change', function(evt) { stepsize = 1 * (document.getElementById('step_size').value); }); document.getElementById('angle').addEventListener('change', function(evt) { angle = 1 * (document.getElementById('angle').value); }); document.getElementById('time').addEventListener('change', function(evt) { time = 1 * (document.getElementById('time').value); }); </script>
/* This example is licensed under a Creative Commons Attribution ShareAlike 4.0 International License. https://creativecommons.org/licenses/by-sa/4.0/ Please note you have to mention The Center of Mobile Learning with Digital Technology in the credits. */ const BOARDID = 'your_div_id'; // Insert your id here! const board = JXG.JSXGraph.initBoard(BOARDID, { boundingbox: [-500, 500, 500, -500], axis: true, defaultAxes: { x: { visible: false, ticks: { label: { visible: false } } }, y: { visible: false, ticks: { label: { visible: false } } } } }); // Global variables: var turtle = board.create('turtle', [0, 0], { strokeWidth: 2, strokeColor: 'blue', arrow: { strokeWidth: 2, strokeColor: 'red' } }); var is_recording = false; var program = []; var step; var angle = 45; var stepsize = 100; var time = 300; // Event handlers: document.getElementById("btn_forward").addEventListener('click', function(evt) { if (is_recording) { program.push('turtle.forward(stepsize);'); if (document.getElementById("show_record").checked) { turtle.forward(stepsize); } } else { turtle.forward(stepsize); } }); document.getElementById('btn_back').addEventListener('click', function(evt) { if (is_recording) { program.push('turtle.back(stepsize);'); if (document.getElementById('show_record').checked) { turtle.back(stepsize); } } else { turtle.back(stepsize); } }); document.getElementById('btn_left').addEventListener('click', function(evt) { if (is_recording) { program.push('turtle.left(angle);'); if (document.getElementById('show_record').checked) { turtle.left(angle); } } else { turtle.left(angle); } }); document.getElementById('btn_right').addEventListener('click', function(evt) { if (is_recording) { program.push('turtle.right(angle);'); if (document.getElementById('show_record').checked) { turtle.right(angle); } } else { turtle.right(angle); } }); document.getElementById('btn_clear').addEventListener('click', function(evt) { turtle.clearScreen(); }); document.getElementById('btn_record').addEventListener('click', function(evt) { if (!is_recording) { is_recording = true; document.getElementById('btn_record').innerHTML = 'stop'; document.getElementById('btn_record').classList.add('record'); program = []; board.defaultAxes.x.setAttribute({ visible: true }); board.defaultAxes.y.setAttribute({ visible: true }); turtle.clearScreen(); } else { is_recording = false; document.getElementById('btn_record').innerHTML = 'record'; document.getElementById('btn_record').classList.remove('record'); if (!document.getElementById('show_grid').checked) { board.defaultAxes.x.setAttribute({ visible: false }); board.defaultAxes.y.setAttribute({ visible: false }); } turtle.clearScreen(); } }); // Animation var do_step = function() { if (step < program.length) { eval(program[step]); step++; setTimeout(do_step, time); } } document.getElementById('btn_play').addEventListener('click', function(evt) { step = 0; do_step(); }); document.getElementById('show_grid').addEventListener('change', function(evt) { if (document.getElementById('show_grid').checked) { board.defaultAxes.x.setAttribute({ visible: true }); board.defaultAxes.y.setAttribute({ visible: true }); } else { board.defaultAxes.x.setAttribute({ visible: false }); board.defaultAxes.y.setAttribute({ visible: false }); } }); document.getElementById('step_size').value = stepsize; document.getElementById('angle').value = angle; document.getElementById('time').value = time; document.getElementById('step_size').addEventListener('change', function(evt) { stepsize = 1 * (document.getElementById('step_size').value); }); document.getElementById('angle').addEventListener('change', function(evt) { angle = 1 * (document.getElementById('angle').value); }); document.getElementById('time').addEventListener('change', function(evt) { time = 1 * (document.getElementById('time').value); });
record play clear screen
<table> <tr> <td>Show recording: </td> <td><input type="checkbox" id="show_record"></td> </tr> <tr> <td>Show grid: </td> <td><input type="checkbox" id="show_grid"></td> </tr> <tr> <td>Step size: </td> <td><input type="number" id="step_size" min="0" max="500"></td> </tr> <tr> <td>Angle: </td> <td><input type="number" id="angle" min="0" max="359"></td> </tr> <tr> <td>Time : </td> <td><input type="number" id="time" min="0" max="2000"></td> </tr> </table> <p> <button id="btn_record">record</button> <button id="btn_play">play</button> <button id="btn_clear">clear screen</button> <table> <tr> <td></td> <td><button id="btn_forward">forward</button></td> <td></td> </tr> <tr> <td><button id="btn_left">left</button></td> <td></td> <td><button id="btn_right">right</button></td> </tr> <tr> <td></td> <td><button id="btn_back">back</button></td> <td></td> </tr> </table>
// Define the id of your board in BOARDID const board = JXG.JSXGraph.initBoard(BOARDID, { boundingbox: [-500, 500, 500, -500], axis: true, defaultAxes: { x: { visible: false, ticks: { label: { visible: false } } }, y: { visible: false, ticks: { label: { visible: false } } } } }); // Global variables: var turtle = board.create('turtle', [0, 0], { strokeWidth: 2, strokeColor: 'blue', arrow: { strokeWidth: 2, strokeColor: 'red' } }); var is_recording = false; var program = []; var step; var angle = 45; var stepsize = 100; var time = 300; // Event handlers: document.getElementById("btn_forward").addEventListener('click', function(evt) { if (is_recording) { program.push('turtle.forward(stepsize);'); if (document.getElementById("show_record").checked) { turtle.forward(stepsize); } } else { turtle.forward(stepsize); } }); document.getElementById('btn_back').addEventListener('click', function(evt) { if (is_recording) { program.push('turtle.back(stepsize);'); if (document.getElementById('show_record').checked) { turtle.back(stepsize); } } else { turtle.back(stepsize); } }); document.getElementById('btn_left').addEventListener('click', function(evt) { if (is_recording) { program.push('turtle.left(angle);'); if (document.getElementById('show_record').checked) { turtle.left(angle); } } else { turtle.left(angle); } }); document.getElementById('btn_right').addEventListener('click', function(evt) { if (is_recording) { program.push('turtle.right(angle);'); if (document.getElementById('show_record').checked) { turtle.right(angle); } } else { turtle.right(angle); } }); document.getElementById('btn_clear').addEventListener('click', function(evt) { turtle.clearScreen(); }); document.getElementById('btn_record').addEventListener('click', function(evt) { if (!is_recording) { is_recording = true; document.getElementById('btn_record').innerHTML = 'stop'; document.getElementById('btn_record').classList.add('record'); program = []; board.defaultAxes.x.setAttribute({ visible: true }); board.defaultAxes.y.setAttribute({ visible: true }); turtle.clearScreen(); } else { is_recording = false; document.getElementById('btn_record').innerHTML = 'record'; document.getElementById('btn_record').classList.remove('record'); if (!document.getElementById('show_grid').checked) { board.defaultAxes.x.setAttribute({ visible: false }); board.defaultAxes.y.setAttribute({ visible: false }); } turtle.clearScreen(); } }); // Animation var do_step = function() { if (step < program.length) { eval(program[step]); step++; setTimeout(do_step, time); } } document.getElementById('btn_play').addEventListener('click', function(evt) { step = 0; do_step(); }); document.getElementById('show_grid').addEventListener('change', function(evt) { if (document.getElementById('show_grid').checked) { board.defaultAxes.x.setAttribute({ visible: true }); board.defaultAxes.y.setAttribute({ visible: true }); } else { board.defaultAxes.x.setAttribute({ visible: false }); board.defaultAxes.y.setAttribute({ visible: false }); } }); document.getElementById('step_size').value = stepsize; document.getElementById('angle').value = angle; document.getElementById('time').value = time; document.getElementById('step_size').addEventListener('change', function(evt) { stepsize = 1 * (document.getElementById('step_size').value); }); document.getElementById('angle').addEventListener('change', function(evt) { angle = 1 * (document.getElementById('angle').value); }); document.getElementById('time').addEventListener('change', function(evt) { time = 1 * (document.getElementById('time').value); });
This example is licensed under a Creative Commons Attribution ShareAlike 4.0 International License. Please note you have to mention The Center of Mobile Learning with Digital Technology in the credits.