Привет ФЛУД.
For x:= 105 downto 0 do
begin
b := x>80;
x1 := x*ord(odd(x) AND NOT ;{Esli perviy prohod, to x1 := 0}
y1 := (x mod 80)*ord(odd(x) AND ;{Esli vtoroi prohod, to y1 := 0}
Window(x1+1*ord(, y1+1*ord(not , x1+80*ord(, y1+25*ord(not );
end;Задача такая. Пока параметр цикла x больше 80, функции Window передаются такие аргументы: (1, y1, 80, y1+1). Когда параметр цикла станет меньше 80, Window примет такие аргументы: (x1, 1, x1+1, 25)Следует отметить, что умножение на результат функции ord(odd(x)) не даёт присвоить x1 и y1 четные числа. Чтобы было понятнее, напишу это: Принимая значение либо true, либо false, переменная b попеременно обращает в ноль значение следующих выражений, соответственно цвету: (если выражение или переменная выделена красным, то она обращается в ноль при b = 0, т.е. при x<80; если выражение или переменная выделена зелёным, то она обращается в ноль при b = 1, т.е. при x>80) x1 := x*ord(odd(x) AND NOT B ); y1 := (x mod 80)*ord(odd(x) AND B ); Window(x1+1*ord( B ), y1+1*ord(not B ), x1+80*ord( B ), y1+25*ord(not B )); Так как мне надо бежать, оставлю это здесь. Код должен рисовать рештку в текстовом режиме. Не всё расписал. Program Calc;
Uses CRT;
Var x,x1,y1:integer; b: boolean;
Begin
{Set BLUE background}
TextBackGround(black); ClrScr;
{Cycle for DRAWING SOMETHING}
For x:= 105 downto 0 do {40, cause of 80 columns}
begin
b := x>80;
x1 := x*ord(odd(x) AND NOT ;{Esli perviy prohod, to x1 := 0}
y1 := (x mod 80)*ord(odd(x) AND ;{Esli vtoroi prohod, to y1 := 0}
Window(x1+1*ord(, y1+1*ord(not , x1+80*ord(, y1+25*ord(not );
TextBackGround(blue);
ClrEol;
delay(40);
if KeyPressed then break
end;
{Wait for input, new only}
delay(500);
Repeat Until KeyPressed;
delay(500)
End.Ошибка где-то есть, не могу найти.