Skip to content

Handbok — verifierad ALB-syntax för .alb-program

AdaLogic BASIC (ALB) — handboken

Säker syntax för elever och kodskrivande verktyg — baserad på den aktuella parsern och de inbyggda backend-vägarna. Allt nedan är det verifierade bladet. Körbara demos: exempelgalleriet och docs/examples/*.alb.

Allmänna regler

Programskelett

BEGIN
    VERSION 0.0.0.1

    CREATE_WINDOW "ALB APP", 960, 640

    ON TICK
        -- update logic
    END

    ON PAINT
        -- draw logic
    END

    LISTEN
END

Deklarationer

-- comment
#MAX_ENTITIES = 64

LET score = 0
LET hp AS U16 = 100
LET name AS STRING = "ALB"

TYPE SmallHealth IS U16 RANGE 1 .. 255
TEMPORAL LET px AS I32 HISTORY 16 = 140

Säkra deklarationstyper

U0, U8, U16, U32, U64, S32, I8–I64, F64/REAL, PURE/RATIONAL, FLOAT2/FLOAT4, MAT2–MAT4, BOOL, STRING/BINARY, HW8/HW16/HW32.

Kontrollflöde

IF hp > 0 THEN
    LET alive = TRUE
ELSE
    LET alive = FALSE
END IF

WHILE hp > 0
    LET hp = hp - 1
END WHILE

FOR i = 1 TO 10 THEN
    PRINT i
END FOR

MATCH mode
    0 => state = 1
    ELSE => state = 99
END MATCH

MATCH använder =>-grenar (inget CASE). SELECT använder CASE. Föredra flerrads-IF för grenar med flera åtgärder.

Funktioner och moduler

FUNCTION Twice(x AS U32) AS U32
    RETURN x + x
END FUNCTION

FUNCTION PCT_X(percent AS S32) AS S32
    RETURN CAST((S32(VIRTUAL_WIDTH) * percent) / 100 AS S32)
END FUNCTION

MODULE MathKit BEGIN
    FUNCTION Add2(x AS U32) AS U32
        RETURN x + 2
    END FUNCTION
END MODULE

IMPORT MathKit

Arrayer (1-baserade)

STRICT cells[64] AS U16
LET cells[1] = 10

PARALLEL swarm[128]
    x AS S32
    y AS S32
    hp AS U16
END PARALLEL

LET swarm[1].x = 100
SWAPPOP swarm[dead_slot], active_count

Grafik

CREATE_WINDOW "Demo", 320, 200
CLEAR $050511
COLOR $FF3300
FILL RECT x, y, w, h
DRAW LINE x1, y1, x2, y2
TEXT 8, 8, "HELLO"
DRAW TEXT 8, 24, "SCORE: " | score_s

| och & konkatenerar strängar (inte bitvis OR). Bitvisa operationer använder OR / XOR / AND.

Indata och miljö

PRINT "HP=" | hp
INPUT "Name", player_name
LET pressed = KEY(4)
LET mx = MOUSE_X
LET vw = VIRTUAL_WIDTH

Använd KEY(code), inte KEY_STATE(code).

Exempelprogram

hello.alb

BEGIN
    VERSION 0.0.0.1
    PRINT "Hello from AdaLogic BASIC!"
    LISTEN
END

greeter.alb

BEGIN
    VERSION 0.0.0.1
    LET name AS STRING = "friend"
    INPUT "What should we call you?", name
    PRINT "Hello, " | name | "!"
    LISTEN
END

count.alb

BEGIN
    VERSION 0.0.0.1
    FOR i = 1 TO 10 THEN
        PRINT i
    END FOR
    LISTEN
END

window_paint.alb

BEGIN
    VERSION 0.0.0.1
    CREATE_WINDOW "ALB Square", 320, 240
    ON PAINT
        CLEAR $101018
        COLOR $0B6BCB
        FILL RECT 40, 40, 80, 80
        COLOR $E8F1FB
        TEXT 40, 140, "FILL RECT demo"
    END
    LISTEN
END

cells.alb

BEGIN
    VERSION 0.0.0.1
    STRICT cells[8] AS U16
    FOR i = 1 TO 8 THEN
        LET cells[i] = i * 10
    END FOR
    PRINT "cells[1]=" | cells[1]
    LISTEN
END

Övningsbana

  1. BEGIN / PRINT / LISTEN (VERSION valfritt)
  2. Typad LET + IF / FOR
  3. INPUT + sträng-|
  4. CREATE_WINDOW + ON PAINT
  5. STRICT-arrayer (1-baserade)
  6. Dela via konsolen

Vanliga misstag

Källdokumentation

Hem · Om