Еще один вариант с диалогом Сократа и Платона.
Сократ: Дважды два — четыре. Платон: Из нас двоих только Сократ говорит правду.
Ложно или истинно высказывание Платона?
MODULE Init;
IMPORT Log, D := Draw;
CONST
bgColor = 0FF666666H; btnSelected = 0FFFFFFFFH; btnUnselected = 0FF888888H;
statementColor = D.white; goodColor = 0FF00CC00H; badColor = 0FFFF0000H;
VAR
state1, lastb: INTEGER;
pressed: BOOLEAN;
PROCEDURE Setup;
BEGIN
D.SetSize(600, 400);
state1 := 0;
END Setup;
PROCEDURE Button(caption: ARRAY OF CHAR; x, y, w, h, state, nstate: INTEGER; pressable: BOOLEAN);
D.NoFill;
IF pressable THEN
D.Stroke(D.black)
ELSE
D.Stroke(btnUnselected)
END;
D.RectInt(x, y, w, h);
IF (D.mouseX >= x) & (D.mouseX <= x+w) & (D.mouseY >= y) & (D.mouseY <= y+h) THEN
D.RectInt(x+5, y+5, w-10, h-10);
lastb := nstate
END
D.NoStroke;
IF state = nstate THEN
D.Fill(btnSelected);
D.StringInt(caption, x+10, y+30, 20)
D.Fill(btnUnselected);
D.StringInt(caption, x+10, y+30, 20);
END Button;
PROCEDURE DrawButtons;
Button("Истинно", 30, 235, 105, 50, state1, 1, TRUE);
Button("Ложно", 250, 235, 90, 50, state1, 2, TRUE);
END DrawButtons;
PROCEDURE ChangeState;
VAR st: INTEGER;
state1 := lastb
END ChangeState;
PROCEDURE Draw;
lastb := 0;
D.SetBackground(bgColor);
D.Fill(D.white);
D.StringInt("Сократ: ", 50, 50, 35);
D.StringInt("'Дважды два - четыре.'", 50, 90, 35);
D.StringInt("Платон: ", 50, 130, 35);
D.StringInt("'Из нас двоих только ", 50, 170, 35);
D.StringInt(" Сократ говорит правду.'", 50, 210, 35);
DrawButtons;
IF pressed THEN
pressed := FALSE;
ChangeState;
IF state1 = 1 THEN
D.Fill(badColor);
D.StringInt("Тогда Платон говорит неправду", 100, 320, 25);
ELSIF state1 = 2 THEN
D.Fill(goodColor);
D.StringInt("Если Платон говорит неправду,", 100, 320, 25);
D.StringInt("То и Сократ говорит неправду,", 100, 350, 25);
D.StringInt("2*2 = 11 в троичной системе счисления", 50, 380, 25);
END Draw;
PROCEDURE Pressed;
pressed := TRUE
END Pressed;
PROCEDURE Do*;
D.SetSetupProc(Setup);
D.SetDrawProc(Draw);
D.SetPressedProc(Pressed);
D.Start
END Do;
Do
END Init.