nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 11:13



Reply to topic  [ 22 posts ]  Go to page Previous  1, 2
Rgrid - виртуальная машина роботов в браузере (JavaScript) 
Author Message
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
Shaos wrote:
Робот посложнее:
Code:
robot "Test2"
author "Shaos"
color AABBCC
main()
{
 i0 = 0;
 for(i1=0;i1<16;i1++){
 for(i2=0;i2<16;i2++){
   select i1 i2
   set i0
   i0=i0+1
 }}
}

Превратится уже вот в это:
Code:
{"robot":"Test2",
 "author":"Shaos",
 "varm":3,
 "vars":[],
 "negs":[],
 "regs":[],
 "color":"#AABBCC",
 "code":[32,1,0,0,0,0,0,32,1,1,0,0,0,0,64,12,245,14,255,245,1,0,243,245,16,0,147,244,66,1,14,255,
        0,127,0,32,1,2,0,0,0,0,64,12,245,14,255,245,2,0,243,245,16,0,147,244,66,1,14,255,0,109,0,105,
        1,1,0,1,2,0,106,1,0,0,0,0,0,64,12,245,0,0,245,0,0,243,245,1,0,160,244,64,12,245,2,0,
        245,2,0,243,245,1,0,160,244,67,0,42,0,64,12,245,1,0,245,1,0,243,245,1,0,160,244,67,0,14,0,0,
        255],
 "platform":1
}


P.P.S. Компилятор RW1C теперь сам указывает платформу. Если у робота нет оборудования, цвета и картинки, то это плтформа 2 (RW1P2). Если у робота нет оборудования, но есть цвет или картинка, то это платформа 1 (RW1P1). Если у робота есть оборудование, то это платформа 0 (RW1P0 или классическая игра "Robot Warfare 1").

Чото подумалось, что надо наверное нечто поплотнее нежели массив чисел генерить - например base64...

_________________
:dj: https://mastodon.social/@Shaos


04 Aug 2018 20:15
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
Shaos wrote:
Shaos wrote:
В данный момент пишу JS-транслятор RW0-байткода в JS - пока вроде всё получается так, как и предполагалось :dj:

P.S. Виртуальная машина Roberta для Webitable будет называться Weberta

Ввиду того, что я Roberta переименовал в Robby пришло время переделать и JS-интерпретатор - на днях я склеил вместе Webitable и Weberta и получил Rgrid.js :)

https://gitlab.com/nedopc/sdk/blob/master/rgrid/Rgrid.js

теперь надо Circuits.CC подправить, чтобы юзал одну новую либу вместо старых двух...

поправил - теперь у меня везде только Rgrid.js

_________________
:dj: https://mastodon.social/@Shaos


13 May 2019 20:21
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
Можно попробовать портировать Rgrid.js на PhoneGap / Cordova и делать приложения для телефонов (iPhone & Android) :mrgreen:

P.S. PhoneGap адобэ отключает 1 октября насовсем (я по нему курс прослушал 2 года назад когда заканчивал обучение в NYU) - после этого остаётся только голая опенсорцная Cordova, в которой наряду с Android и iOS появилась дополнительная платформа Electron, предназначенная для запуска JS-приложений на обычных компьютерах в виде окна (там внутри движок хрома) на Linux, Windows и MacOS: https://www.electronjs.org/docs/tutorial/application-distribution

_________________
:dj: https://mastodon.social/@Shaos


22 Aug 2020 23:14
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
Вот например минимальный "робот" для онлайна (всё это лежит в репе nedoPC SDK https://gitlab.com/nedopc/sdk/-/tree/master/rgrid):
Code:
// robbyc -r EXAMPLE.R
// echo var robot = >robot.js
// cat EXAMPLE.rjs >>robot.js

author "Shaos"
robot "Example"
main()
{
 while(1)
 {
   code = 0
   recv code
   if(N==0) continue
   if(N==#FFFF) // mouse click
   {
      select x y
      set #FF
   }
 }
}

Этот робот ловит мышиный клик на сетке клеток и ставит в эту клетку символ с кодом 0xFF - компилируется он вот в такой JSON:
Code:
var robot = {"robot":"Example",
 "author":"Shaos",
 "varm":1,
 "vars":[],
 "negs":[],
 "regs":[],
 "color":"#FFFFFF",
 "code":[64,7,245,14,255,245,1,0,244,66,1,14,255,0,91,0,32,1,0,0,0,0,0,98,1,0,0,64,12,245,14,255,
        245,3,255,243,245,0,0,144,244,66,1,14,255,0,52,0,67,0,0,0,64,12,245,14,255,245,3,255,243,245,255,255,
        144,244,66,1,14,255,0,87,0,105,1,0,255,1,1,255,106,0,255,0,0,0,0,67,0,0,0,0,255],
 "platform":2
}

и вот такой HTML этого робота подключает (ещё есть подкаталог giftiles с файлами картинками символов):
Code:
<HTML>
<HEAD><TITLE>Rgrid example</TITLE>
<META HTTP-EQUIV="Content-Language" content="en">
<META HTTP-EQUIV="Content-Type" content="text/html; charset=utf-8">
<SCRIPT type="text/javascript" src="Rgrid.js"></SCRIPT>
<SCRIPT type="text/javascript" src="robot.js"></SCRIPT>
</HEAD>
<BODY BGCOLOR=#000000 TEXT=#00AA00 LINK=#00AAAA>
<p id="here" align=center>Rgrid requires a modern web-browser to work properly...</p>
<font size=-4>
<p id="pow" align=center>Powered...</p>
</font>
</BODY>
<script type="text/javascript">

$R.prefix = "giftiles/";

$_("pow","Powered by " + $R.powered());

function action(x,y) {
 $R.event(0,-1,1,x,y);
}

if($R.grid('here',80,50,action)>0) {
 $R.add(robot);
 $R.start();
}

</script>
</HTML>

Создаётся сетка клеток 80x50, которая выглядит вот так (несколько клеток уже покликано мышою):

Attachment:
Screenshot from 2023-04-13 22-11-31.png
Screenshot from 2023-04-13 22-11-31.png [ 23.26 KiB | Viewed 3093 times ]

Уже сейчас можно добавлять больше одного робота на сетку (и теоретически больше одной сетки на страницу) и такие роботы могут общаться друг с другом и внешним миром, а вот чего в данный момент не сделано, так это сохранение состояния системы с возможностью передачи его на другой узел сети для продолжения работы...

_________________
:dj: https://mastodon.social/@Shaos


13 Apr 2023 22:21
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
После экспериментов с HTML контролами внёс некоторые изменения в Rgrid.js:

https://gitlab.com/nedopc/sdk/-/tree/master/rgrid

Code:
v0.7 (2023-04-17)

 - Added ability to send string as an argument of event
 - Fixed RECVP implementation

v0.6 (2023-04-16)

 - Fixed SEND implementation (previosly it gave JS syntax error)
 - RECV after SENDP returns 1st word of data, not size (and we ignore the rest of the packet)

v0.5 (2023-04-15)

 - Fixed implementation of COMMAND

Также добавил линк на репу и историю изменений в первое сообщение топика...

P.S. При подготовке v0.7 нашёл косяк в препроцессоре компилятора Robby - CONTINUE внутри FOR не меняет счётчик :oops:

_________________
:dj: https://mastodon.social/@Shaos


16 Apr 2023 02:20
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
Shaos wrote:
Уже сейчас можно добавлять больше одного робота на сетку (и теоретически больше одной сетки на страницу) и такие роботы могут общаться друг с другом и внешним миром..
Как оказалось в Rgrid пока нельзя добавлять больше одного робота на сетку :oops:
Надо разбираться что там косячит, а так можно на этом threaded engine для примера насадить ещё и другие виртуальные машины - например 8080/8085 или даже RISC-V! :roll:

_________________
:dj: https://mastodon.social/@Shaos


26 Apr 2023 21:13
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
Выложил Rgrid v0.8

https://gitlab.com/nedopc/sdk/-/tree/master/rgrid

Code:
v0.8 (2023-04-30)

 - Added sourcecode URL
 - Allowed $_ to control checkbox or radio as elements with value
 - Added function $append
 - Function $$_ was renamed to $$$

_________________
:dj: https://mastodon.social/@Shaos


30 Apr 2023 11:57
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 22 posts ]  Go to page Previous  1, 2

Who is online

Users browsing this forum: No registered users and 25 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.