Download Game! Currently 71 players and visitors. Last logged in:GgrtestRamjettKalaharTails

Blitzer's Blog >> 71603

Back to blogs index
Posted: 31 Jul 2026 10:31 [ permalink ]
10 REM === OMEGA V2: REACTIVE EVENT DEMO ===
20 PRINT ">>> 1. Alustetaan Noden HTTP-palvelin ja VFB..."
30 WEBSERVE PORT 9091 INTO HTTP_SERVER
40 WEBSERVE ADD "/" TO HTTP_SERVER FROM FS "/mnt/mesh_root/src/x-mesh-basic/vfb
_client.html"
50 WEBSERVE LINK VFB TO HTTP_SERVER ON "/stream"
60 WEBSERVE LINK OMEGA TO HTTP_SERVER ON "/input" INTO "ch_input"

70 PRINT ">>> 2. Alustetaan Noden Event Traps (Keskeytykset)..."
80 OMEGA SUBSCRIBE "ch_input" WITH GOSUB 1000
90 OMEGA SUBSCRIBE "ch_timer" WITH GOSUB 2000

100 PRINT ">>> 3. Alustetaan JS-Laatikkomoottori ja pelitila..."
110 SCREEN 176, 184
120 DIM BOXES AS ARRAY
130 LET SELECTED_INDEX = -1
135 JS DEFINE "math_random" "function() { return Math.random(); }"

140 PRINT ">>> 4. Kaynnistetaan Mesh-natiivi tausta-ajastin (BRANCH)..."
150 BRANCH "TickTimer" 9000 FINALIZE WITH 9100

180 PRINT ">>> VALMIS! Avaa http://localhost:9091 ja kokeile (B, N, W/A/S/D,
R, P) <<<"

200 REM --- PAAOHJELMA: DETACHED EVENT LOOP ---
210 REM Taalla piirretaan ruutu ja vaivutaan uneen!
220 FILLRECT 0, 0, 176, 184, 0
230 LET I = 0
240 FOREACH B IN BOXES
250   LET COLOR = 2
260   IF I == SELECTED_INDEX THEN LET COLOR = 3
270   FILLRECT B["x"], B["y"], 10, 10, COLOR
280   LET I = I + 1
290 NEXT B
300 BUFFER BLIT SCREEN

310 REM Irrotetaan Node.js Event Loop! (CPU -> 0%)
320 SUSPEND
330 GOTO 200


1000 REM ==========================================
1001 REM EVENT HANDLER: NCPPCIMISTC (ch_input)
1002 REM ==========================================
1010 OMEGA READ INTO PKT
1020 IF PKT == "" THEN RETURN
1030 JSON GET "data" FROM PKT INTO DATA
1040 JSON GET "action" FROM DATA INTO ACT
1050 IF ACT != "DOWN" THEN RETURN
1060 JSON GET "code" FROM DATA INTO KEY

1070 IF KEY == "B" THEN
1080   JSON INIT "DICT" NEW_BOX
1090   JSON SET "x" IN NEW_BOX TO 83
1100   JSON SET "y" IN NEW_BOX TO 87
1110   JSON SET "mode" IN NEW_BOX TO "idle"
1120   JSON PUSH NEW_BOX INTO BOXES
1130   LET SELECTED_INDEX = BOXES["length"] - 1
1140   PRINT "Uusi laatikko luotu. Index: " + SELECTED_INDEX
1150 END IF

1160 IF BOXES["length"] == 0 THEN RETURN

1170 IF KEY == "N" THEN
1180   LET SELECTED_INDEX = SELECTED_INDEX + 1
1190   IF SELECTED_INDEX >= BOXES["length"] THEN LET SELECTED_INDEX = 0
1200   PRINT "Valinta siirtyi indexiin: " + SELECTED_INDEX
1210 END IF

1220 LET CUR_BOX = BOXES[SELECTED_INDEX]
1230 IF KEY == "W" THEN SET CUR_BOX["y"] = CUR_BOX["y"] - 10
1240 IF KEY == "S" THEN SET CUR_BOX["y"] = CUR_BOX["y"] + 10
1250 IF KEY == "A" THEN SET CUR_BOX["x"] = CUR_BOX["x"] - 10
1260 IF KEY == "D" THEN SET CUR_BOX["x"] = CUR_BOX["x"] + 10

1270 IF KEY == "R" THEN 
1280   SET CUR_BOX["mode"] = "random"
1290   PRINT "Laatikko " + SELECTED_INDEX + " asetettu random-tilaan."
1300 END IF
1310 IF KEY == "P" THEN 
1320   SET CUR_BOX["mode"] = "idle"
1330   PRINT "Laatikko " + SELECTED_INDEX + " pysaytetty."
1340 END IF

1350 RETURN


2000 REM ==========================================
2001 REM EVENT HANDLER: TICK (Joka sekunti)
2002 REM ==========================================
2010 OMEGA READ INTO PKT
2020 IF PKT == "" THEN RETURN
2050 FOREACH B IN BOXES
2060   IF B["mode"] == "random" THEN
2070     JS CALL "math_random" INTO R
2080     IF R < 0.25 THEN SET B["y"] = B["y"] - 10
2090     IF R >= 0.25 AND R < 0.5 THEN SET B["y"] = B["y"] + 10
2100     IF R >= 0.5 AND R < 0.75 THEN SET B["x"] = B["x"] - 10
2110     IF R >= 0.75 THEN SET B["x"] = B["x"] + 10
2120   END IF
2130 NEXT B
2140 RETURN


9000 REM ==========================================
9001 REM NATIVE TIMER THREAD (BRANCH)
9002 REM ==========================================
9010 HOST_INJECT "{'channel': 'ch_timer', 'data': {'type': 'TICK'}}"
9020 SLEEP 1
9030 GOTO 9010
9100 EXITBRANCH