http://reeborg.ca/world.html?proglang=python-en&world=%7B%0A%20%20%22robots%22%3A%20%5B%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%22x%22%3A%201%2C%0A%20%20%20%20%20%20%22y%22%3A%201%2C%0A%20%20%20%20%20%20%22_prev_x%22%3A%201%2C%0A%20%20%20%20%20%20%22_prev_y%22%3A%201%2C%0A%20%20%20%20%20%20%22_prev_orientation%22%3A%200%2C%0A%20%20%20%20%20%20%22start_positions%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%201%2C%0A%20%20%20%20%20%20%20%20%20%201%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%22objects%22%3A%20%7B%7D%2C%0A%20%20%20%20%20%20%22_orientation%22%3A%200%0A%20%20%20%20%7D%0A%20%20%5D%2C%0A%20%20%22walls%22%3A%20%7B%0A%20%20%20%20%2211%2C1%22%3A%20%5B%0A%20%20%20%20%20%20%22east%22%0A%20%20%20%20%5D%2C%0A%20%20%20%20%2211%2C9%22%3A%20%5B%0A%20%20%20%20%20%20%22north%22%2C%0A%20%20%20%20%20%20%22east%22%0A%20%20%20%20%5D%2C%0A%20%20%20%20%2210%2C9%22%3A%20%5B%0A%20%20%20%20%20%20%22north%22%0A%20%20%20%20%5D%2C%0A%20%20%20%20%229%2C9%22%3A%20%5B%0A%20%20%20%20%20%20%22north%22%0A%20%20%20%20%5D%2C%0A%20%20%20%20%228%2C9%22%3A%20%5B%0A%20%20%20%20%20%20%22north%22%0A%20%20%20%20%5D%2C%0A%20%20%20%20%227%2C9%22%3A%20%5B%0A%20%20%20%20%20%20%22north%22%0A%20%20%20%20%5D%2C%0A%20%20%20%20%226%2C9%22%3A%20%5B%0A%20%20%20%20%20%20%22north%22%0A%20%20%20%20%5D%2C%0A%20%20%20%20%225%2C9%22%3A%20%5B%0A%20%20%20%20%20%20%22north%22%0A%20%20%20%20%5D%2C%0A%20%20%20%20%224%2C9%22%3A%20%5B%0A%20%20%20%20%20%20%22north%22%0A%20%20%20%20%5D%2C%0A%20%20%20%20%223%2C9%22%3A%20%5B%0A%20%20%20%20%20%20%22north%22%0A%20%20%20%20%5D%2C%0A%20%20%20%20%222%2C9%22%3A%20%5B%0A%20%20%20%20%20%20%22north%22%0A%20%20%20%20%5D%2C%0A%20%20%20%20%221%2C9%22%3A%20%5B%0A%20%20%20%20%20%20%22north%22%0A%20%20%20%20%5D%2C%0A%20%20%20%20%2211%2C8%22%3A%20%5B%0A%20%20%20%20%20%20%22east%22%0A%20%20%20%20%5D%2C%0A%20%20%20%20%2211%2C7%22%3A%20%5B%0A%20%20%20%20%20%20%22east%22%0A%20%20%20%20%5D%2C%0A%20%20%20%20%2211%2C6%22%3A%20%5B%0A%20%20%20%20%20%20%22east%22%0A%20%20%20%20%5D%2C%0A%20%20%20%20%2211%2C5%22%3A%20%5B%0A%20%20%20%20%20%20%22east%22%0A%20%20%20%20%5D%2C%0A%20%20%20%20%2211%2C4%22%3A%20%5B%0A%20%20%20%20%20%20%22east%22%0A%20%20%20%20%5D%2C%0A%20%20%20%20%2211%2C3%22%3A%20%5B%0A%20%20%20%20%20%20%22east%22%0A%20%20%20%20%5D%2C%0A%20%20%20%20%2211%2C2%22%3A%20%5B%0A%20%20%20%20%20%20%22east%22%0A%20%20%20%20%5D%0A%20%20%7D%2C%0A%20%20%22goal%22%3A%20%7B%0A%20%20%20%20%22possible_positions%22%3A%20%5B%0A%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%206%2C%0A%20%20%20%20%20%20%20%206%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%5D%2C%0A%20%20%20%20%22position%22%3A%20%7B%0A%20%20%20%20%20%20%22x%22%3A%206%2C%0A%20%20%20%20%20%20%22y%22%3A%206%0A%20%20%20%20%7D%2C%0A%20%20%20%20%22objects%22%3A%20%7B%0A%20%20%20%20%20%20%226%2C5%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%22token%22%3A%201%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%20%20%22objects%22%3A%20%7B%0A%20%20%20%20%226%2C1%22%3A%20%7B%0A%20%20%20%20%20%20%22token%22%3A%201%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%20%20%22small_tiles%22%3A%20false%2C%0A%20%20%22rows%22%3A%2012%2C%0A%20%20%22cols%22%3A%2014%0A%7D&editor=%23%20jei%20ka%C5%BEkur%20stringate%2C%20vykdykite%20program%C4%85%20po%20%C5%BEingsn%C4%AF%20(%20%E2%96%BA%E2%96%8C)%0A%0A%22%22%22%20Komandos%3A%0Amove()%20%20%20%20%20%20%20%20-%20%20paeina%20langel%C4%AF%20%0Aturn_left()%20%20%20-%20pasisuka%20kair%C4%97n%20(de%C5%A1in%C4%97n%20nemoka)%0Atake()%20%20%20%20%20%20%20%20-%20paima%20objekt%C4%85%20i%C5%A1%20langelio%0Aput()%20%20%20%20%20%20%20%20%20-%20padeda%20objekt%C4%85%0A%22%22%22%0A%0A%23%20U%C5%BEduotis%3A%20%0A%23%20perne%C5%A1t%20%22kapeik%C4%85%22%20%C4%AF%20tu%C5%A1%C4%8Di%C4%85%20apskritim%C4%85%20%0A%23%20ir%20atsistoti%20%C4%AF%20fini%C5%A1o%20viet%C4%85%20(melsv%C4%85%20langel).%20%0A%0A%23%20pataisykite%2Fpabaikite%20program%C4%85%3A%0Amove()%0Aturn_left()%0Amove()&library=%23%20%27from%20my_lib%20import%20*%27%20in%20Python%20Code%20is%20required%20to%20use%0A%23%20the%20code%20in%20this%20library.%20%0A%0A
The above permalink appears to work ... but, due to a small addition to the old version of the site that handles these permalinks, the result is not quite what is desired: one must change "by hand" the programming mode (at the top) from Blockly to Editor.
The new permalinks will be much shorter and should be future proof; they can include, in any order:
- the programming mode/language
- the human language for the interface
- a URL pointing to a file containing the world definition
- an optional name to display in the world select menu instead of the URL.
The key here is the 3rd item. Instead of having to potentially deal with changing world format (to add new capabilities) AND permalinks to encode the new items, I only have to ensure that the world format remains backward compatible. Normal URL where a world can be found are usually quite short, and there is no need to worry about hitting some browser limit in terms of the number of characters.
For example, here is a URL that works on a temporary testing site, which loads a world definition I put on Pastebin (which anyone can do):
http://reeborg.ca/reeborg2.html?lang=en&mode=python&url=http://pastebin.com/raw/rGHudX7a&name=Desert
If you use Reeborg's World to teach and wish to be kept abreast of any major changes, please email me and I will add you to a mailing list that I just set up for this purpose.