Полезности с брошенного сайта (часть 3)

Данный материал был опубликован на другом сайте, но сайт долгое время не развивался и в конце-концов был брошен и закрыт. Выборочно информацию из той которая на данный момент еще доступна в архиве,  я решил выложить здесь, польза я думаю будет. Я умышленно старался не менять пояснения операторов, оставляя авторскую мысль. Хотя были те, которые попали под редактирование по разным причинам.

Команды, небольшие пояснения к ним и примеры:

 

RUN

В отличие от старых версий всеми давно известных бейсиков, в которых оператор RUN применялся для того , что бы запустить саму программу написанную на бейсике, в freebasic применение команды RUN немного другое. Но принцип тот же. Вы можете написать в вашей программа команду RUN для того что бы запустить любую другую, которая есть у вас на компьютере, будь-то Internet Exploer , или какая другая программа. Запускать нужно название этой программы с расширением exe.

Формат оператора RUN:

RUN "название программы.exe"

В "название программы.ехе" пишем полный путь с указание папки, где находится эта программа. Например:
C:\Program Files\Internet Explorer\IEXPLORE.EXE

Screen 13
Print "dlya zapuska Internet Explorera nazhmite lubuy klavishu "
Sleep
Run "C:\Program Files\Internet Explorer\IEXPLORE.EXE"


Запускаем программу, выводится надпись 'нажмите любую клавишу для запуска интернет эксплорера'. Нажимаем, ждём пока программа запустится, и IE запускается, а наша программа останавливается...

 

SLEEP

Бывает, иногда, что в программе для того чтобы её отладить, или ещё для чего либо нужно сделать паузу. Что для этого предоставляет freebasic ? Для этого есть оператор SLEEP. Формат оператора паузы: SLEEP время в миллисекундах. Вобщем понятно, что если нам нужно осуществить в программе паузу в течении 1000 миллисекунд , мы пишем: SLEEP 1000.
Если по какой то причине, мы забыли написать время в операторе SLEEP, то программа остановиться и будет ждать нажатия любой клавиши. После нажатия любой клавиши, программа будет продолжаться далее, т.е. всё то,что идёт после оператора SLEEP.

Screen 14
Locate 10,10
Print "nazhmite lubyu klavishu"
Sleep
Cls
Locate 10,10
Print "spasibo !"
Sleep 5000

 

POKE

Записывает нужные данные в ячейки памяти. Наглядный пример записи в память описан в английской версии справочника freebasic'a. С помощью оператора POKE мы записываем байт в область памяти экрана. Формат оператора: POKE адресс,байт

Screen 13
Dim framebuffer As Byte Ptr
framebuffer = Screenptr 'находим адресс текущей страницы
Screenlock 'запирает текущую страницу
Poke framebuffer + (100 * 320) + 160, 15 'рисуем точку
Poke framebuffer + (100 * 320) + 170, 15 'рисуем точку
Screenunlock 'отпирает текущую страницу
Sleep

 

PEEK

Для чтения из ячеек памяти применяется оператор PEEK.

Screen 13 'режим экрана
Dim x As Integer, addr As Integer ' объявляем про переменные
addr = Varptr(x) ' находим адрес памяти переменной
x = 5 ' присваем переменной х значение 5
Locate 10,10 ' координаты курсора
Print Peek( Integer, addr ) ' читаем из памяти значение
Sleep 'ожидаем нажатие клавиши


В результате, выводится значение переменной x, считывая её из памяти с помощью PEEK

 

RND

Оператор RND генерирует случайные числа от 0 до 1. С первого взгляда , ну сколько можно сгенерить чисел от 0 до 1? Две? Нет это не так. А как же десятые, сотые, тысячные? Можно получить любое число, умножив случайное число от 0 до 1 на 10,100,1000 и т.д. Для нормальной работы оператора RND нужно 'сбрасывать' генератор случайных чисел с помощью оператора RANDOMIZE, записав его перед оператором RND

Формат оператора RND:

Имя переменной=RND(1), где имя переменной - типа INTEGER или DOUBLE

Пример программы с RND :

Screen 13
Dim x As Integer,y As Integer, i As Integer
Randomize
For i=1 To 150
    x=Int(Rnd(1)*280):y=Int(Rnd(1)*180)
    Line(x,y)-(x+10,y),i:Line -(x+15,y-10),i
    Line -(x+20,y),i:Line -(x+30,y),i
    Line -(x+20,y+5),i:Line -(x+30,y+15),i
    Line -(x+15,y+9),i:Line -(x,y+15),i
    Line -(x+10,y+5),i:Line -(x,y),i
    Paint(x+10,y+10),i,i
Next i
Sleep


В результате работы оператора RND, на экран выводятся звёздочки со случайными координатами.

 

 REM

Для того, что бы в программе сделать примечание, можно использовать оператор REM. После этого оператора можно писать любое примечание в этой строке. Так же для примечания в программе можно использовать значок ', после которого можно писать примечание. Например:

Rem БЛА БЛА БЛА
' БЛА БЛА БЛА
'''''''''''' БЛА БЛА БЛА '''''''''''''

 

GETMOUSE

Для контроля за состоянием мышки, её положение, контроль кнопок, колёсика, в freebasic применяется оператор GETMOUSE. Формат оператора GETMOUSE:

GETMOUSE координата x, координата y,, кнопки buttons

переменные x, y, кнопки buttons , должны быть типа INTEGER

Пример:

Dim x As Integer, y As Integer, buttons As Integer
Screen 13
Do
    Cls
    Getmouse x, y,, buttons
    If x < 0 Then
        Print "Myshka vne okna"
    Else
        Print Using "Poziciya myshki: ###:### Buttons: "; x; y;
        If buttons And 1 Then Print "Levaya";
        If buttons And 2 Then Print "Pravaya";
        If buttons And 4 Then Print "Kolesiko";
        Print " "
    End If
Loop While InKey$ = ""
End

Так же мышку можно контролировать по другому:

#INCLUDE "fbgfx.bi" 'включить fbgfx.bi
Using FB 'использовать freebasic
Dim e As EVENT 'переменная e как событие
Screen 13
Do
    If (Screenevent(@e)) Then
        If e.type=EVENT_MOUSE_MOVE Then
            Cls:Locate 10,10
            Print e.x,e.y ' координаты x,y
        Endif
        If e.type=EVENT_MOUSE_DOUBLE_CLICK Then
            End 'если двойное нажатие - ВЫХОД
        Endif
    End If
Loop


Программа контролирует с помощью SCREENEVENT состояние мышки, если переменная e.type принимает значение EVENT_MOUSE_CLICK, то значит изменились координаты мышки e.x и e.y. А если переменная e.type принимает значение EVENT_MOUSE_DOUBLE_CLICK, значит пользователь сделал двойное нажатие кнопки мышки.

 

 GETKEY

Если нужно определить в freebasic , какая клавиша была нажата пользователем, можно воспользоваться оператором GETKEY , который возвращает код последней нажатой клавиши(только английская раскладка):

Пример:

Dim a As Integer
Screen 13
Print "press ESC to end"
Do
    a=getkey
    Print a
Loop Until a=27


Всё очень просто. Объявляем переменную а типа INTEGER, и вылавливаем нажатие клавиши с помощью GETKEY. Для того , что бы выйти из программы, используем контроль кода asc клавиши ESC. При нажатии ESC выход из цикла DO-LOOP .

 

LEN

Если Вы хотите определить, например, длину строки "Hello world!", Вы можете для этого написать : PRINT LEN("Hello world!"). И в результате оператор LEN посчитает и выдаст число 12. Тем самым определив количество символов в строке (вместе с пробелом и восклицательным знаком). Это если ваша строка или переменная типа STRING, если другой тип , то оператор LEN выдаст число байтов переменной.

Например:

Print Len("hello world") ' вернёт число "11"
Print Len(Integer) ' вернёт число 4, имея ввиду 4 байта
Type xyz 'объявим тип переменной
    a As Integer
    b As Integer
End Type ' конец объявления типа
Print Len(xyz)  ' вернёт 8 байт - длина переменной
Sleep

 

INT

Оператор INT возвращает целое число, округляя. Формат оператора очень прост и не нуждается в особом описании. Если вы хотите найти целое число, допустим числа 4.9, и напишите INT (4.9) , то freebasic вам после обработки оператором INT вернёт вам число 5.0. А если Вы хотите найти целое число от -1.3 , то freebasic вам вернёт после обработки INT число -1.0. Вобщем и так всё понятно . Как это выглядит в программе? Вот так:

Dim a As Integer
Input a
a=Int(a)
Print a
Sleep


В результате, какое бы число не вводил пользователь, программа с помощью INT преобразует его в целое. Иногда полезная вещь...

 

OPEN

Если нужно открыть файл, используем оператор OPEN. Для записи в файл используем оператор PUT.  Например:

Dim buffer As String
Dim f As Integer
buffer = "Hello World vmeste s etim failom!"
' Найти первый свободный файл.
f = Freefile ' свободный файл
' Откроем файл "file.ext" для двоичного использования,
'используя указатель переменной "f"
Open "file.ext" For Binary As #f
' Разместим нашу строку в файл,
'используя указатель переменной "f".
Put #f, , buffer
' Закрываем файл
Close
'(Выясните характер файла "file.ext" ,
'чтобы увидеть его содержимое.
'Или переименуйте в txt и просмотрите )
End 'конец программы


В результате, мы запишем в file.ext фразу "Hello World vmeste s etim failom!". Если такого файла нет, он создатся автоматически. Чтоб просмотреть этот созданный файл, переименуйте его в txt и просмотрите в любом текстовом редакторе.
Так же с помощью команды OPEN можно открыть серийный порт компьютера, позволяя послать или получить данные, используя команды файлов: PRINT#, INPUT#,GET# и.т.д.

'OPEN A COM PORT
 Open Com "COM1:9600,N,8,1" As #1
'COM1, 9600 BAUD, NO PARITY BIT, EIGHT DATA BITS, ONE STOP Bit


где 9600 boud - скорость в бодах, NO PARITY BIT - нет четн. бит, EIGHT DATA BITS - восемь разрядов данных, ONE STOP BIT - один бит остановки.

 

 READ - DATA

Оператор READ прост до безумия. Что бы он нормально работал, нужен оператор DATA, в котором через запятую указываем данные. При чтении оператором READ из DATA нужно что бы тип переменной совпадал. Т.е если переменная типа INTEGER, то так и объявляем об этом с помощью DIM. Если переменная типа STRING, то тоже об этом не молчим. Иначе возникнет ошибка.

Вот пример использования операторов READ и DATA :

Screen 13
' Создадим массив из 5 (h(4)) целых, 
'и одно (hs) строковое значение
Dim h(4) As Integer
Dim hs As String
Dim Read_Data As Integer ' объявим переменную массива
' Будем читать 5 раз
For Read_Data = 0 To 4
    ' Читаем целые числа
    Read h(Read_Data)
    ' Печатаем это на экран
    Print "Nomer"; Read_Data;" = "; h(Read_Data)
Next
' Пустая строка
Print
' Читаем строковые данные
Read hs
' Печатаем это
Print "Sstrokovaya = " + hs
' Ожидаем нажатие
Sleep
' Выход из программы
End
' Блок с датой
Data 6, 469, 8345, 46866, 954566, "Do svidanya!"

 

DRAW

Рисование ломанных линий и не только. С помощью DRAW можно: рисовать, масштабировать, поварачивать, менять цвет... Это лучше увидеть в программе с подробным описанием действий оператора DRAW :

Screen 13
Draw "C7" ' ЦВЕТ БЕЛЫЙ
Draw "F50" ' РИСУЕМ ВПРАВО - ВНИЗ
Draw "L5" ' ВЛЕВО НА 5 ЕДИНИЦ
Draw "H10" ' ВЛЕВО-ВВЕРХ НА 10 ЕДИНИЦ
Draw "R30" ' ВПРАВО НА 30 ЕДИНИЦ
Draw "D15" ' ВНИЗ НА 15 ЕДИНИЦ
Draw "G20" ' ВЛЕВО-ВНИЗ НА 20 ЕДИНИЦ
'РИСУЕМ ОТ НАШЕЙ ТОЧКИ +30,40 ЕДИНИЦ, 
'ЕСЛИ '-' ТО ВЫЧИТАЕМ,ЕСЛИ 'НЕТ ЗНАКА '+' ИЛИ '-',
'ТО ПРОСТО ПЕРЕМЕЩАЕМ В НУЖНУЮ ТОЧКУ:
Draw "M+30,40"
Draw "E15" ' ВПРАВО-ВВЕРХ НА 15 ЕДИНИЦ
Draw "U30" ' ВВЕРХ НА 30 ЕДИНИЦ
'--ТЕПЕРЬ ВСЁ ТОЖЕ , НО В ОДНОЙ СТРОКЕ --
' УМЕНЬШИЛИ МАСШТАБ РИСУНКА НА 2 ("S2")
Draw "S2 C3 F50 L5 H10 R30 D15 G20 M+30,40 E15 U 30 "
Draw "B R30" ' ПЕРЕМЕСТИЛИ ВПРАВО НА 30, НО НЕ РИСОВАЛИ("B")
'ВЕРНУЛИ МАСШТАБ("S4"), 
'РАЗВЕРНУЛИ ВЕСЬ ОБЪЕКТ НА 45 ГРАДУСОВ ("A45"):
Draw "S4 A45 C5 F50 L5 H10 R30 D15 G20 M+30,40 E15 U 30 "
' ПОВОРОТ 45 ГРАДУСОВ (TA45)
Draw "TA45 C1 F50 L5 H10 R30 D15 G20 M+30,40 E15 U 30 " 
Sleep

 

 TIME

Функция TIME возвращает текущее системное время в Вашем компьютере в формате чч:мм:сс.

Вот, пример использования функции TIME:

Screen 13
Locate 10,10
Print "VREMYA:";Time
Sleep


А с помощью оператора SETTIME можно установить текущее время, например написав SETTIME "08:00:20", мы установим 8 часов, 20 секунд на компьютере.

 

TRIM

С помощью "ТРИМА" можно вырезать любую часть строки. Посмотрите как легко справляется оператор TRIM с нашей строчкой:

Screen 13 
Dim t As String
t = "BaaBaaaaB Privet! aaBBaaBaa"
Print Trim(t, "Baa") ' вырезаем только "Ваа"
Print Trim(t, Any "Ba") ' вырезаем любую из букв В или а
Sleep

 

ASC

Чтобы определить код ASCII символа, необходима команда ASC. Например, если мы хотим определить код ASCII буквы А, то мы пишем ASC ("A"), а если у нас слово из нескольких букв, то необходимо указать код какой именно буквы нам нужен. Например в слове "MIR" , нам нужно определить код буквы I. Мы пишем: ASC ("MIR",2). В результате мы определим код ASCII буквы I, который равен 73.

 Как это выглядит в freebasic? Вот так:

Screen 13
Print Asc("MIR",2)
Sleep

Или можно это сделать так:

Screen 13
Print Asc("I")
Sleep

 

 CHR

CHR - возвращает символ кода ASCII. Очень простое действие, иногда незаменимое, и очень простое использование в freeebasic. Достаточно всего лишь написать: print chr(97) и freeebasic напечатает вам символ, которому принадлежит код ASCII = 97 , а это символ - буква 'а'. Вот пример программы с использованием CHR и результатом:

Screen 13
Locate 10,10
Print Chr(97),' 97 - это код ASCII буквы 'a'
Print Chr(67,73,78) ' 67,73,78 - код ASCII букв 'C, I, N'
Sleep ' спать

 

SELECT CASE

Select Case - выбирает какие-либо нужно сделать действия, в зависимости от значения некоторой переменной. Т.е мы пишем: SELECT CASE i, подразумевая, что переменная i будет менятся . И в зависимости от значения переменной i мы будем что-то делать с помощью команды: CASE i-где i это или числовое значение или строковое и т.д.

Смотрим на нашем примере:

Dim i As Integer ' объявим, переменная i целого типа
Screen 13 'включим экран
' предлагаем сделать выбор
Input "Vyberite: 1-krug, 2-kvadrat, 3-treugolnik, 4-vyhod ";i
Select Case i 'объявляем, что будет выбор
    Case 1 ' если i=1, то рисуем круг
        Circle (50,50),40,3
    Case 2 ' если i=2, то рисуем квадрат
        Line(30,40)-(60,80),2,b
    Case 3 ' если i=3, то рисуем треугольник
        Draw "C0 M50,50 C3 E20 F20 L40"
    Case 4  ' если i=4, то очищаем экран и выход
        Cls
    Case Else ' если i<>1,2,3,4 , то так и пишем...
        Print "Vy ne vybrali nichego !"
End Select ' конец выбора
Sleep ' тсс,спим...


В конце окончания выбора пишем END SELECT, подчеркивая конец выбора с помощью оператора SELECT CASE. Смотрим результат работы оператора SELECT CASE:

 

RMDIR

Если вам необходимо удалить папку , то пишем RMDIR "имя папки" . И удаляем...

Rmdir "1" ' удаляем папку с именем "1"


В результате, с помощью RMDIR "1" мы удаляем папку "1" из нашего текущего каталога.

 

FUNCTION

Создание функций. Полезная вещь эти функции... Они позволяют намного упростить программу. Создав и назвав своим именем функцию, её можно вызывать из любого места программы - назвав по имени(как человека). Но еще при вызове нужно указать так сказать, входные параметры функции, например - имя переменной. В freebasice описание функции начинают со слова FUNCTION. Далее идёт имя функции: Moyafunkciya, или One, или funkciyaOne.

 Например:

 FUNCTION Moyafunkciya(a as string) as string

Где a - это входная переменная которая используется вашей программой и функцией. Это важно, так как функция - это вроде как отдельная программа, в которой свои переменные, которые необходимо вначале объявить, прежде чем использовать. Необходимо понимать, что переменные в вашей программе и в функции не связаны, а наша переменная a общая для функции и основного тела программы, но объявляется она в основном теле программы. В функции её объявлять не нужно. Заканчиваем объявление нашей функции оператором END FUNCTION.

Screen 17
Dim stroka As String
''''''''''''''' функция '''''''''''''''''''''''''
Function rus(stroka As String) As String ' объявим о функции с именем rus
     stroka=stroka+" DRUG !"
     Locate 10,10
     Print stroka
End Function
'''''''''''' основное тело программы ''''''''''''
stroka="PRIVET"
Print rus(stroka) ' вызовем функцию
Sleep
''''''''''''''''''''''''''''''''''''''''''''''''

 

CURDIR

Про эту функцию даже нечего рассказать - всё просто как 2х2. Для определения текущей папки просто пишем: PRINT CURDIR. И выводится текущая директория вида:"C:\Documents and Settings\User\Local Settings\Temporary Internet Files".

Для надёжности понимания пример:

Screen 13
Print Curdir
Sleep

 

WINDOWTITLE

Для того чтобы сделать заголовок нашему окну, достаточно написать фразу WINDOWTITLE "НАЗВАНИЕ НАШЕГО ОКНА". Обычно windowtitle пишется вначале программы перед оператором SCREEN, но его можно писать в любом месте программы, если нам нужно вывести заголовок. Удобная вещь, так как можно выводить сообщения на русском языке :

Windowtitle "ПРИВЕТ МИР!"
Screen 13
Sleep


Как видим freebasic разрешает использовать в заголовке русские буквы. И замечательно их выводит. Так же, естественно, можно использовать в заголовке и английские буквы.

 

POINT

Для того чтобы определить цвет точки на экране можно применить POINT. Формат записи которого не отличается от старого известного qbasic'a. Это запись вида: POINT (координата x,координата y). Пример:

Screen 13
Paint (20,20),2,2
Print Point (20,20)
Sleep


Как видим POINT возвратил нам атрибуты точки координаты (20,20). В нашем случае - это 2 , зелёный цвет.

 

VAL

Очень нужная функция, скажем так, полезная. Функция преобразования строки в число: VAL. Проста в использовании. Преобразует строку в число, если у нас в строке есть число. Например:

Screen 13
Dim a As String
Dim b As Integer
a="123456789abcd"
Print Val(a)
Sleep


Что бы преобразовать число в строку, применяем функцию STR. Формат записи STR такой же как VAL

 

NAME

Если у вас есть файл, и его нужно переименовать, то пишем:

NAME "старое имя","новое имя"

Расширение файла может быть любое. Как это выглядит в программе? Вот так:

Name "file1.txt","file2.txt"


В результате файл с именем file1.txt переименуется в файл file2.txt

 

KILL

Если у вас есть файл, и его нужно удалить, то пишем:

KILL "имя файла"

Как это выглядит в программе? Вот так:

Kill "file1.txt"


В результате файл будет удалён.

 

ARRAY

Array - это не команда!  Если вы хотите создать массив в Freebasic, то для этого достаточно объявить про это оператором DIM. Как это сделать? Ну например: DIM moyarray(10) as integer. Этим вы объявляете, что появился массив с именем moyarray в котором 10 эллементов целого типа (integer). Далее пользуемся переменной, допустим, присвоив moyarray(1)=100 или moyarray(34)=21. Ну и так далее. Пример:

Windowtitle "ПРИМЕР ИСПОЛЬЗОВАНИЯ МАССИВОВ В FREEBASIC"
Screen 13
Dim moyarray(10) As Integer 'объявление про массив
Dim i As Integer 'переменная для цикла
moyarray(1)=6 'присваеваем первому эллемента массива значение 6
moyarray(2)=7 'ну и так далее...
moyarray(3)=2
moyarray(4)=1
moyarray(5)=3
moyarray(6)=5
moyarray(7)=4
moyarray(8)=9
moyarray(9)=10
moyarray(10)=9
For i=1 To 10
    Print "moyarray(";i;")=";moyarray(i)'выводим весь массив на экран
Next i
Sleep


В результате у нас получилось:

 moyarray(1)=6
 moyarray(2)=7
 moyarray(3)=2
 moyarray(4)=1
 moyarray(5)=3
 moyarray(6)=5
 moyarray(7)=4
 moyarray(8)=9
 moyarray(9)=10
 moyarray(10)=9

 

SUB

Для упрощения программирования, для уменьшения исходного кода, сокращения программы можно использовать оператор подпрограммы SUB. Приемущество этого оператора-функции очевидно: можно заменить однотипные повторения кода вызовом подпрограммы описанной с помощью SUB. Но есть свои тонкости...

Во-первых подпрограмма должна находиться в рамках:  SUB - END SUB.
Во-вторых подпрограмма должна иметь имя(любое):  SUB ИМЯ_ПОДПРОГРАММЫ
В-третьих в описании подпрограммы можно указать параметры с помощью ByVal,ByRef (пример ниже программы):

Sub NAMESUB (Byval cvet As Integer , Byref c As String)
    Color cvet
    Print "color=";c
End Sub
Screen 13
Locate 12
NAMESUB (1,"goluboi") ' вызываем нашу подпрограмму
NAMESUB (2,"zelenij") ' тоже самое
NAMESUB (4,"krasnij") ' - // -
Sleep

 

CONST

Если в программе нужно использовать какую то постоянную переменную, неважно какого типа, просто пишем:   CONST имя_переменной=значение
Если это переменная число, то пишем:  CONST имя_переменной=число
Если это символы, то пишем:   CONST имя_переменной="значение"

Const a="Welcome"
Const b=" to the "
Const c="FREEBASIC "
Const d=2008
Screen 13
Print a;b;c;d
Sleep


Константы строкового типа a,b,c и константа численного типа d вывелись без проблем с помощью оператора PRINT.

 

WINDOW 

Если вам нужно задать свою систему координат, используйте оператор WINDOW. С помощью которого можно задать свою систему координат в области просмотра. Вот, например, ниже программа рисует звёздочку, меняет систему координат случайным образом с помощью RND и WINDOW , и немного увеличивает эту звёздочку в размере.

''включим режим экрана 640x400
Screen 17
''сделаем описание используемых переменных
Dim As Integer i,j,c
Dim As Double x,y,k
''цикл DO-LOOP выход клавиша ESC(код 27)
Do Until Asc(Inkey)=27
    ''x,y- случайные координаты для window
    x=(Rnd(1)*(Rnd(1)*15))
    y=(Rnd(1)*(Rnd(1)*15))
    ''цикл для увеличения размера звезды
    For i = 1 To 15
        ''с-случайный цвет
        c=Int(Rnd(1)*8)
        ''зададим свою систему координат
        Window (-160/ i+x, -100 / i+y)-(160 / i+x, 100 / i+y)
        Sleep 10
        Cls
        ''рисуем звёздочку
        Line(2,7)-(4,1),c
        Line -(6,7),c
        Line -(1,3),c
        Line -(7,3),c
        Line -(2,7),c
        ''следующее i
    Next i
    ''наш главный цикл
Loop

Напоминаю, что для нормальной работы программы её нужно скомпилировать. Что такое скомпилировать? Это либо запустить пакетный файл make.bat, который находиться в части этого материала, либо скомпилировать командной строкой, запустив freebasic и введя имя freebasic файла. Для выхода из программы используйте клавишу Escape (строчка do until asc(inkey)=27 в программе)

В операторе WINDOW мы случайным образом меняем систему координат, тем самым увеличиваем наш рисунок в цикле от 1 до 15 (for i=1 to 15). Используйте этот оператор, если вы хотите упростить работу с графикой. Кстати, этот оператор был в qbasic'e. Что бы блокировать изменение координат используйте оператор WINDOW без аргументов (без цифр).

1 часть |  2 часть | 3 часть