Форум программистов, компьютерный форум, киберфорум
QBasic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.54/501: Рейтинг темы: голосов - 501, средняя оценка - 4.54
Кормпилятор
 Аватар для Quiet Snow
5043 / 1717 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2

Графика на бейсике

16.08.2010, 02:10. Показов 108945. Ответов 175
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте уважаемые участники форума и администрация!

Уже давно заметил, что "скудновато" в данном разделе по прикреплённым темам, есть предложение закрепить топик, освещая следующие вопросы:

1) Обсуждаем графические приложения, написанные на бейсике(любые MS-DOS компиляторы)
2) Выкладываем разные "поучительные" примеры

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

Что подразумевается под графическими приложениями:
- В первую очередь программы работающие в графическом режиме, с упором на вывод графики.
- Разные рисунки, анимация, эффекты, воспроизводящиеся непосредственно в программе.
- Мультимедиа приложения и игры.
- Обычные программы использующие средства для вывода графики.

Также можно обсуждать и выкладывать какие-либо вспомогательные программы(будь то конвертер или редактор), идеологические аспекты, т.е. допустим один человек предлагает идею - другой реализовывает.

Вообщем если найдутся энтузиасты поддержать топик, буду очень рад. Хочется чтобы в разделе было больше посетителей и чтоб форум не "сдох".
10
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.08.2010, 02:10
Ответы с готовыми решениями:

Функция на бейсике
помогите пожалуйста сделать задание) составить функцию на Бейсике для вычисления заданной функции.Составьте программу вводящую с клавиатуры...

Программы на Паскале И Бейсике
Помогите решить: 5.Составить программу, с помощью которой получить цвет¬ной рисунок «Робот». А эту в Бейсике. Заранее спасибо.

Текстовые игры на бейсике
Подскажите, можно ли сделать что-то похожее на тиду или мир теней (или еще что-то от playtox)в среде бейсика? Заранее спасибо. ...

175
Кормпилятор
 Аватар для Quiet Snow
5043 / 1717 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
17.03.2011, 02:01  [ТС]
Студворк — интернет-сервис помощи студентам
Накодил сегодня цифровые часики, адаптировал функцию снятия скриншота под SCREEN 12, пользуйтесь на здоровье...

Совместимость программы: QBasic 1.0 и выше...

PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
DECLARE SUB MakeBmp (NameBmp$)
DECLARE SUB Prepare ()
   '  Процедуры печати
DECLARE SUB DrawChar (x%, y%, Ch%, Poz%, Mshtb!)
DECLARE SUB DrawClock (xDr%, yDr%, Tm$, Mashtab!)
   '  Массивы
CONST DataDL = 228
DIM SHARED Sizes%(1 TO 7), Sost%(9, 1 TO 7), i%, k%
DIM SHARED X1%(1 TO 7, 1 TO 6), X2%(1 TO 7, 1 TO 6)
DIM SHARED Y1%(1 TO 7, 1 TO 6), Y2%(1 TO 7, 1 TO 6)
DIM SHARED PZx%(1 TO 7), PZy%(1 TO 7)  ' Paint zone - зона закраски
  SCREEN 12     '  640x480x16цв.
  Prepare
   '  Читаем размерности
FOR i% = 1 TO 7
   READ Sizes%(i%)
NEXT
   '  Читаем координаты
FOR i% = 1 TO 7
   zx% = 0: zy% = 0
   FOR k% = 1 TO Sizes%(i%)
     READ X1%(i%, k%), Y1%(i%, k%), X2%(i%, k%), Y2%(i%, k%)
     zx% = zx% + X1%(i%, k%) + X2%(i%, k%)
     zy% = zy% + Y1%(i%, k%) + Y2%(i%, k%)
   NEXT
   PZx%(i%) = zx% / (Sizes%(i%) * 2): PZy%(i%) = zy% / (Sizes%(i%) * 2)
NEXT
   '  Читаем состояния
  i% = 0
DO:  READ k%
   IF k% = -1 THEN
     i% = i% + 1
   ELSE
     IF k% <> -2 THEN Sost%(i%, k%) = 1
   END IF
LOOP UNTIL k% = -2
 
DO: Kb$ = INKEY$
   G! = TIMER: WHILE G! + .5 < TIMER: WEND
   DrawClock 100, 250, TIME$, 4
   IF INT(TIMER * 2) AND 1 THEN
    LINE (215, 220)-(225, 230), 2, BF
    LINE (215, 270)-(225, 280), 2, BF
    LINE (394, 220)-(404, 230), 2, BF
    LINE (394, 270)-(404, 280), 2, BF
   ELSE
    LINE (215, 220)-(225, 230), 4, BF
    LINE (215, 270)-(225, 280), 4, BF
    LINE (394, 220)-(404, 230), 4, BF
    LINE (394, 270)-(404, 280), 4, BF
   END IF
   IF Kb$ = CHR$(32) THEN MakeBmp "Clock"
LOOP UNTIL Kb$ = CHR$(27)
 
END
  '  Размеры
DATA 5, 6, 5, 6, 5, 6, 5
  ' 1 > Левый верх
DATA -105,-196,-114,-187
DATA -105,-196,-57,-148
DATA -114,-187,-114,-3
DATA -57,-148,-57,-40
DATA -114,-3,-57,-40
  ' 2 > Верх
DATA -93,-208,-102,-199
DATA -102,-199,-54,-151
DATA -93,-208, 93,-208
DATA -54,-151, 54,-151
DATA  93,-208, 102,-199
DATA  102,-199, 54,-151
  ' 3 > Правый верх
DATA  105,-196, 114,-187
DATA  105,-196, 57,-148
DATA  114,-187, 114,-3
DATA  57,-148, 57,-40
DATA  57,-40, 114,-3
 '  4 > Центр
DATA -109, 0,-59,-33
DATA -109, 0,-59, 33
DATA -59,-33, 59,-33
DATA -59, 33, 59, 33
DATA  59,-33, 109, 0
DATA  109, 0, 59, 33
 '  5 > Левый низ
DATA -114, 3,-57, 40
DATA -114, 3,-114, 187
DATA -57, 40,-57, 148
DATA -114, 187,-105, 196
DATA -57, 148,-105, 196
 '  6 > Низ
DATA -102, 199,-54, 151
DATA -102, 199,-93, 208
DATA -54, 151, 54, 151
DATA -93, 208, 93, 208
DATA  54, 151, 102, 199
DATA  102, 199, 93, 208
 '  7 > Правый низ
DATA  114, 3, 57, 40
DATA  57, 40, 57, 148
DATA  114, 3, 114, 187
DATA  57, 148, 105, 196
DATA  114, 187, 105, 196
'   Состояния
 DATA 2, 1, 3, 5, 7, 6, -1
 DATA 3, 7, -1
 DATA 2, 3, 4, 5, 6, -1
 DATA 2, 3, 4, 7, 6, -1
 DATA 1, 4, 3, 7, -1
 DATA 2, 1, 4, 7, 6, -1
 DATA 2, 1, 4, 5, 7, 6, -1
 DATA 2, 3, 7, -1
 DATA 2, 1, 3, 4, 5, 7, 6, -1
 DATA 2, 1, 3, 4, 7, 6, -1, -2
'    Заголовок *.BMP*
bgdt: DATA 66,77,54,254,0,0,0,0,0,0,54,4,0,0,40,0,0
DATA 0,128,2,0,0,224,1,0,0,1,0,8,0,0,0,0,0,0
DATA 250,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0
 
SUB DrawChar (x%, y%, Ch%, Poz%, Mshtb!)
PCvtL% = 1: PCvtZ% = 2   ' Цвета для присутствующих
OCvtL% = 3: OCvtZ% = 4   ' Цвета для отсутствующих
 
xPls% = ((DataDL / Mshtb!) * 1.05) * Poz%
 FOR i% = 1 TO 7    ' От 1-го до 7-ми частей
   IF Sost%(Ch%, i%) = 1 THEN    ' Если часть включена, рисуем
    CvtL% = PCvtL%: CvtZ% = PCvtZ%
   ELSE CvtL% = OCvtL%: CvtZ% = OCvtZ%
   END IF
     FOR k% = 1 TO Sizes%(i%)    ' Рисуем все линии
   x11% = X1%(i%, k%) / Mshtb!: x22% = X2%(i%, k%) / Mshtb!
   y11% = Y1%(i%, k%) / Mshtb!: y22% = Y2%(i%, k%) / Mshtb!
   LINE (x11% + xPls% + x%, y11% + y%)-(x22% + xPls% + x%, y22% + y%), CvtL%
     NEXT
   PAINT (PZx%(i%) / Mshtb! + xPls% + x%, PZy%(i%) / Mshtb! + y%), CvtZ%, CvtL%
 NEXT
END SUB
 
SUB DrawClock (xDr%, yDr%, Tm$, Mashtab!)
  FOR u% = 1 TO LEN(Tm$)
    Tc% = ASC(MID$(Tm$, u%, 1))
    IF Tc% > 47 AND Tc% < 58 THEN
    DrawChar xDr%, yDr%, Tc% - 48, u% - 1, Mashtab!
    END IF
  NEXT
END SUB
 
SUB MakeBmp (NameBmp$)
'    Создаём *.BMP*
 OPEN NameBmp$ + ".Bmp" FOR BINARY AS #3
    RESTORE bgdt
    FOR byte& = 1 TO 54
     READ Zglv%: PUT #3, byte&, Zglv%
    NEXT byte&: byte& = 55
    FOR ii% = 0 TO 255
      OUT &H3C7, ii%: R% = INP(&H3C9) * 4: G% = INP(&H3C9) * 4: B% = INP(&H3C9) * 4
      bt1% = CVI(CHR$(B%) + CHR$(G%)): bt2% = CVI(CHR$(R%) + "№")
      PUT #3, byte&, bt1%: PUT #3, byte& + 2, bt2%
      byte& = byte& + 4
    NEXT ii%
      FOR y% = 479 TO 0 STEP -1
       FOR x% = 0 TO 639
        cve% = POINT(x%, y%)
        PUT #3, byte&, cve%: byte& = byte& + 1
       NEXT x%
      NEXT y%
 CLOSE #3
END SUB
 
SUB Prepare
 OUT &H3C8, 1
 OUT &H3C9, 92 / 4: OUT &H3C9, 93 / 4: OUT &H3C9, 77 / 4
 OUT &H3C9, 21 / 4: OUT &H3C9, 26 / 4: OUT &H3C9, 19 / 4
 OUT &H3C9, 120 / 4: OUT &H3C9, 124 / 4: OUT &H3C9, 87 / 4
 OUT &H3C9, 110 / 4: OUT &H3C9, 118 / 4: OUT &H3C9, 86 / 4
 OUT &H3C9, 120 / 4: OUT &H3C9, 124 / 4: OUT &H3C9, 87 / 4
 LINE (50, 180)-(590, 320), 5, BF
END SUB
Миниатюры
Графика на бейсике   Графика на бейсике  
3
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
17.03.2011, 17:13
еще фрактал
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
'Программа построения фракталов
SCREEN 12
Kc = 15           'количество цветов для фрактала
a = 640: b = 480  'размер экрана в пикселах по x и y
'Нужно задавать (менять) значения p,q
'для получения различных рисунков
'p = -.1: q = -1.92
'p = .5: q = -.1
'p = -.5: q = -.9
'p = -.5: q = .9
p = .5: q = 1
100
Xmin = -1.75: Ymin = -1.25    ' миним. коорд. фрактала
Xmax = 1.75: Ymax = 1.25      ' максим.коорд. фрактала
M = 100    'максимальное расстояние для поиска атрактора
dx = (Xmax - Xmin) / (a - 1)  'размер пиксела по оси x
dy = (Ymax - Ymin) / (b - 1)  'размер пиксела по оси y
FOR Nx = 1 TO a - 1  'цикл сканирования всех пикселов для
FOR Ny = 1 TO b - 1  'определения их цвета
xk = Xmin + Nx * dx
yk = Ymin + Ny * dy
k = 0
200   'формулы определения координат атрактора
xk1 = xk * xk - yk * yk + p
yk1 = 2 * xk * yk + q
k = k + 1  'число итер. для данного начального пиксела
c = k      'цвет пиксела, соответствующий данному числу
300
r = xk1 * xk1 + yk1 * yk1  'расст.от нач. до кон.точки
xk = xk1: yk = yk1
IF r > M THEN c = k: GOTO 400    'условие сходимости
IF k = Kc THEN c = 0: GOTO 400   'повторение палитры
GOTO 200
400
PSET (Nx, Ny), c
NEXT Ny
NEXT Nx
Миниатюры
Графика на бейсике  
2
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
20.03.2011, 11:01
циклоида
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
SCREEN 12
RANDOMIZE TIMER
rr1 = 150: rr2 = -50: rr3 = 30: k = 0.45: q = 0.1
FOR R1 = rr1 TO 187 STEP 5
    FOR R2 = rr2 TO 240 STEP 5
        FOR R3 = rr3 TO 240 STEP 5
            col = INT(RND * 15 + 1)
            FOR T = 0 TO 600 STEP q
                X = (INT((R1 + R2) * COS(R2 * T / R1) - R3 * COS((R1 + R2) / R1 * T)))
                Y = INT((R1 + R2) * SIN(R2 * T / R1) - R3 * SIN((R1 + R2) / R1 * T))
                PSET (X * k + 320, Y * k + 240), col
NEXT: NEXT: SLEEP 3: CLS: NEXT: NEXT
Здесь R1 - радиус круга, по которому катится колесо, R2 - радиус колеса, катящегося по кругу, если с минусом, то внутри его и R3 - радиус, на котором лежит рисуемая точка на колесе. Т - счетчик цикла, он же полярный угол, на котором лежит центр колеса в данный момент. q глубина прорисовки.
Миниатюры
Графика на бейсике  
2
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
20.03.2011, 15:26
QBasic/QuickBASIC
1
2
3
4
5
6
7
SCREEN 12
r1 = 111: r2 = 16: r3 = 131: k = 0.85: q = 0.01
FOR t = 0 TO 600 STEP q
    x = INT((r1 + r2) * COS(r2 * t / r1) - r3 * COS((r1 + r2) / r1 * t))
    y = INT((r1 + r2) * SIN(r2 * t / r1) - r3 * SIN((r1 + r2) / r1 * t))
    PSET (x * k + 320, y * k + 240), 5
NEXT
Миниатюры
Графика на бейсике  
3
Кормпилятор
 Аватар для Quiet Snow
5043 / 1717 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
20.03.2011, 17:41  [ТС]
softmob, поиграйся с палитрой, алгоритмы хорошие, но стандартные цветовые оттенки режут глаз. Из 16-ти цветов можно создать градиент + примитивный RND дизер и это будет достаточно неплохо смотреться.
0
Кормпилятор
 Аватар для Quiet Snow
5043 / 1717 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
24.03.2011, 06:19  [ТС]
"Классический" фрактал - папоротник, слизано с книжки С.А. Немнюгина "Turbo PASCAL практикум".

Совместимость программы: QBasic 1.0 и выше.

PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
DECLARE SUB MakeBmp (NameBmp$)
 
 CONST Iterations = 1000000
 
DIM t AS DOUBLE, x AS DOUBLE, y AS DOUBLE, p AS DOUBLE
DIM k AS LONG
DIM Midx AS INTEGER, Midy AS INTEGER, radius AS INTEGER
 
ON TIMER(1) GOSUB ShowIter
TIMER ON
 
  SCREEN 12
 FOR k = 1 TO 15
   OUT &H3C8, k
   IF k < 16 THEN
   OUT &H3C9, k: OUT &H3C9, 25 + k * 2: OUT &H3C9, 0
   ELSE OUT &H3C9, k: OUT &H3C9, 54: OUT &H3C9, 0
   END IF
 NEXT: k = 10
  Midx = 320
  Midy = 480
  radius = .1 * Midy
     RANDOMIZE TIMER
  x = 1
  y = 0
 
  FOR k = 1 TO Iterations
   p = RND
   t = x
   IF p <= .85 THEN
     x = .85 * x + .04 * y
     y = -.04 * t + .85 * y + 1.6
   ELSE
      IF p <= .92 THEN
       x = .2 * x - .26 * y
       y = .23 * t + .22 * y + 1.6
      ELSE
         IF p <= .99 THEN
          x = -.15 * x + .28 * y
          y = .26 * t + .24 * y + .44
         ELSE
          x = 0
          y = .16 * y
         END IF
 
      END IF
   END IF
   PSET (Midx + radius * x, Midy - radius * y), POINT(Midx + radius * x, Midy - radius * y) + 1
  NEXT
MakeBmp "Paporotn"
END
ShowIter: LOCATE 1: PRINT "Iterations: "; k: IF INKEY$ <> "" THEN END
RETURN
bgdt: DATA 66,77,54,254,0,0,0,0,0,0,54,4,0,0,40,0,0
DATA 0,128,2,0,0,224,1,0,0,1,0,8,0,0,0,0,0,0
DATA 250,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0
 
SUB MakeBmp (NameBmp$)
'    Создаём *.BMP*
 OPEN NameBmp$ + ".Bmp" FOR BINARY AS #3
    RESTORE bgdt
    FOR byte& = 1 TO 54
     READ Zglv%: PUT #3, byte&, Zglv%
    NEXT byte&: byte& = 55
    FOR ii% = 0 TO 255
      OUT &H3C7, ii%: R% = INP(&H3C9) * 4: G% = INP(&H3C9) * 4: B% = INP(&H3C9) * 4
      bt1% = CVI(CHR$(B%) + CHR$(G%)): bt2% = CVI(CHR$(R%) + "№")
      PUT #3, byte&, bt1%: PUT #3, byte& + 2, bt2%
      byte& = byte& + 4
    NEXT ii%
      FOR y% = 479 TO 0 STEP -1
       FOR x% = 0 TO 639
        cve% = POINT(x%, y%)
        PUT #3, byte&, cve%: byte& = byte& + 1
       NEXT x%
      NEXT y%
 CLOSE #3
END SUB
P.S: В божеский вид посредством манипуляций с палитрой привести не удалось, может кому из форумчан удастся.
Миниатюры
Графика на бейсике  
3
Кормпилятор
 Аватар для Quiet Snow
5043 / 1717 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
29.03.2011, 07:12  [ТС]
Вчера ко мне обратился один из пользователей с просьбой объяснить, каким образом можно встроить картинку в код программы.
Раньше я не занимался этим вопросом, тема довольно интересная.
Многие кодеры полагаю, хотят встраивать в свои программы графику(особенно если её мало).
Потому мной было принято решение написать небольшую утилитку для конвертирования бинарных данных из *.BMP* файла в данные, описываемые ключевым словом DATA.
Далее я прокомментирую, как её использовать.

Исходник:

PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
   ' Структуры данных для *.BMP*
TYPE BMFile
   BmID AS INTEGER
   FileSize AS LONG
   Reserved AS LONG
   BmOFFSET AS LONG
END TYPE
TYPE BMHead
   HeadSize AS LONG
   BmpSizeX AS LONG
   BmpSizeY AS LONG
   BmSlices AS INTEGER
   BitDepth AS INTEGER
   Compress AS LONG
   DataSize AS LONG
   BmHorRes AS LONG
   BmVerRes AS LONG
   UseColor AS LONG
   SingColr AS LONG
END TYPE
      '  Максимальная длина строки для DATA
  CONST MaxDl = 75
      '  Максимальный размер BMP данных для
      '  конвертирования(в байтах)
  CONST MaxDataLenght = 17000
  DIM SHARED FHead AS BMFile, BMPHead AS BMHead, FilePL&
  DIM SHARED Ld AS STRING * 1
 
  CLS
  LOCATE 3, 10, 1: PRINT "*.BMP* filename : ";
  Shbl$ = "_~@#$%!^&(){}"   ' Могут быть в имени файла
 
  DO: K$ = INKEY$
    IF K$ = CHR$(8) AND LEN(BmName$) > 0 THEN
      BmName$ = LEFT$(BmName$, LEN(BmName$) - 1)
    END IF
      '██████████████████████  Создаём датафайл  █████████████████████
    IF K$ = " " AND CanMake% = 1 THEN
      f! = TIMER
      COLOR 7: LOCATE 21, 20: PRINT "Converting...";
      OPEN "B", #1, BmName$ + ".BMP"
      OPEN "O", #2, BmName$ + ".BAS"
         '  Включаем программу для вывода
       PRINT #2, "' ┌┬──────────────┬───────────────────────────┐"
       PRINT #2, "' │╘══ Bmp2Data ══╛                           │"
       PRINT #2, "' │                                           │"
       PRINT #2, "' │ Universal bitmap converter, version 1.0b  │"
       PRINT #2, "' │ Универсальный BMP конвертер, версия 1.0б  │"
       PRINT #2, "' │                                           │"
       PRINT #2, "' ├───────────────────────────────────────────│"
       PRINT #2, "' │  Автор: >Quiet Snow<                      │"
       PRINT #2, "' │  Соглашение: При использовании программы  │"
       PRINT #2, "' │  вся ответственность за любые последствия │"
       PRINT #2, "' │  лежит на пользователе.                   │"
       PRINT #2, "' └───────────────────────────────────────────┘"
       PRINT #2, "  DECLARE SUB ShowBmp ()"
       PRINT #2, ""
       PRINT #2, " '··──  Установка экрана  ──··"
       PRINT #2, ""
       PRINT #2, "      SCREEN 13"
       PRINT #2, ""
       PRINT #2, " '··──   Вывод картинки   ──·· "
       PRINT #2, ""
       PRINT #2, "      ShowBmp"
       PRINT #2, ""
       PRINT #2, " END"
         '
      GET #1, , FHead: GET #1, , BMPHead
        IF BMPHead.BitDepth < 9 THEN
          '  Конвертируем палитру из файла
          PRINT #2, "' Палитра"
          PRINT #2, "5 ";
           S$ = "DATA "
          FOR i% = 1 TO 2 ^ BMPHead.BitDepth
           GET #1, , FilePL&
           R% = ((FilePL& AND &HFF0000) \ 262144) AND 63
           G% = ((FilePL& AND &HFF00) \ 1024) AND 63
           B% = ((FilePL& AND &HFF) \ 4) AND 63
           S$ = S$ + LTRIM$(STR$(R%)) + ","
              IF LEN(S$) >= MaxDl THEN
               S$ = LEFT$(S$, LEN(S$) - 1)
               PRINT #2, S$: S$ = "DATA "
              END IF
           S$ = S$ + LTRIM$(STR$(G%)) + ","
              IF LEN(S$) >= MaxDl THEN
               S$ = LEFT$(S$, LEN(S$) - 1)
               PRINT #2, S$: S$ = "DATA "
              END IF
           S$ = S$ + LTRIM$(STR$(B%)) + ","
              IF LEN(S$) >= MaxDl THEN
               S$ = LEFT$(S$, LEN(S$) - 1)
               PRINT #2, S$: S$ = "DATA "
              END IF
          NEXT i%
            ' Дописываем остаток
            S$ = LEFT$(S$, LEN(S$) - 1)
            PRINT #2, S$
            PRINT #2, "' Данные"
            PRINT #2, "10 ";
          '  Перемещаемся на дату и конвертируем её
          S$ = "DATA "
          SEEK #1, FHead.BmOFFSET
          DEF SEG = VARSEG(Ld): OffLd& = VARPTR(Ld)
          Plus& = -BMPHead.BmpSizeX AND 3
          FOR yp& = 0 TO BMPHead.BmpSizeY - 1
            'Adr& = FHead.BmOFFSET + CLNG(yp%) * BMPHead.BmpSizeX
             Adr& = (BMPHead.BmpSizeY - yp& - 1) * (BMPHead.BmpSizeX + Plus&)
             Adr& = Adr& + FHead.BmOFFSET + 1
            FOR xp& = 0 TO BMPHead.BmpSizeX - 1
            GET #1, Adr& + xp&, Ld
              S$ = S$ + LTRIM$(STR$(PEEK(OffLd&))) + ","
              IF LEN(S$) >= MaxDl THEN
                  S$ = LEFT$(S$, LEN(S$) - 1)
                  PRINT #2, S$: S$ = "DATA "
              END IF
            NEXT xp&
          NEXT yp&
          DEF SEG
            ' Дописываем остаток
            S$ = LEFT$(S$, LEN(S$) - 1)
            PRINT #2, S$
 
       PRINT #2, ""
       PRINT #2, "SUB ShowBmp"
       PRINT #2, "   FOR y% = 1 TO"; 2 ^ BMPHead.BitDepth
       PRINT #2, "     READ R%, G%, B%"
       PRINT #2, "     OUT &H3C9, R%: OUT &H3C9, G%: OUT &H3C9, B%"
       PRINT #2, "   NEXT"
       PRINT #2, "   FOR y% = 0 TO"; BMPHead.BmpSizeY - 1
       PRINT #2, "      FOR x% = 0 TO"; BMPHead.BmpSizeX - 1
       PRINT #2, "        READ cv%"
       PRINT #2, "        PSET (x%, y%), cv%"
       PRINT #2, "      NEXT"
       PRINT #2, "   NEXT"
       PRINT #2, "END SUB"
        END IF
      CLOSE #1, #2
      COLOR 10: PRINT USING "Done at ##.### seconds"; TIMER - f!
    END IF
      ' ██████████████████████████████████████████████████████████████
 
    IF LEN(K$) = 1 AND LEN(BmName$) < 8 THEN
      IF K$ > "/" AND K$ < ":" THEN Dob% = 1
      IF K$ > "@" AND K$ < "[" THEN Dob% = 1
      IF K$ > "`" AND K$ < "{" THEN Dob% = 1
        FOR i% = 1 TO LEN(Shbl$)   '  Поиск допустимых букв в имени файла
          IF INSTR(Shbl$, K$) THEN Dob% = 1
        NEXT
      IF Dob% = 1 THEN BmName$ = BmName$ + K$: Dob% = 0: CanMake% = 0
       ON ERROR GOTO NoFile: NF% = 0
       OPEN "I", #1, BmName$ + ".BMP"
       IF NF% = 1 THEN COLOR 12 ELSE COLOR 10
       IF NF% = 0 THEN
         CLOSE #1: OPEN "B", #1, BmName$ + ".BMP"
           GET #1, , FHead
           IF FHead.BmID = 19778 THEN
            GET #1, , BMPHead
            COLOR 7
            LOCATE 8, 5: PRINT "FILE: ";
            COLOR 11: PRINT UCASE$(BmName$) + ".BMP": COLOR 7
            LOCATE 11, 5: PRINT "HEADER          .... "; BMPHead.HeadSize
            LOCATE 12, 5: PRINT "SIZE            .... "; LOF(1); "bytes "
            LOCATE 13, 5: PRINT "RESOLUTION X    .... "; BMPHead.BmpSizeX
            LOCATE 14, 5: PRINT "RESOLUTION Y    .... "; BMPHead.BmpSizeY
            LOCATE 15, 5: PRINT "COLORS          .... "; 2 ^ BMPHead.BitDepth
            LOCATE 16, 5: PRINT "  USED COLORS   .... "; BMPHead.UseColor
            LOCATE 17, 5: PRINT "  ACTUAL COLORS .... "; BMPHead.SingColr
            IF BMPHead.DataSize < MaxDataLenght THEN
             COLOR 14: CanMake% = 1
             LOCATE 20, 20: PRINT "Press [SPACE] for make QuickBasic DATA"
            END IF
            COLOR 10
           END IF
         CLOSE #1: Infa% = 1
       END IF
         '  Очистим экран со старой информацией
       IF Infa% = 1 AND NF% = 1 THEN
         COLOR 7: CLS 2: Infa% = 0
         LOCATE 3, 10, 1: PRINT "*.BMP* filename : ";
         COLOR 12
       END IF
      LOCATE 3, 28: PRINT BmName$ + " ";
      LOCATE 3, 28: PRINT BmName$;
      COLOR 7
    END IF
  LOOP UNTIL K$ = CHR$(13) OR K$ = CHR$(27)
 
END
NoFile: NF% = 1: RESUME NEXT
Теперь описание:
Допустим у вас есть картинка в каком-либо графическом формате. Открываете программу Adobe Photoshop, открываете вашу картинку, далее во вкладке Image->Image Size уменьшаете картинку до разрешения 160x100 (можно поэкспериментировать с размером, т.к. я не вкурсе сколько максимально можно засунуть в DATA, просто лучше не увлекаться), далее выбираете опцию Save For Web, выбираете выходящий файл GIF и оптимизируете картинку под 256 цветов. Сохраняете файл. Тыкаем пр. кн. мыши на этом файле, выбираем опцию изменить, откроется Paint, жмём 2 раза CTRL+I и сохраняем картинку(save as) в формате BMP с опцией "256-цветный рисунок".
Теперь открываем конвертер(код выше) и вводим имя вашего файла, по окончанию ввода вы сами поймёте есть ли такой файл или нет, т.к. конвертер автоматически определяет присутствие файла после ввода каждой буквы. Если файл найден, смотрим есть ли внизу жёлтая надпись "Press [SPACE] for make QuickBasic DATA", свидетельствующая о том, что можно создать *.BAS* файл. Нажимаем пробел, ждём окончания конвертирования... И радуемся, в директории должен появиться файл с именем картинки, но расширением ".BAS". В файле забита дата и небольшая подпрограммка, для воспроизведения картинки на 13 режиме экрана.

Как видите ничего сверхъестественного.
Вот забавный пример посмотрите(скриншот специально не выкладываю):
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
  DECLARE SUB ShowBmp ()
 
 '··──  Установка экрана  ──··
 
      SCREEN 13
 
 '··──   Вывод картинки   ──·· 
 
      ShowBmp
 
 END
' Палитра
5 DATA 18,18,16,54,56,59,12,18,31,8,15,28,6,6,5,53,55,57,14,14,12,20,13,12,46
DATA 45,46,10,18,32,9,10,9,14,20,34,25,24,22,17,16,15,26,18,19,35,37,42,40
DATA 39,38,44,46,49,18,22,29,49,50,50,7,13,26,63,63,63,10,16,29,16,22,35,45
DATA 43,41,48,46,45,47,49,50,20,20,18,30,33,35,57,57,58,56,58,61,50,52,54,42
DATA 40,39,22,24,27,13,13,11,21,25,34,23,24,22,28,28,28,13,20,33,8,9,7,8,14
DATA 27,33,32,31,46,44,43,28,28,26,30,30,30,36,35,34,32,32,32,8,16,30,26,26
DATA 26,11,18,31,60,61,63,38,40,43,33,35,37,32,31,30,48,51,52,59,60,62,13,20
DATA 34,26,28,28,35,34,35,25,12,11,39,37,36,24,25,24,18,24,37,53,54,54,42,41
DATA 40,5,4,3,30,31,33,13,19,32,13,16,17,13,19,33,29,34,28,43,45,46,12,18,32
DATA 37,36,36,2,2,2,50,48,47,37,36,35,34,36,38,14,20,33,55,57,60,9,6,5,9,12
DATA 19,11,17,31,41,43,45,11,17,30,51,54,56,58,59,61,34,33,33,15,21,35,26,26
DATA 24,29,33,43,22,23,21,14,10,9,22,23,22,0,0,0,7,9,9,14,19,32,19,19,18,26
DATA 29,37,15,15,14,15,21,33,5,2,2,29,30,30,39,39,39,41,40,40,15,20,30,27,28
DATA 26,10,16,30,9,15,29,58,59,62,7,7,6,10,17,31,14,20,32,30,30,29,12,19,33
DATA 25,26,25,25,26,26,12,19,32,21,18,17,20,21,20,21,22,20,12,17,30,11,11,9
DATA 26,28,34,28,27,25,20,26,37,30,29,28,19,24,35,16,23,36,10,17,30,25,31,44
DATA 56,57,60,16,22,33,52,50,49,25,27,28,24,15,16,16,21,32,61,62,63,33,34,35
DATA 37,38,39,6,11,20,28,29,29,33,33,34,34,19,20,43,43,43,39,38,37,13,19,31
DATA 2,3,1,22,29,42,35,34,33,15,21,34,18,22,32,24,26,33,14,21,33,29,31,37,14
DATA 22,36,29,30,29,19,20,20,4,7,12,36,37,38,13,8,7,60,60,61,21,22,22,16,18
DATA 21,43,42,41,3,3,2,41,41,42,11,12,12,10,16,26,14,20,33,17,23,34,13,18,32
DATA 1,1,0,12,17,29,8,10,14,1,2,2,53,56,59,22,27,39,2,1,0,46,48,47,12,19,34
DATA 12,18,28,57,59,62,40,39,40,41,42,43,62,61,63,33,34,33,13,17,25,36,35,36
DATA 9,16,31,21,15,14,53,52,51,30,36,48,16,20,13,15,20,32,15,19,28,26,25,24
DATA 11,18,33,34,34,34,23,27,34,15,21,32,36,42,39,20,21,22,15,21,33,11,16,29
DATA 14,21,32,55,54,54,38,37,38,59,59,59,11,15,24,29,16,16,45,44,44,61,62,61
DATA 32,31,32,42,41,42,14,19,34,48,48,48,60,59,61,60,59,57,20,24,32,43,45,43
DATA 22,21,19,56,56,57,41,42,41,56,57,62,30,29,30,24,25,25,4,4,4,11,17,29,11
DATA 19,33,52,52,52,11,17,32,15,20,25,35,36,35,13,18,33,3,3,3,17,20,11,10,16
DATA 31,59,59,55,17,9,9,37,38,37,50,52,50,27,27,27,60,60,60,62,63,62,11,20
DATA 28,8,15,31,58,56,60,20,19,21,23,24,26,20,24,16,55,56,56,32,15,15,15,24
DATA 19,9,17,31,23,27,36
' Данные
10 DATA 107,231,67,231,107,129,67,129,171,171,72,78,78,78,78,88,169,150,112,112
DATA 100,112,169,112,2,146,112,169,100,112,146,2,146,146,169,171,2,96,171,96
DATA 23,23,100,169,23,100,203,67,67,96,121,96,100,150,11,100,23,23,153,23,23
DATA 23,100,128,128,128,128,100,203,128,23,153,150,170,100,23,128,88,88,128
DATA 128,128,62,62,150,169,203,153,150,117,203,62,23,23,23,62,23,170,127,62
DATA 169,203,88,88,38,153,128,23,194,205,128,23,23,100,23,150,23,128,23,62
DATA 62,62,125,177,177,177,148,62,125,177,177,130,148,148,130,148,130,130,130
DATA 130,130,90,130,130,90,192,192,192,192,130,130,90,130,90,192,90,130,130
DATA 90,192,107,237,231,231,72,129,129,72,204,84,72,114,69,49,78,67,67,150
DATA 169,96,194,96,194,169,2,146,150,23,23,96,112,117,146,112,100,194,146,171
DATA 78,78,67,2,96,100,100,169,169,67,96,67,96,169,150,150,150,150,23,203,169
DATA 150,150,100,150,62,128,128,128,23,88,23,23,23,170,23,112,128,128,203,38
DATA 23,128,62,170,23,194,132,150,100,88,88,203,88,23,128,62,205,23,62,62,150
DATA 100,23,169,88,153,38,203,23,100,132,112,112,112,169,100,194,146,112,146
DATA 23,132,194,194,128,125,62,128,203,128,125,125,62,125,62,62,62,125,62,125
DATA 62,177,125,177,148,125,148,130,130,148,62,125,177,148,148,148,130,130
DATA 148,130,130,72,72,72,72,117,72,82,108,204,171,111,108,108,84,67,67,121
DATA 96,23,146,146,23,170,2,2,100,169,23,100,121,100,23,100,2,146,194,112,146
DATA 204,2,121,84,100,100,194,169,150,100,96,146,171,67,2,146,100,150,150,150
DATA 100,100,100,132,23,170,170,128,150,153,203,23,132,170,170,132,150,23,23
DATA 23,153,23,128,23,150,132,132,200,112,200,169,23,23,132,132,127,23,23,128
DATA 169,150,150,150,100,100,153,203,23,203,100,170,170,100,146,170,23,112
DATA 100,150,121,84,204,112,62,170,23,150,170,23,169,23,203,203,170,203,62
DATA 146,62,169,100,170,132,170,62,23,128,62,125,150,62,62,153,62,62,62,62
DATA 38,62,125,62,62,88,215,231,82,117,69,117,69,171,171,171,234,72,82,171
DATA 121,171,112,112,67,146,121,121,67,112,2,96,112,169,121,78,96,38,67,2,67
DATA 112,100,112,204,2,96,2,146,146,112,146,146,112,112,2,2,96,112,96,100,169
DATA 100,23,112,67,169,23,100,112,23,23,169,78,203,203,203,100,100,170,150
DATA 150,23,150,128,150,169,23,62,150,150,23,132,23,23,132,146,200,125,200
DATA 23,23,128,128,170,100,150,169,23,203,128,205,100,150,62,170,150,23,100
DATA 2,100,127,23,112,132,112,23,23,203,146,169,194,112,112,169,2,112,100,121
DATA 203,112,100,228,170,62,100,203,23,96,96,170,23,2,169,62,23,128,153,38
DATA 67,129,203,78,88,88,38,215,114,72,114,69,117,82,38,121,22,171,171,72,78
DATA 171,121,78,96,96,150,84,84,204,2,169,169,67,96,171,112,2,2,23,153,67,2
DATA 150,194,169,194,112,2,204,146,2,146,112,96,169,112,146,100,112,146,194
DATA 150,23,100,78,78,23,150,150,150,23,128,128,23,23,88,203,153,100,150,169
DATA 11,78,100,170,146,23,23,205,203,128,170,150,203,23,150,100,170,62,205
DATA 88,62,23,23,203,23,62,128,23,203,203,23,150,100,194,100,100,23,146,194
DATA 170,146,194,194,146,200,169,146,146,228,2,2,146,100,2,2,169,2,84,100,100
DATA 146,2,170,112,100,100,100,150,146,100,146,146,2,67,23,88,153,23,108,49
DATA 203,82,11,117,72,72,215,117,82,72,72,129,49,72,84,204,2,96,96,2,67,171
DATA 78,100,2,2,67,112,67,2,67,169,67,2,2,96,67,112,2,84,169,150,112,146,2
DATA 146,146,204,96,96,171,96,150,150,112,112,112,194,112,146,169,112,100,150
DATA 169,150,88,128,128,153,128,128,128,128,23,88,100,100,169,23,100,194,127
DATA 170,170,132,205,132,200,205,203,169,150,150,100,112,169,100,88,23,203
DATA 38,205,23,128,23,128,62,128,170,170,112,112,194,228,2,146,112,150,146
DATA 2,2,146,132,105,146,2,112,112,2,112,150,228,2,112,169,108,2,2,169,112
DATA 150,112,2,150,100,173,173,2,96,2,173,112,67,112,153,153,23,228,153,2,228
DATA 117,49,49,189,72,67,72,72,49,82,129,49,117,121,96,96,171,11,78,38,117
DATA 78,171,96,84,84,171,78,171,96,38,78,78,112,67,84,121,2,96,78,67,2,173
DATA 146,84,171,121,67,2,38,78,153,153,67,67,78,96,169,203,146,150,150,194
DATA 112,112,23,200,132,200,132,170,170,132,146,132,127,151,219,219,151,219
DATA 219,151,151,127,127,170,132,132,132,170,151,151,136,132,200,23,23,112
DATA 205,23,23,203,112,23,23,170,23,112,150,62,169,169,112,67,150,169,112,170
DATA 181,194,146,105,228,67,2,146,2,112,2,22,2,96,2,22,112,204,22,100,112,3
DATA 173,112,173,108,204,84,2,146,22,121,2,121,204,2,2,67,146,2,121,228,204
DATA 67,9,231,215,215,82,49,114,114,72,38,171,171,171,84,67,78,72,49,67,78
DATA 96,72,84,107,82,78,38,114,38,88,169,96,112,2,173,78,38,67,2,2,121,2,121
DATA 171,72,72,67,72,11,38,2,49,38,153,38,38,100,2,146,100,194,112,146,200
DATA 200,136,105,151,219,151,136,219,35,219,35,123,98,123,154,154,154,98,154
DATA 98,152,35,255,35,219,199,199,35,132,132,170,194,170,23,23,112,100,23,150
DATA 112,112,146,169,146,100,169,2,23,100,2,194,146,127,170,200,132,2,203,146
DATA 22,2,146,22,2,146,100,204,204,100,228,3,84,22,40,2,146,204,108,108,204
DATA 204,173,2,2,22,22,22,22,146,22,2,121,204,173,204,121,215,11,11,215,231
DATA 69,69,117,114,11,96,78,67,171,49,38,38,117,67,171,171,78,169,100,96,171
DATA 67,114,153,23,11,169,150,67,169,72,117,88,78,67,84,121,2,78,78,72,231
DATA 38,88,67,2,117,67,169,38,38,11,23,136,18,18,151,152,98,98,154,154,28,52
DATA 154,154,154,52,77,159,184,8,216,25,75,19,8,8,216,17,166,83,51,15,15,52
DATA 98,255,35,151,125,127,132,194,194,23,132,132,128,150,23,150,194,173,228
DATA 203,88,96,112,146,150,132,146,150,2,203,67,2,2,112,146,2,146,173,194,121
DATA 2,146,22,22,204,40,121,173,22,2,173,228,22,22,121,2,112,2,204,204,173
DATA 146,22,173,22,121,22,121,22,171,234,215,11,215,49,234,96,215,234,96,171
DATA 2,67,38,69,117,78,72,78,171,67,171,78,23,150,96,67,11,150,153,88,67,78
DATA 150,78,38,78,72,72,171,2,84,67,121,96,215,78,150,203,117,69,67,194,200
DATA 200,132,125,154,159,159,207,183,214,211,24,24,24,164,32,24,42,25,133,133
DATA 75,75,25,42,42,25,25,25,25,133,75,75,133,75,133,42,164,183,159,52,123
DATA 152,35,219,132,151,200,105,100,128,112,150,200,194,203,23,49,121,100,23
DATA 194,204,112,112,96,23,2,2,146,228,22,2,146,22,121,173,173,40,204,22,2
DATA 204,2,146,22,108,84,22,108,121,121,146,173,204,108,40,146,173,22,108,22
DATA 173,204,22,22,237,234,72,11,11,49,237,215,215,96,96,171,67,69,49,38,38
DATA 23,88,78,100,150,150,100,169,112,100,100,78,153,2,67,112,153,112,88,78
DATA 38,117,67,150,11,121,121,84,2,112,117,72,67,153,153,11,170,219,154,52
DATA 159,144,211,42,164,24,32,32,45,41,87,45,45,149,149,16,164,164,32,24,42
DATA 42,42,42,64,24,32,64,64,32,32,24,32,16,164,164,164,64,240,103,52,152,152
DATA 35,151,194,203,205,112,100,23,100,67,88,67,150,62,146,2,100,132,96,112
DATA 146,2,203,112,228,2,150,146,2,40,2,2,228,112,204,204,22,67,22,22,40,40
DATA 108,40,108,173,108,108,40,146,121,173,40,22,40,22,121,22,40,40,114,82
DATA 111,82,72,72,72,215,67,72,69,88,67,72,69,78,67,67,234,72,150,67,67,67
DATA 121,72,78,96,67,2,38,150,100,169,169,78,38,38,72,171,67,2,2,72,69,2,228
DATA 38,69,117,38,205,132,255,15,214,25,24,32,16,41,43,43,89,12,221,221,91
DATA 12,126,113,41,41,149,149,16,32,164,24,42,32,76,45,149,145,24,32,145,188
DATA 87,45,149,87,149,76,76,16,103,207,52,28,98,219,200,105,128,128,38,38,128
DATA 205,146,62,23,2,2,150,121,121,2,22,2,2,2,121,150,171,171,171,121,169,112
DATA 112,121,2,22,146,171,22,2,22,22,173,173,204,108,22,173,2,171,2,204,22
DATA 40,40,228,40,40,173,3,11,82,82,72,72,215,11,72,237,84,78,88,38,72,82,49
DATA 38,117,82,69,69,84,129,117,129,72,38,96,96,96,153,100,100,78,100,96,38
DATA 78,78,84,96,121,22,67,11,23,205,2,69,11,194,151,98,28,214,24,16,53,124
DATA 12,12,91,13,99,99,13,13,6,13,97,12,126,53,149,76,45,45,76,76,45,41,41
DATA 41,41,149,145,16,198,46,142,58,213,53,41,145,87,53,87,32,32,104,166,52
DATA 35,151,132,146,100,112,23,205,203,170,112,150,67,112,2,171,2,173,112,112
DATA 204,150,100,84,234,67,153,228,228,112,228,22,228,117,22,2,84,84,22,204
DATA 121,2,108,22,3,22,204,121,112,2,108,121,84,84,40,108,3,72,117,117,117
DATA 114,11,11,234,69,215,11,38,78,72,114,231,82,67,117,72,38,38,11,88,117
DATA 69,11,150,11,67,78,96,150,23,150,150,69,67,117,204,78,171,2,72,82,203
DATA 23,203,215,136,219,154,183,24,60,124,12,27,27,118,13,13,13,99,99,13,167
DATA 0,93,36,221,221,97,48,45,145,45,53,44,126,53,113,149,45,87,58,45,149,213
DATA 44,44,46,53,41,213,198,44,37,87,145,76,60,211,83,52,152,219,195,132,203
DATA 78,23,169,169,78,88,153,23,171,171,96,169,112,121,100,204,100,11,38,2
DATA 67,2,84,2,84,2,84,67,121,22,204,84,2,2,3,108,2,40,20,108,3,121,84,108
DATA 228,146,84,22,22,22,56,69,114,56,215,56,114,69,150,150,38,72,69,78,11
DATA 72,82,38,38,72,117,38,82,107,82,69,69,215,88,67,67,38,150,96,2,78,78,84
DATA 49,171,171,96,78,84,107,49,112,146,136,255,77,184,24,42,32,61,97,97,0
DATA 13,99,99,13,99,6,167,97,36,91,6,4,4,34,34,0,12,149,240,207,58,149,188
DATA 149,46,156,37,41,41,213,225,225,213,113,126,124,37,58,37,89,113,149,60
DATA 207,164,25,216,83,154,35,136,23,150,194,100,153,203,153,117,84,150,150
DATA 112,3,203,2,2,169,96,171,107,117,38,49,108,67,49,108,84,2,84,3,3,108,108
DATA 40,146,22,3,2,22,108,3,22,3,107,78,2,108,3,2,56,56,56,11,11,38,49,78,23
DATA 215,69,78,69,11,215,117,111,72,67,11,128,117,107,72,11,215,11,215,88,88
DATA 69,69,11,67,78,78,78,49,49,204,2,100,171,84,2,49,67,194,98,51,8,42,24
DATA 145,76,149,0,97,13,0,13,13,99,167,167,97,116,196,27,122,4,4,122,34,13
DATA 6,97,106,213,149,41,113,43,43,37,37,43,43,44,46,126,156,48,44,156,115
DATA 46,156,242,196,113,58,46,45,64,211,8,216,51,152,136,146,150,169,153,88
DATA 88,49,78,150,171,22,78,23,2,38,67,38,38,117,153,38,2,49,150,129,108,2
DATA 49,228,129,22,204,108,2,121,108,22,82,108,72,22,40,22,108,2,22,204,204
DATA 84,229,56,215,69,56,69,72,114,88,11,11,11,171,78,117,117,56,56,49,117
DATA 67,117,38,11,69,114,69,114,38,11,11,69,69,78,11,69,38,49,67,84,72,96,121
DATA 121,146,2,96,151,52,216,25,164,145,16,126,87,12,97,0,0,0,99,122,99,93
DATA 61,119,157,119,0,110,122,39,110,39,110,6,122,6,27,91,61,196,91,196,89
DATA 106,156,44,213,106,89,106,213,113,124,44,44,242,37,89,43,41,213,87,32
DATA 32,145,211,83,33,18,205,150,128,153,153,11,100,96,84,204,128,203,153,38
DATA 2,100,117,38,67,117,38,88,23,117,78,153,117,49,67,67,107,67,117,3,20,84
DATA 129,108,108,204,121,84,67,107,107,84,204,108,56,229,229,72,114,56,114
DATA 49,88,150,78,67,171,234,114,117,129,82,69,38,117,11,38,72,67,2,231,72
DATA 78,78,78,69,11,11,88,171,2,171,67,69,117,72,171,96,78,2,146,35,51,25,64
DATA 60,32,42,41,113,53,93,27,0,99,6,99,61,115,120,0,0,97,110,4,122,39,165
DATA 65,227,39,10,6,36,61,89,12,36,115,91,106,213,44,37,106,93,48,156,37,44
DATA 213,37,48,61,37,113,46,58,198,58,104,188,113,144,211,123,105,194,23,69
DATA 194,105,112,215,22,112,100,49,88,78,129,112,2,203,153,38,38,88,49,203
DATA 23,72,82,78,117,67,38,72,107,129,72,67,129,38,153,38,153,67,129,107,69
DATA 72,2,3,56,56,114,11,114,69,117,107,171,78,49,82,231,237,117,69,108,204
DATA 69,78,11,56,72,129,67,96,171,117,11,11,38,38,117,38,11,171,204,78,11,117
DATA 82,49,67,67,150,194,151,154,183,164,76,76,25,45,196,12,53,196,27,0,13
DATA 119,115,106,119,0,13,36,10,110,10,10,110,165,4,4,167,10,0,48,36,120,97
DATA 61,115,61,242,213,44,116,106,106,106,115,93,124,44,44,48,89,156,44,46
DATA 46,58,213,188,103,41,242,166,83,255,127,150,67,112,112,62,171,121,128
DATA 112,84,2,100,84,169,67,38,107,107,49,117,38,38,117,82,117,38,72,82,117
DATA 49,117,69,171,49,107,67,49,2,38,82,22,49,11,107,78,2,72,69,114,69,38,69
DATA 67,67,72,129,82,67,171,108,82,49,129,96,171,117,49,49,69,69,72,38,78,11
DATA 38,38,11,38,72,78,69,171,171,72,11,38,38,38,96,2,96,132,154,17,8,32,76
DATA 24,76,12,126,12,221,12,97,97,36,93,120,13,99,97,242,6,110,122,34,122,227
DATA 175,4,99,13,122,97,119,99,13,0,91,36,93,115,48,37,48,61,36,61,242,93,120
DATA 48,156,48,93,115,44,44,225,198,188,233,58,41,196,242,183,28,35,136,121
DATA 38,146,38,107,150,23,22,84,67,2,100,100,2,38,128,203,23,153,84,84,84,117
DATA 11,82,49,49,107,129,228,204,231,22,129,100,153,49,78,82,129,49,117,2,40
DATA 228,215,69,72,72,72,69,117,67,38,82,72,121,204,108,49,49,117,171,84,84
DATA 72,69,56,38,38,72,117,11,38,38,78,117,78,38,72,11,96,117,11,38,38,96,96
DATA 171,153,125,15,8,24,60,145,24,43,89,27,99,99,0,0,97,13,6,167,13,119,102
DATA 13,175,110,39,10,4,165,74,65,6,13,0,27,34,34,13,0,97,119,13,27,61,91,120
DATA 97,97,61,48,156,36,119,37,225,48,36,115,66,57,141,139,188,142,188,196
DATA 97,126,139,152,151,132,62,23,22,96,169,173,22,22,2,121,150,112,67,78,2
DATA 22,121,112,67,23,203,88,82,84,129,129,49,78,38,2,121,84,78,67,49,153,23
DATA 78,67,49,72,121,22,146,78,69,114,117,82,117,67,117,78,72,72,231,108,204
DATA 72,49,117,67,171,84,171,69,82,69,69,38,69,114,38,128,78,11,78,72,215,150
DATA 67,67,11,38,78,2,171,11,62,35,15,8,164,45,45,198,196,196,6,122,118,99
DATA 10,4,39,6,6,93,44,162,94,227,110,4,110,74,74,4,122,13,99,99,122,122,34
DATA 6,13,0,13,122,13,0,99,99,34,27,36,61,113,37,106,48,156,213,48,36,66,46
DATA 213,233,183,46,225,43,12,12,240,28,35,127,62,112,146,170,100,112,112,121
DATA 2,112,100,84,2,2,204,100,112,2,2,228,78,67,2,121,204,2,67,67,2,84,107
DATA 171,2,22,2,84,107,49,129,11,88,112,23,228,38,11,88,72,69,117,38,67,78
DATA 84,234,215,204,22,22,108,121,67,171,49,82,72,69,11,69,11,215,69,38,117
DATA 11,11,38,117,215,78,231,215,88,23,78,117,78,23,62,199,77,164,32,60,58
DATA 213,12,0,13,6,99,122,110,110,34,6,34,61,119,227,94,4,227,227,4,227,4,10
DATA 34,34,122,122,122,122,34,122,13,97,0,6,6,13,13,27,13,13,119,91,115,44
DATA 198,225,44,44,106,242,141,233,102,58,138,66,225,213,43,221,113,77,152
DATA 35,181,96,150,127,150,96,112,23,23,2,108,38,128,153,96,171,169,67,108
DATA 117,117,82,117,67,72,72,84,171,78,84,204,204,84,117,107,3,107,72,49,69
DATA 82,67,96,228,229,23,11,38,23,23,11,171,169,171,237,171,22,121,49,49,22
DATA 20,204,69,49,69,72,11,11,78,215,69,69,49,38,38,38,78,11,67,234,11,128
DATA 23,72,78,150,23,127,154,184,164,16,76,207,58,61,27,6,34,122,10,110,4,110
DATA 39,99,6,4,94,172,165,172,165,165,65,10,10,122,122,10,110,122,34,6,0,13
DATA 0,91,119,97,120,0,27,36,91,99,120,115,106,142,46,225,213,186,37,57,77
DATA 141,73,142,46,141,141,115,221,43,159,98,18,146,112,100,96,67,150,150,121
DATA 121,2,78,23,23,117,171,121,96,234,69,215,82,231,82,72,38,38,67,67,117
DATA 117,107,40,67,38,108,107,49,49,67,114,82,72,121,22,153,38,38,153,11,88
DATA 150,96,171,171,107,234,121,121,2,78,67,22,49,78,88,69,69,11,11,96,11,88
DATA 67,117,38,38,38,72,69,215,11,88,11,38,117,117,100,170,199,51,8,64,32,16
DATA 87,73,124,0,99,13,13,6,34,122,34,0,13,122,110,4,4,110,165,65,4,65,10,10
DATA 110,122,34,10,10,99,99,97,27,119,36,36,115,106,93,36,48,48,93,97,61,37
DATA 37,44,198,44,44,141,116,102,213,186,240,66,134,134,61,27,221,46,154,18
DATA 151,203,153,2,88,78,2,2,150,100,49,228,38,38,38,2,121,215,215,69,49,72
DATA 111,117,88,49,67,117,67,23,82,49,78,84,84,38,82,82,107,108,82,204,20,100
DATA 229,38,153,153,38,67,171,171,171,171,107,49,129,117,117,121,67,169,121
DATA 121,171,69,38,117,117,38,11,153,38,78,38,153,78,78,69,69,11,78,72,72,69
DATA 2,194,127,255,15,211,164,145,145,149,126,196,27,196,126,126,91,91,118
DATA 13,13,99,10,10,122,34,122,4,110,10,10,10,6,167,6,97,6,34,97,61,61,162
DATA 61,226,48,141,242,126,213,46,141,48,119,91,106,44,141,142,142,213,225
DATA 242,106,225,198,159,52,138,52,57,13,118,48,28,152,136,112,203,245,112
DATA 121,78,62,117,82,49,153,117,69,69,215,88,69,117,72,38,82,72,117,49,229
DATA 38,117,117,22,84,11,82,3,38,228,22,107,237,237,237,107,204,78,38,88,128
DATA 38,117,117,67,88,171,121,72,114,72,117,107,121,2,121,171,108,121,67,49
DATA 38,114,88,153,117,78,38,117,72,11,11,129,69,88,67,72,117,117,171,194,127
DATA 255,139,211,32,16,104,16,16,16,32,16,45,41,126,12,118,13,0,99,34,34,122
DATA 122,34,122,39,122,167,6,13,157,157,120,162,13,162,162,115,48,48,48,242
DATA 57,57,225,213,213,46,37,97,97,116,44,102,141,58,44,242,44,106,44,198,138
DATA 188,207,166,52,249,248,249,57,123,219,170,128,203,100,62,128,72,117,129
DATA 88,128,49,215,128,11,49,69,38,88,67,231,69,72,82,56,82,82,49,228,2,38
DATA 129,69,67,108,22,204,82,69,3,107,78,22,38,38,11,38,11,11,69,171,171,171
DATA 82,111,67,69,108,84,2,22,96,121,171,100,11,49,49,49,117,78,38,72,117,78
DATA 128,72,38,11,11,171,2,49,49,84,136,151,123,184,24,16,32,75,19,25,64,16
DATA 32,145,41,43,89,12,221,12,118,13,13,6,0,120,61,61,162,162,162,162,48,106
DATA 116,106,48,106,48,61,242,116,242,225,116,106,115,115,61,37,53,221,13,61
DATA 106,116,225,138,141,213,57,48,44,213,73,198,142,139,83,66,18,33,33,152
DATA 199,151,169,155,23,153,82,153,155,38,153,117,114,11,69,62,69,38,153,38
DATA 49,82,11,11,49,49,111,117,69,2,49,111,72,69,108,49,84,129,117,69,82,107
DATA 107,78,11,72,49,88,78,72,117,69,171,67,129,108,84,107,22,40,84,67,204
DATA 121,2,2,67,96,49,107,72,100,67,72,117,23,11,78,88,96,171,171,2,82,72,150
DATA 170,35,15,17,164,32,64,75,75,64,16,16,76,113,37,113,113,113,43,12,12,12
DATA 91,93,37,213,37,46,142,142,142,142,46,106,57,141,44,141,48,242,116,61
DATA 48,48,226,116,61,91,36,12,36,89,91,120,61,48,37,141,156,46,48,226,36,225
DATA 233,213,141,52,83,28,18,151,219,219,199,35,100,128,88,117,153,128,56,128
DATA 88,49,38,88,11,11,56,38,49,38,129,117,107,129,117,107,114,72,111,108,117
DATA 237,82,111,117,129,3,107,129,108,72,129,49,11,231,234,72,67,72,82,38,67
DATA 67,171,107,96,121,40,3,40,204,84,40,121,96,121,107,107,117,38,11,23,121
DATA 204,88,88,117,38,38,171,171,100,169,2,2,132,151,35,77,8,64,60,145,211
DATA 8,211,164,16,76,41,41,87,149,149,113,12,12,44,46,213,58,198,46,77,139
DATA 52,77,66,57,57,44,116,226,116,141,48,120,120,91,119,91,120,119,97,0,119
DATA 36,61,242,93,115,106,48,106,48,156,213,115,226,46,141,242,226,142,139
DATA 51,255,127,62,200,151,127,203,56,88,125,128,114,56,38,11,11,11,155,128
DATA 229,114,114,38,49,38,38,107,108,72,117,72,82,111,153,153,82,114,72,49
DATA 107,107,82,107,72,117,111,88,72,215,11,82,49,117,38,231,82,72,231,117
DATA 96,108,108,121,22,108,204,2,84,171,78,171,72,78,38,72,67,96,88,11,67,67
DATA 78,88,69,2,2,171,96,2,136,151,219,77,8,16,60,76,104,25,42,164,16,145,103
DATA 103,73,113,126,225,126,225,213,58,233,233,142,58,139,142,233,233,138,46
DATA 138,213,213,233,44,93,0,162,61,36,196,120,0,99,34,122,122,99,93,102,37
DATA 37,37,226,226,93,44,37,36,102,102,57,115,36,48,57,139,15,35,23,128,169
DATA 146,153,88,153,128,114,229,38,114,11,56,23,128,38,88,38,11,128,82,49,38
DATA 38,49,49,11,128,117,56,56,49,111,231,114,3,107,49,114,72,117,114,11,56
DATA 47,231,237,107,82,78,72,3,129,234,72,84,108,22,204,3,3,3,67,67,84,49,11
DATA 67,72,38,69,67,11,23,153,67,117,67,78,11,88,49,121,96,169,146,151,35,152
DATA 139,42,45,149,104,211,25,42,64,32,60,76,188,53,126,37,46,73,183,73,58
DATA 159,159,58,142,77,233,233,138,46,44,102,52,159,240,233,233,37,36,97,99
DATA 167,110,235,94,94,178,147,4,99,116,44,213,44,48,93,61,156,116,36,116,134
DATA 134,116,61,115,36,138,51,98,127,150,78,100,153,88,23,78,117,56,56,69,117
DATA 38,88,56,11,11,129,215,128,114,72,114,117,114,117,69,117,56,155,229,229
DATA 9,155,56,82,49,38,56,38,117,11,11,117,155,3,204,72,129,111,114,49,107
DATA 237,82,108,84,171,40,40,108,20,22,22,84,49,38,72,72,67,38,67,114,38,117
DATA 38,67,38,69,38,38,38,67,171,169,132,219,199,154,83,42,60,145,144,8,25
DATA 24,32,32,145,41,213,73,188,213,188,73,198,233,198,213,213,142,198,139
DATA 58,46,156,141,44,46,141,102,142,198,198,159,104,213,99,4,158,81,93,13
DATA 39,65,178,4,157,225,142,198,37,162,116,156,141,36,48,57,134,213,156,61
DATA 36,44,211,71,35,105,112,169,2,67,2,121,84,11,114,9,49,117,11,11,11,38
DATA 49,11,197,72,69,88,9,72,69,56,69,56,114,229,229,229,11,237,215,69,229
DATA 229,47,155,155,56,56,56,82,69,69,3,108,129,72,72,111,107,129,84,204,3
DATA 20,22,84,40,3,38,117,72,82,69,117,38,38,82,117,38,67,78,67,67,67,38,153
DATA 78,228,194,132,35,123,15,25,42,164,42,42,164,24,64,16,16,188,87,233,73
DATA 188,58,198,142,225,213,73,188,198,44,233,58,156,37,115,61,115,213,46,142
DATA 141,225,58,141,188,71,139,202,154,26,29,139,167,6,80,178,6,61,213,159
DATA 102,115,93,115,115,119,115,242,141,142,106,119,97,91,149,8,52,195,2,84
DATA 2,38,121,84,84,38,49,82,107,67,82,107,117,82,11,56,111,111,38,72,56,117
DATA 108,72,117,117,82,117,117,11,129,107,82,82,82,107,117,56,114,11,38,49
DATA 49,67,84,22,49,49,107,82,72,237,107,108,3,107,40,107,231,3,3,107,84,84
DATA 67,38,49,49,72,114,117,69,150,169,171,117,38,112,205,100,200,105,219,219
DATA 152,184,75,24,42,25,42,164,32,16,32,76,149,46,240,159,142,207,142,242
DATA 44,233,213,46,46,138,46,213,44,156,61,119,226,46,66,142,141,102,225,44
DATA 44,142,83,52,134,196,36,95,235,92,190,101,39,0,141,139,233,115,0,97,119
DATA 120,61,242,213,242,99,39,4,10,91,139,83,219,146,121,38,117,38,107,49,72
DATA 204,22,204,121,84,107,78,69,82,129,82,229,117,9,9,47,3,108,49,117,111
DATA 108,67,67,49,3,72,117,84,107,111,108,38,38,72,129,49,228,22,2,96,234,189
DATA 107,82,108,107,129,49,49,107,82,107,108,3,40,107,84,107,107,49,72,72,11
DATA 69,67,171,100,69,49,82,171,200,132,136,151,152,66,183,216,25,24,25,75
DATA 42,164,164,32,104,103,103,198,46,198,73,240,44,242,37,116,61,242,44,44
DATA 141,37,226,157,162,141,138,44,242,106,57,44,37,225,213,213,58,166,186
DATA 91,110,94,94,80,190,160,4,99,115,159,183,44,115,162,120,97,36,225,225
DATA 34,147,165,101,34,113,103,54,77,105,146,108,129,38,82,3,3,49,108,121,108
DATA 3,129,69,49,107,3,82,108,129,111,108,107,69,117,117,49,49,67,49,108,3
DATA 11,72,82,49,82,82,107,107,49,107,78,49,228,228,72,231,107,69,49,49,114
DATA 117,49,129,69,82,3,108,82,108,3,3,3,237,82,72,171,171,117,117,117,96,169
DATA 169,171,2,100,170,127,35,123,52,144,216,25,42,42,25,42,24,16,32,16,60
DATA 188,198,46,58,198,213,37,242,225,142,116,93,37,37,120,162,120,119,134
DATA 213,142,183,102,48,116,115,48,48,242,106,115,242,186,240,58,36,4,94,65
DATA 7,92,178,10,48,144,216,184,44,116,93,157,115,46,119,34,34,10,92,190,213
DATA 58,184,54,35,105,2,204,228,84,84,49,107,49,82,129,129,129,108,108,129
DATA 107,108,84,2,72,72,49,84,171,171,72,69,117,129,49,88,82,20,108,150,107
DATA 237,40,204,204,129,84,117,56,9,189,111,215,67,117,56,69,117,3,3,72,82
DATA 107,3,189,107,108,237,231,72,72,234,171,67,67,38,78,78,169,150,194,23
DATA 170,151,35,35,123,51,19,75,75,75,25,25,24,32,16,145,60,188,73,188,213
DATA 142,58,233,213,44,58,44,102,57,44,37,93,120,93,48,102,138,183,46,66,46
DATA 116,93,115,36,61,36,61,116,116,102,44,58,52,202,13,190,160,101,13,43,188
DATA 211,211,139,52,102,57,141,58,99,10,110,65,92,34,242,87,138,26,123,181
DATA 121,84,22,129,129,108,108,108,72,107,107,3,129,108,108,3,204,204,171,237
DATA 107,108,22,22,2,204,117,108,129,117,129,3,84,2,84,171,3,121,2,2,2,82,181
DATA 229,9,254,9,129,117,38,237,111,82,111,129,111,82,72,3,246,189,107,82,237
DATA 3,72,69,72,82,49,11,112,112,200,170,151,125,255,199,35,123,159,8,19,75
DATA 75,75,75,42,211,32,60,60,188,87,213,213,58,198,46,44,44,142,213,242,156
DATA 44,61,115,93,61,57,46,233,138,159,159,134,93,36,36,116,156,61,106,48,120
DATA 36,116,89,44,102,213,53,43,196,61,89,36,13,48,233,166,166,183,77,102,58
DATA 36,4,178,178,80,39,0,60,37,71,51,195,121,40,67,121,108,3,107,67,129,107
DATA 49,108,49,108,3,84,171,171,108,108,22,108,22,22,204,2,108,3,84,108,20
DATA 22,150,40,108,3,40,78,108,121,204,108,154,168,129,82,189,254,49,47,111
DATA 231,72,82,237,111,111,82,3,189,237,108,231,108,107,129,72,72,114,69,78
DATA 100,170,170,219,35,152,123,123,123,28,8,133,75,75,75,25,25,25,25,164,207
DATA 60,145,60,46,207,103,142,46,46,156,48,36,120,115,115,93,93,61,106,57,102
DATA 159,103,138,138,213,37,48,36,93,61,61,115,162,36,48,36,61,106,115,120
DATA 97,120,97,13,0,0,91,27,48,139,71,26,71,139,44,41,99,94,94,65,4,122,37
DATA 156,183,15,195,22,22,204,2,3,108,3,82,72,82,49,108,108,204,84,96,72,204
DATA 121,108,40,40,108,121,84,3,108,204,204,40,108,67,107,204,107,20,72,108
DATA 84,11,11,49,247,15,209,40,111,197,254,9,114,189,47,3,82,231,82,189,3,47
DATA 189,189,231,189,3,107,72,117,11,215,129,67,127,35,35,123,152,66,77,144
DATA 216,75,75,75,42,42,42,164,32,16,60,16,207,149,53,188,73,198,37,37,242
DATA 48,61,119,91,115,115,120,97,116,102,138,138,213,198,46,225,46,116,242
DATA 134,226,120,162,61,61,61,119,162,162,120,115,91,119,119,157,37,41,41,43
DATA 36,48,141,159,26,54,19,211,58,58,163,95,4,4,34,43,186,183,15,195,146,146
DATA 108,84,204,22,108,107,108,129,129,40,22,84,72,129,49,82,108,20,22,112
DATA 173,121,22,108,49,67,40,40,171,108,3,72,40,20,47,49,111,3,107,3,238,208
DATA 83,187,40,197,197,111,111,189,246,231,197,237,231,246,189,189,47,189,82
DATA 189,107,117,117,114,114,69,11,67,105,35,255,123,28,71,216,25,75,75,42
DATA 42,42,25,75,25,64,45,113,87,183,104,103,45,87,44,242,242,106,115,120,97
DATA 91,120,120,225,225,36,57,142,102,48,93,242,198,213,61,226,141,57,57,116
DATA 61,115,115,120,120,119,97,97,97,36,119,48,103,240,41,36,196,58,141,138
DATA 139,17,216,214,8,144,166,139,138,37,89,73,240,139,15,18,194,204,204,108
DATA 22,204,204,108,20,129,107,108,108,40,129,3,108,107,108,22,121,108,108
DATA 20,22,49,107,3,22,3,108,40,84,108,20,84,129,20,20,3,237,82,238,238,218
DATA 83,194,3,237,189,107,111,189,111,189,47,254,246,254,9,9,9,197,237,111
DATA 49,38,78,11,150,23,23,151,219,98,159,211,216,75,75,25,42,24,164,42,75
DATA 75,25,32,76,53,43,149,183,207,87,44,225,58,186,37,61,97,162,120,0,48,102
DATA 66,44,61,61,48,120,13,13,61,37,57,36,36,116,48,48,106,93,119,120,120,93
DATA 120,119,119,119,61,106,44,106,113,103,8,144,66,116,138,73,220,184,184
DATA 71,144,19,17,184,233,58,213,103,77,195,121,108,129,107,129,108,84,84,121
DATA 84,40,107,108,40,20,204,22,20,20,22,204,22,3,129,2,22,3,20,40,108,40,3
DATA 20,40,204,3,3,20,3,3,3,69,218,218,29,5,54,127,20,197,229,9,189,47,189
DATA 47,189,189,9,254,9,229,197,231,107,49,67,100,150,170,127,35,98,52,83,230
DATA 133,75,211,25,25,24,24,32,24,25,42,42,24,145,87,126,242,58,188,53,225
DATA 141,225,141,37,141,142,142,156,113,46,37,102,44,116,91,61,27,99,110,110
DATA 6,97,97,97,36,162,36,61,120,93,120,119,157,97,0,0,93,116,48,97,97,97,36
DATA 233,8,138,57,102,52,166,71,183,71,144,19,230,19,241,166,207,240,77,136
DATA 146,2,49,69,129,129,82,107,82,82,47,3,3,20,108,204,40,108,3,204,204,3
DATA 129,84,22,129,20,108,129,108,3,20,204,108,20,40,40,204,40,3,107,108,218
DATA 218,217,29,55,5,199,168,229,9,246,189,189,189,189,9,47,254,9,114,215,96
DATA 67,67,112,146,146,127,255,154,51,19,19,75,75,25,75,24,164,164,164,64,64
DATA 24,42,42,24,24,32,188,44,46,149,41,44,46,225,225,213,58,139,139,58,44
DATA 44,156,116,115,93,27,27,97,99,122,110,65,39,13,119,99,0,0,13,119,120,13
DATA 6,99,99,0,13,36,97,99,110,39,0,167,0,138,233,61,134,102,52,139,159,159
DATA 220,8,241,8,8,216,104,104,15,219,132,146,72,107,82,129,129,49,114,82,108
DATA 107,108,3,171,3,40,204,22,3,3,108,121,22,40,22,22,22,3,20,3,22,40,40,108
DATA 108,3,108,20,20,82,20,1,1,1,29,238,208,79,255,3,180,47,246,189,246,47
DATA 9,9,9,254,9,11,150,171,96,132,136,105,35,123,51,230,191,133,25,42,24,42
DATA 42,24,32,16,64,64,24,42,24,64,64,164,16,46,37,53,46,46,46,37,242,48,225
DATA 141,141,66,44,48,93,119,27,13,0,97,0,99,97,0,6,10,10,13,27,0,97,97,27
DATA 99,99,97,119,0,119,99,167,6,6,162,0,162,99,10,0,46,162,163,116,28,138
DATA 138,58,144,144,8,19,207,144,214,103,51,219,181,173,108,107,49,107,231
DATA 107,231,3,107,84,3,204,40,20,22,2,3,3,22,20,20,3,204,22,121,40,20,20,204
DATA 20,140,204,40,3,108,20,108,129,3,40,1,79,5,5,29,222,30,176,98,108,108
DATA 246,246,246,9,114,9,189,9,56,153,96,96,23,127,255,35,219,28,17,216,25
DATA 75,25,25,24,32,64,64,16,60,76,32,24,164,32,16,16,60,149,126,115,37,87
DATA 41,43,89,0,99,97,115,134,61,48,162,97,97,0,99,27,27,97,97,27,97,120,13
DATA 6,122,6,0,13,0,13,0,119,120,97,0,6,122,110,99,242,61,162,120,162,36,162
DATA 226,57,167,93,36,13,13,97,226,46,71,104,198,225,46,73,66,195,181,228,121
DATA 2,171,2,204,3,20,20,204,82,108,107,20,3,84,40,108,3,3,22,20,107,84,108
DATA 40,20,67,49,40,20,108,204,108,20,82,129,3,20,40,108,131,29,29,176,176
DATA 1,222,30,176,98,168,72,237,9,9,117,56,114,11,155,150,170,132,170,35,98
DATA 154,51,17,19,42,42,42,164,145,64,145,87,45,149,45,45,145,64,16,60,60,76
DATA 188,73,186,44,53,198,213,44,106,196,27,122,6,61,61,119,93,120,27,27,27
DATA 13,99,99,13,13,99,27,91,97,99,99,97,97,97,0,0,97,119,97,167,39,99,119
DATA 36,97,110,10,167,10,97,36,61,116,116,6,4,39,110,4,4,120,8,104,216,8,104
DATA 71,123,195,200,146,173,22,108,67,171,96,67,2,40,40,107,108,82,111,107
DATA 84,204,204,72,108,3,129,3,20,20,107,107,40,20,108,108,20,3,3,20,3,20,20
DATA 107,117,21,29,222,86,131,1,5,5,79,176,90,2,231,197,9,153,128,88,11,150
DATA 127,125,127,151,35,154,139,19,230,75,25,42,42,164,76,45,60,73,198,213
DATA 41,188,145,16,32,145,76,45,45,149,41,113,53,46,46,44,37,115,91,97,6,122
DATA 119,106,61,120,91,91,119,97,99,122,34,99,0,97,97,120,97,97,27,97,97,120
DATA 120,97,13,34,10,122,6,10,99,61,93,0,10,110,4,39,120,61,102,99,94,165,39
DATA 39,110,37,216,8,104,166,166,51,219,146,2,146,100,22,84,107,111,69,69,67
DATA 150,2,84,107,111,108,82,129,82,107,20,40,82,129,3,107,84,82,40,40,107
DATA 3,20,3,3,20,3,40,107,40,107,107,208,21,217,206,251,29,29,1,5,79,176,90
DATA 96,9,56,155,62,170,146,132,35,199,255,98,28,183,19,133,75,75,133,42,64
DATA 16,32,16,188,198,58,213,242,213,45,16,32,76,41,113,41,41,113,126,196,89
DATA 37,37,242,116,61,36,97,0,97,120,91,27,97,27,27,0,0,0,13,0,97,0,13,0,99
DATA 13,13,0,97,13,0,13,6,10,10,122,99,99,39,39,13,99,99,0,99,10,39,99,61,226
DATA 4,175,110,4,122,58,241,104,36,57,77,66,232,105,2,181,228,228,38,82,72
DATA 111,3,111,2,112,62,72,108,49,38,111,49,111,108,129,49,20,3,49,129,40,108
DATA 72,20,3,40,20,20,108,107,3,3,129,107,3,206,222,29,137,137,243,29,29,222
DATA 251,222,85,15,132,69,88,127,199,132,219,98,154,52,52,183,42,75,75,75,25
DATA 25,25,64,60,76,16,16,213,141,37,48,126,149,207,76,45,41,43,12,12,196,43
DATA 124,12,12,89,196,61,61,120,0,0,0,97,91,91,27,97,0,13,0,97,97,27,0,13,0
DATA 119,97,97,13,13,13,99,99,34,34,10,10,34,6,99,6,4,122,110,110,122,13,0
DATA 0,6,0,93,0,227,65,110,120,183,216,46,213,139,51,219,151,35,255,98,18,187
DATA 146,2,49,111,3,3,108,114,129,78,153,82,108,47,114,117,111,111,3,111,197
DATA 129,3,107,237,20,111,72,20,3,189,82,3,107,3,108,3,3,247,247,222,185,21
DATA 21,21,21,86,222,29,86,5,51,219,151,255,98,98,52,83,17,211,214,24,75,42
DATA 24,24,24,32,32,32,60,45,87,149,213,242,37,156,37,43,41,149,149,53,43,196
DATA 12,12,43,113,196,27,97,91,124,89,115,36,27,13,34,0,91,91,91,120,120,97
DATA 0,27,27,13,27,0,6,34,6,6,34,34,99,13,6,122,39,110,10,122,6,6,122,34,39
DATA 110,39,110,99,162,36,36,36,157,4,165,157,233,183,73,103,166,15,18,187
DATA 136,105,127,35,177,177,90,35,151,200,84,237,197,72,111,69,72,78,82,3,231
DATA 69,108,111,47,229,47,20,111,3,20,108,114,108,3,114,3,3,129,114,117,111
DATA 40,108,21,21,21,137,208,251,222,222,29,222,206,29,251,230,51,52,83,71
DATA 216,216,216,19,24,164,25,133,42,24,164,64,164,32,60,60,45,41,225,225,44
DATA 225,37,242,113,41,149,149,53,53,53,41,53,126,124,12,221,0,0,221,12,196
DATA 89,91,0,0,6,6,34,122,99,97,97,157,27,13,27,13,4,65,4,65,65,160,92,7,190
DATA 190,13,13,99,34,34,99,10,10,99,13,6,6,122,95,167,99,0,157,99,227,167,66
DATA 66,66,139,138,102,219,209,146,203,146,67,49,254,11,132,98,154,98,177,170
DATA 100,129,129,111,111,129,107,96,78,111,72,49,111,47,3,107,107,3,107,82
DATA 108,40,72,82,3,3,117,3,82,20,20,3,243,251,63,63,63,206,63,206,206,206
DATA 230,133,191,133,133,216,19,19,19,19,25,42,42,8,75,75,75,24,42,24,164,32
DATA 32,16,76,58,46,141,213,213,113,44,46,53,149,87,53,53,41,87,41,126,89,196
DATA 12,221,0,6,13,0,221,12,36,221,0,99,34,10,122,99,13,13,97,0,99,65,172,147
DATA 101,101,101,160,7,7,7,190,124,126,13,0,0,13,99,34,34,13,6,97,97,6,122
DATA 167,0,120,167,110,93,141,116,102,66,57,35,105,100,88,128,23,38,229,9,56
DATA 72,204,146,219,98,255,151,170,2,108,9,254,111,129,67,11,69,9,114,3,47
DATA 82,40,49,3,117,129,129,129,189,3,3,40,20,3,108,82,108,206,222,86,217,208
DATA 206,206,191,191,191,230,19,19,133,133,75,42,42,25,42,42,16,164,75,75,25
DATA 75,25,64,42,25,24,32,16,60,58,198,44,44,44,156,43,43,113,53,41,41,113
DATA 113,43,43,124,89,12,12,91,27,13,6,34,6,6,6,99,6,99,6,99,99,99,99,0,0,99
DATA 110,147,147,147,74,101,101,80,7,190,7,160,190,118,80,6,13,13,0,27,27,157
DATA 13,97,0,97,0,97,97,99,39,99,61,115,106,57,102,123,35,112,234,69,150,203
DATA 203,153,205,108,49,9,82,107,194,125,35,219,125,62,153,56,229,49,82,38
DATA 38,229,47,47,107,3,107,82,49,129,129,108,108,9,3,3,111,129,3,107,108,20
DATA 85,54,17,17,216,216,133,191,133,133,133,19,75,75,75,25,42,164,25,164,164
DATA 32,24,25,75,75,25,42,24,32,24,42,64,24,145,58,142,44,225,37,48,196,43
DATA 43,113,41,53,126,89,12,12,124,43,196,12,12,91,27,0,99,99,34,34,122,10
DATA 10,122,99,6,99,13,99,122,122,10,165,74,74,74,74,101,80,7,135,7,92,92,7
DATA 92,65,165,227,4,110,13,142,93,0,6,99,119,120,162,157,162,157,116,57,57
DATA 57,152,18,205,49,231,72,96,100,146,150,150,72,155,155,56,56,11,88,127
DATA 35,136,200,177,62,49,49,9,56,11,229,9,11,47,107,231,129,254,3,107,82,49
DATA 3,9,9,47,111,3,3,20,3,192,15,51,216,230,230,191,133,191,133,133,75,133
DATA 75,75,25,42,42,24,24,60,32,75,25,42,42,24,16,60,164,64,32,16,60,16,58
DATA 198,142,142,44,43,89,124,242,43,53,53,43,196,12,91,91,91,91,91,221,221
DATA 91,27,13,13,13,0,99,34,34,6,6,99,13,34,10,10,10,167,4,74,74,74,74,101
DATA 80,239,135,7,92,92,7,13,178,175,175,172,94,227,104,196,10,39,110,0,120
DATA 162,162,134,134,134,134,33,219,195,136,2,11,23,72,67,96,23,38,11,180,56
DATA 155,229,117,38,153,23,127,127,200,146,23,62,117,117,155,114,254,229,114
DATA 9,72,72,49,47,111,189,155,117,47,11,9,189,108,237,108,20,180,63,63,63
DATA 63,191,75,133,133,133,75,75,75,75,25,25,25,32,32,32,32,16,25,133,25,24
DATA 164,16,145,149,53,60,16,164,149,45,207,46,46,46,44,37,126,43,43,43,124
DATA 43,124,124,124,196,12,12,12,91,221,221,27,13,13,99,13,0,6,99,13,99,13
DATA 6,10,10,10,110,110,167,10,235,235,74,74,101,101,239,135,190,92,92,190
DATA 190,65,172,175,94,94,4,73,97,39,10,122,97,162,36,134,33,152,18,195,195
DATA 136,194,121,72,38,38,78,82,56,155,155,56,229,38,237,215,88,114,56,128
DATA 117,11,62,23,204,96,23,128,9,9,47,56,56,197,189,72,47,229,9,56,114,3,9
DATA 229,254,189,3,197,20,82,9,133,191,191,191,133,75,25,75,75,75,25,75,42
DATA 24,24,24,60,145,60,145,211,75,133,25,42,164,32,32,32,87,196,45,16,145
DATA 183,104,207,46,126,106,242,43,196,124,124,196,196,124,124,89,12,12,12
DATA 12,221,91,91,0,13,0,0,13,6,13,13,13,99,6,122,34,122,4,110,110,10,167,235
DATA 235,175,74,235,101,239,135,135,7,92,190,190,80,94,94,94,165,39,167,99
DATA 10,34,0,97,36,57,123,18,18,132,181,173,22,84,11,231,107,107,49,155,197
DATA 111,56,78,117,72,38,11,114,114,56,9,229,72,150,150,169,78,82,23,128,228
DATA 129,114,9,9,9,129,3,254,117,111,47,254,56,111,111,111,3,108,180,189,3
DATA 191,75,75,133,75,75,42,42,25,25,42,42,25,64,32,64,16,45,145,42,133,191
DATA 191,25,42,64,45,149,45,45,196,0,196,188,103,207,16,103,37,93,115,196,91
DATA 36,12,91,196,124,89,12,221,91,12,91,221,12,221,27,118,0,13,99,6,34,34
DATA 13,99,13,13,122,10,10,39,110,39,122,235,74,74,74,235,101,160,135,135,190
DATA 190,190,135,92,94,94,165,110,4,10,13,122,99,120,119,134,102,219,18,168
DATA 170,146,3,22,72,69,171,215,82,82,11,180,231,114,234,78,114,9,229,229,9
DATA 9,56,56,117,11,72,62,88,72,111,112,150,88,72,3,229,114,254,56,114,47,3
DATA 20,114,229,114,9,3,82,56,47,3,180,75,75,42,42,42,25,25,42,42,25,25,42
DATA 42,24,16,76,60,32,164,42,75,19,42,64,211,42,32,16,32,16,41,97,122,97,198
DATA 41,41,58,46,61,119,119,27,91,12,12,196,196,89,124,196,12,12,91,196,196
DATA 91,27,118,0,0,13,6,34,99,99,34,122,4,165,65,110,110,4,110,10,227,172,74
DATA 227,165,101,160,135,14,118,118,190,135,7,178,175,39,227,4,167,167,13,0
DATA 91,115,57,33,18,195,181,23,169,22,67,114,49,108,84,82,111,47,114,56,114
DATA 69,114,117,229,56,229,254,9,11,229,229,11,11,117,88,155,38,72,38,88,38
DATA 114,56,254,47,155,114,9,229,9,111,9,111,20,9,56,3,47,56,47,75,25,25,42
DATA 42,42,25,25,24,24,42,25,24,16,16,149,145,8,25,25,75,75,164,45,16,75,24
DATA 16,32,145,45,41,124,0,242,46,37,44,213,37,36,119,91,36,12,196,89,43,87
DATA 76,60,16,60,60,45,113,89,27,0,0,13,99,99,6,6,34,122,122,10,39,110,4,110
DATA 110,4,39,110,172,175,227,65,101,160,135,14,221,118,190,135,190,65,39,110
DATA 227,39,6,6,97,120,36,57,33,151,136,181,169,96,11,49,84,9,129,72,11,111
DATA 47,111,9,229,114,107,82,111,11,155,254,254,9,114,155,254,114,11,107,129
DATA 155,9,9,114,88,117,117,111,9,155,9,254,9,9,56,47,47,47,9,155,9,3,3,254
DATA 9,25,42,42,42,42,42,42,42,42,164,64,164,42,24,16,16,64,8,211,75,191,191
DATA 25,16,149,16,24,32,207,73,41,53,213,37,37,186,242,48,106,61,61,61,36,221
DATA 196,53,16,60,16,145,76,145,64,144,164,16,16,113,12,0,99,6,6,6,34,122,122
DATA 122,10,39,39,110,110,110,110,39,10,165,74,165,65,101,160,14,14,221,118
DATA 118,190,190,160,110,227,4,10,6,13,97,36,115,134,18,136,170,146,129,111
DATA 23,49,108,229,56,117,129,72,47,229,229,117,82,111,180,254,229,155,56,9
DATA 47,229,254,47,229,229,56,3,108,56,56,9,117,88,117,108,9,56,9,114,9,56
DATA 254,3,254,9,114,9,47,56,47,47,229,75,42,42,25,42,24,164,164,24,42,24,32
DATA 16,32,32,42,42,24,42,75,133,133,75,32,87,60,60,76,60,87,44,126,156,213
DATA 242,44,37,116,93,116,106,48,61,196,60,103,64,16,41,213,44,186,186,73,214
DATA 144,104,64,188,12,13,6,99,34,122,122,122,39,110,227,4,110,110,4,4,110
DATA 10,4,74,74,165,101,160,14,14,14,118,118,135,7,160,65,4,39,34,0,97,120
DATA 115,116,33,136,2,112,38,3,56,38,153,38,117,49,228,117,38,108,49,9,229
DATA 9,114,47,9,56,229,56,9,254,9,9,56,254,114,56,47,254,229,155,111,82,88
DATA 11,49,254,9,9,47,20,47,3,114,108,20,47,47,56,9,47,117,229,25,25,42,42
DATA 42,24,164,32,164,164,164,64,145,45,64,25,25,25,75,75,75,75,25,32,60,32
DATA 16,16,73,213,44,126,61,44,44,37,46,156,48,106,156,61,124,16,240,213,46
DATA 41,48,196,196,43,196,156,73,214,211,104,104,43,13,99,99,34,34,122,122
DATA 122,10,10,110,110,4,4,4,110,10,39,165,74,235,178,160,14,14,14,27,118,190
DATA 7,160,165,4,167,13,97,97,27,115,33,18,195,204,203,38,111,11,129,2,153
DATA 229,49,49,153,117,129,229,129,111,155,254,47,114,114,129,56,229,9,229
DATA 229,114,9,9,56,229,254,229,88,38,108,72,11,9,189,114,229,47,3,47,114,56
DATA 3,129,111,47,254,9,254,3,9,25,25,42,42,42,24,24,32,32,32,60,145,145,16
DATA 42,25,42,42,25,32,16,25,25,60,45,16,45,53,53,198,142,186,106,93,44,37
DATA 198,186,46,37,48,225,207,183,113,213,106,36,36,97,13,91,115,242,186,103
DATA 103,211,8,240,196,27,99,6,6,34,34,10,10,39,10,39,4,110,4,110,10,110,74
DATA 175,175,178,80,14,14,118,27,118,190,7,239,65,39,99,13,0,0,221,226,33,151
DATA 136,146,2,117,38,3,84,22,49,38,49,150,38,107,38,254,189,114,56,56,229
DATA 56,254,11,229,229,56,153,47,9,155,229,254,229,254,117,228,129,49,9,9,254
DATA 9,180,47,254,47,3,47,82,49,107,107,47,3,114,9,20,47,25,42,24,24,164,164
DATA 164,32,16,16,60,188,145,24,42,25,24,24,42,25,25,8,24,73,53,46,149,113
DATA 37,188,207,188,233,36,0,120,44,37,242,225,44,104,166,213,43,106,120,0
DATA 27,97,0,13,36,115,116,142,103,103,144,8,207,120,99,6,6,6,99,6,122,39,4
DATA 110,110,110,4,4,10,110,175,74,175,172,65,135,135,190,118,118,190,7,239
DATA 80,167,99,13,0,27,91,33,18,18,136,146,108,117,38,22,228,38,108,9,153,22
DATA 84,82,107,107,72,114,9,114,155,229,56,9,111,114,114,229,9,9,9,114,254
DATA 229,254,9,72,38,128,47,189,180,180,82,237,111,117,129,108,9,111,20,3,82
DATA 107,9,47,3,111,42,42,164,32,32,16,32,32,60,76,45,76,64,24,42,42,164,164
DATA 42,75,75,211,211,104,149,87,16,60,37,87,103,73,207,44,97,6,61,46,61,225
DATA 104,104,186,242,156,61,0,27,91,61,36,13,0,106,116,116,233,166,73,166,211
DATA 233,97,6,34,6,6,122,122,39,110,110,4,4,110,110,110,95,147,74,74,175,178
DATA 135,135,7,190,13,13,7,239,239,122,6,0,118,27,93,202,18,195,181,2,78,84
DATA 228,146,38,88,117,114,78,117,11,72,49,72,69,108,82,111,108,108,20,3,2
DATA 22,146,132,168,168,168,146,20,40,117,117,189,9,47,20,47,231,82,229,229
DATA 47,117,114,9,229,9,20,3,3,47,47,108,108,3,42,42,24,32,32,64,16,60,45,149
DATA 87,145,164,64,42,42,164,42,75,25,25,104,103,87,126,53,45,145,46,225,198
DATA 142,198,73,213,0,13,37,46,164,211,73,156,242,156,36,162,36,36,93,61,115
DATA 99,91,106,116,141,183,73,240,184,8,115,99,34,34,34,34,39,4,4,110,110,110
DATA 227,4,4,10,227,74,74,175,178,160,14,7,190,13,0,7,7,7,92,6,13,97,120,157
DATA 163,18,105,173,146,96,84,72,67,129,84,153,171,108,82,72,108,40,2,2,22
DATA 146,105,219,98,90,51,71,17,26,26,26,17,17,17,51,15,90,154,199,105,181
DATA 181,40,40,3,3,40,3,108,47,197,3,40,20,108,3,47,47,129,189,246,24,24,64
DATA 32,16,32,16,76,41,41,149,32,32,145,24,24,24,25,75,8,32,145,207,183,87
DATA 89,48,87,73,207,207,87,44,58,188,89,13,198,211,64,16,41,196,48,141,48
DATA 226,61,36,93,120,116,97,0,44,48,102,240,58,73,183,8,213,6,10,39,39,110
DATA 165,165,165,65,110,4,4,110,110,95,4,172,74,175,94,101,190,210,7,190,99
DATA 190,239,59,7,99,0,157,202,163,187,195,181,195,181,121,112,204,3,121,3
DATA 173,173,40,22,40,40,132,98,90,51,17,31,176,79,30,30,30,30,79,79,224,224
DATA 224,30,30,30,30,30,79,5,5,54,17,83,15,90,98,35,18,195,209,20,20,20,20
DATA 3,22,20,20,246,3,164,164,32,16,16,60,60,76,41,113,76,32,60,16,211,24,60
DATA 24,42,164,214,16,73,214,64,76,37,44,87,188,46,46,213,43,46,37,126,211
DATA 207,186,89,99,13,120,116,102,102,226,226,116,226,226,162,99,134,102,57
DATA 240,138,159,159,144,213,122,110,110,39,110,4,4,65,165,4,4,4,227,227,39
DATA 39,175,74,39,39,172,80,14,135,190,190,190,59,59,135,118,0,163,163,187
DATA 209,209,209,209,209,209,168,209,140,20,140,140,81,219,98,83,17,85,176
DATA 79,79,79,176,176,176,176,5,176,176,5,176,176,176,176,176,176,176,176,1
DATA 176,1,79,1,131,55,86,131,5,26,17,17,17,71,83,90,98,255,35,195,209,81,140
DATA 16,164,16,16,16,145,45,53,113,41,32,211,60,145,64,145,60,164,42,25,211
DATA 214,183,104,24,64,76,41,48,225,87,41,37,93,89,113,164,103,58,37,36,91
DATA 27,13,36,46,28,141,116,134,134,57,116,226,102,46,213,58,44,213,198,103
DATA 89,65,65,65,4,4,110,39,4,165,65,4,4,227,227,110,10,110,172,6,97,165,178
DATA 7,143,59,7,7,7,59,210,190,167,81,81,140,81,140,140,81,140,140,158,158
DATA 81,18,123,15,17,85,5,176,176,176,5,5,5,5,5,5,5,5,176,176,176,176,176,5
DATA 176,176,176,176,176,176,79,131,30,224,30,85,52,28,66,154,90,154,28,28
DATA 28,28,139,17,179,17,17,17,71,51,64,164,16,16,16,145,60,87,53,45,32,24
DATA 16,60,32,32,145,164,42,211,24,64,207,87,53,87,145,16,41,126,41,37,120
DATA 12,126,145,75,198,213,120,0,91,61,162,97,156,138,102,57,102,102,66,93
DATA 37,66,134,186,106,99,116,46,46,0,65,165,147,165,147,65,4,4,165,165,65
DATA 4,4,4,4,110,10,110,235,74,172,94,101,210,210,59,7,7,59,210,135,174,174
DATA 174,174,174,158,158,158,81,163,123,15,26,31,5,5,85,85,31,85,85,85,85,85
DATA 5,5,5,5,5,5,5,5,5,5,5,176,176,176,5,1,30,182,85,26,71,26,31,54,71,17,71
DATA 51,51,98,154,199,199,57,70,70,70,70,15,15,15,52,32,164,32,60,16,76,87
DATA 149,87,60,16,32,145,45,16,16,32,25,42,42,164,60,64,214,45,53,113,43,36
DATA 12,41,12,27,115,44,8,8,198,44,93,119,115,141,141,0,57,142,141,141,102
DATA 28,57,119,242,242,48,44,27,10,36,37,242,99,110,65,165,4,110,110,110,4
DATA 165,147,147,65,110,4,65,227,110,110,110,110,4,235,94,160,143,210,59,7
DATA 59,59,210,6,158,158,158,174,68,33,15,71,54,31,31,54,54,19,54,54,54,54
DATA 54,31,31,31,85,85,85,85,85,85,5,5,5,5,5,5,176,176,1,1,54,139,33,167,140
DATA 140,40,187,68,163,226,77,85,5,85,85,85,54,26,71,201,201,102,28,98,35,219
DATA 16,16,16,16,76,45,87,87,58,16,164,104,45,41,76,60,64,42,24,211,24,104
DATA 214,16,73,87,113,124,221,27,196,12,36,48,103,19,64,37,37,37,106,106,141
DATA 142,97,119,46,141,66,102,57,120,6,196,89,106,12,13,34,12,196,115,97,34
DATA 99,34,99,13,99,34,122,39,65,172,147,65,4,4,4,4,4,4,110,39,110,227,80,135
DATA 143,59,59,59,59,252,190,68,162,102,15,51,71,71,71,71,71,8,8,179,179,179
DATA 26,26,26,54,54,54,54,31,31,31,31,85,85,85,85,85,5,5,5,5,5,5,1,83,66,33
DATA 18,203,245,168,209,232,134,51,26,1,79,79,182,182,30,182,137,182,176,85
DATA 230,19,26,54,60,145,145,60,60,149,41,126,46,207,183,104,76,87,149,145
DATA 42,164,211,25,8,211,32,45,45,188,149,87,213,12,93,225,113,188,216,75,198
DATA 242,141,225,141,102,141,213,162,0,61,115,106,36,91,99,122,27,12,89,0,39
DATA 97,37,196,221,0,99,99,0,13,0,13,6,99,6,6,122,165,172,227,4,227,227,4,4
DATA 4,4,4,10,92,239,143,252,59,59,59,252,14,44,58,58,58,233,73,159,139,103
DATA 104,223,144,144,220,8,17,179,216,26,26,26,54,54,54,31,31,31,31,85,85,85
DATA 85,5,5,5,5,5,5,79,182,55,30,5,85,31,31,1,109,30,109,50,79,85,54,31,31
DATA 15,90,90,28,28,52,52,159,166,32,149,76,76,45,45,53,113,45,188,16,104,76
DATA 41,45,16,42,42,211,24,25,42,16,16,16,207,188,53,126,53,44,48,46,8,19,211
DATA 113,196,44,213,44,141,102,102,162,120,48,116,120,27,27,6,10,27,196,91
DATA 39,122,113,156,120,97,97,13,13,0,97,0,99,99,99,13,13,13,34,65,165,227
DATA 165,235,4,4,4,4,39,10,110,80,210,143,252,59,210,143,14,89,89,43,37,113
DATA 44,46,186,58,73,240,103,104,166,144,144,211,8,8,179,216,26,26,54,54,54
DATA 54,31,31,31,85,85,85,85,85,5,5,5,5,5,5,176,1,79,79,79,1,1,79,30,30,224
DATA 79,29,212,55,26,15,52,52,28,102,33,249,249,60,87,149,45,149,87,53,53,45
DATA 45,16,64,207,45,45,64,25,25,25,25,211,16,64,164,16,145,149,44,126,87,188
DATA 58,144,19,216,76,124,115,225,46,225,141,37,36,97,61,106,61,97,221,34,110
DATA 110,119,242,119,0,106,186,106,97,97,13,6,0,99,6,99,99,99,99,6,6,99,99
DATA 34,4,227,227,4,110,4,4,39,39,4,110,65,7,143,143,59,59,252,14,12,12,196
DATA 89,106,37,156,44,213,87,58,73,240,103,104,214,214,144,220,71,17,216,26
DATA 26,19,54,54,54,31,31,31,85,85,85,5,5,5,5,5,5,176,176,176,1,1,1,1,79,26
DATA 83,17,15,28,28,134,156,240,223,71,26,31,1,79,55,50,41,73,198,87,87,41
DATA 126,126,53,45,103,145,87,53,45,42,75,25,25,25,211,64,164,24,164,32,16
DATA 41,53,44,53,188,25,216,164,46,89,48,48,213,225,242,48,27,97,124,36,61
DATA 115,13,4,4,6,44,37,116,156,46,44,48,157,6,167,99,6,6,167,6,6,99,6,34,34
DATA 34,34,6,34,39,65,4,65,65,110,110,4,4,4,65,160,210,143,252,59,210,14,221
DATA 12,196,89,124,37,113,44,46,198,233,73,60,240,183,214,144,211,220,8,8,17
DATA 179,216,26,26,54,54,31,31,31,31,85,85,85,5,5,5,5,176,176,176,176,1,1,1
DATA 1,31,77,66,18,232,68,253,253,250,193,158,68,57,71,79,131,79,1,87,73,198
DATA 46,41,53,126,126,53,87,188,76,45,76,16,25,75,75,25,24,24,32,32,145,87
DATA 76,76,213,213,198,198,64,216,144,183,186,44,37,106,44,156,89,12,13,118
DATA 27,27,12,106,97,99,122,97,48,97,48,106,162,115,36,0,122,10,122,10,110
DATA 39,39,10,122,10,34,34,122,10,10,122,34,10,4,165,65,65,65,65,65,165,165
DATA 65,239,210,59,59,135,14,91,91,36,61,61,61,115,115,115,48,48,48,48,48,48
DATA 37,46,73,144,8,179,216,19,19,54,54,54,54,54,31,31,31,31,85,85,85,5,5,5
DATA 5,5,176,176,1,1,1,1,176,79,5,54,26,71,201,77,138,52,17,1,55,182,79,79
DATA 131,79,60,87,58,53,126,43,43,126,53,225,58,145,60,60,64,25,25,25,25,8
DATA 42,211,211,32,76,76,76,186,186,58,103,25,8,104,58,198,46,213,113,53,43
DATA 89,12,34,92,10,0,106,115,167,39,4,122,122,95,0,120,120,93,13,10,10,39
DATA 110,227,227,4,227,110,110,110,110,110,39,39,39,10,122,122,10,4,65,65,65
DATA 165,165,65,110,110,160,7,7,7,190,0,0,97,157,202,202,93,93,36,61,36,61
DATA 116,57,44,138,73,139,104,104,184,144,220,8,179,26,19,54,31,85,5,5,176
DATA 176,5,5,5,5,5,5,5,5,5,5,1,1,1,79,1,79,79,131,86,109,109,55,182,182,55
DATA 30,224,79,79,79,131,131,76,87,113,113,89,196,124,44,225,37,213,76,32,32
DATA 42,25,42,211,25,216,24,164,16,60,64,183,76,198,186,73,144,8,24,60,46,213
DATA 113,43,106,156,43,106,89,0,39,122,97,242,0,165,147,165,65,165,227,167
DATA 157,119,97,167,10,110,227,147,172,94,94,94,94,94,94,94,172,175,147,165
DATA 227,4,110,39,39,110,39,39,39,10,122,122,122,122,10,39,122,34,6,68,68,163
DATA 157,157,157,157,162,226,57,213,58,73,240,103,183,183,166,184,144,220,8
DATA 17,17,216,26,26,26,54,54,31,31,85,5,1,79,131,131,131,30,131,131,131,131
DATA 1,1,1,79,1,1,1,1,224,224,131,29,29,79,224,131,131,131,131,30,182,41,41
DATA 53,126,89,196,89,156,225,48,126,41,60,16,25,75,25,211,164,32,16,16,76
DATA 149,149,53,113,37,73,144,211,144,76,149,37,37,124,12,36,196,106,106,106
DATA 36,6,6,0,99,110,74,165,65,165,172,4,0,119,0,167,39,4,172,94,94,74,4,95
DATA 10,174,174,167,167,167,6,99,68,68,0,97,97,119,93,93,91,27,99,92,80,65
DATA 110,39,10,10,10,122,167,68,68,163,202,116,66,138,233,159,139,139,103,183
DATA 104,184,144,220,220,71,8,179,216,26,26,19,54,54,31,31,31,31,31,31,31,85
DATA 85,5,5,5,1,1,79,30,30,109,30,79,79,131,79,79,79,131,224,224,224,131,131
DATA 30,30,182,109,109,109,53,126,46,44,43,196,12,43,37,48,113,60,60,32,25
DATA 25,24,164,164,32,16,45,41,53,213,213,213,60,144,104,211,214,46,41,196
DATA 36,36,120,27,27,27,61,97,4,147,65,4,165,74,165,165,235,147,165,6,157,68
DATA 95,110,95,167,163,33,66,52,77,15,15,77,77,77,77,77,77,77,52,52,77,139
DATA 139,233,156,119,34,10,39,39,10,10,122,167,6,6,6,68,163,33,102,52,139,51
DATA 51,51,183,166,184,144,83,71,71,8,17,179,179,216,26,26,54,54,54,54,31,31
DATA 31,85,85,85,85,85,85,5,5,5,5,5,85,85,5,5,1,1,131,131,131,131,131,131,79
DATA 131,131,30,30,182,109,109,109,109,109,55,161,149,113,126,213,126,12,12
DATA 124,126,242,44,103,145,164,211,64,16,64,16,145,45,53,113,53,37,242,188
DATA 211,104,16,211,240,113,89,27,97,97,27,0,99,6,6,65,172,147,175,74,165,235
DATA 74,74,235,175,110,0,226,116,28,51,17,54,31,31,54,54,26,17,17,17,17,17
DATA 71,71,17,17,26,26,71,77,226,68,10,95,10,122,122,167,6,167,167,167,0,249
DATA 46,51,83,71,71,71,71,71,71,71,8,17,17,216,216,26,26,19,19,54,54,54,54
DATA 31,31,31,31,85,85,85,85,85,85,5,5,5,5,5,5,5,5,5,176,1,79,131,30,30,30
DATA 30,30,30,30,30,30,182,182,109,109,109,55,55,55,50,86,29,5,149,58,213,225
DATA 242,196,91,36,242,242,126,76,76,145,32,16,32,32,76,149,53,113,126,126
DATA 242,186,211,214,207,104,144,149,113,91,221,0,13,13,99,122,122,39,165,147
DATA 165,74,175,175,175,74,235,74,227,167,66,54,1,79,79,176,5,85,85,85,85,31
DATA 31,31,31,31,54,54,31,26,83,138,93,68,95,95,174,167,167,6,6,167,167,99
DATA 157,134,159,71,26,54,26,26,17,26,26,26,26,26,26,54,54,54,54,31,31,31,31
DATA 31,31,31,85,85,85,85,85,85,5,5,5,5,5,5,5,5,5,5,176,1,79,79,131,30,30,182
DATA 30,30,30,30,30,182,182,109,55,55,55,55,55,55,50,55,86,79,5,85,251,79,87
DATA 41,198,46,37,48,119,27,226,115,37,188,145,16,64,64,32,76,45,87,41,53,113
DATA 37,44,104,214,145,104,104,103,41,89,97,97,6,34,6,122,39,39,4,74,172,172
DATA 172,94,94,172,175,74,235,95,157,139,179,54,54,31,85,85,85,85,5,5,85,5
DATA 5,5,5,85,85,31,71,83,139,28,102,116,33,157,68,68,68,68,202,28,83,54,5
DATA 5,31,54,54,54,54,54,54,54,31,31,31,31,31,31,85,85,85,85,85,85,5,5,5,5
DATA 5,5,5,5,5,5,176,5,5,5,1,1,1,79,79,30,30,182,182,182,182,182,86,86,86,86
DATA 109,109,55,55,55,50,50,50,50,55,30,222,63,63,5,29,161,50,55,188,149,213
DATA 46,44,37,91,27,61,48,37,46,76,164,164,164,16,45,87,213,113,53,53,58,103
DATA 183,207,76,60,76,188,41,12,221,6,122,122,122,39,4,65,65,172,172,172,94
DATA 94,94,172,172,175,227,122,97,61,102,52,51,71,17,26,54,54,31,85,85,5,5
DATA 5,5,5,176,176,79,79,30,30,182,79,5,5,54,54,17,71,5,79,5,85,31,31,85,85
DATA 31,85,85,31,85,85,85,85,85,85,85,5,5,5,5,5,5,5,5,5,1,1,1,1,1,1,1,1,1,1
DATA 1,79,131,131,30,109,109,109,109,109,182,182,109,182,109,55,50,50,50,50
DATA 50,50,50,50,161,86,222,63,63,222,86,161,50,161,161,55,50,87,149,41,44
DATA 213,113,196,120,61,61,48,44,145,164,24,16,145,76,41,113,242,242,213,58
DATA 207,73,73,104,188,188,149,126,196,91,34,10,10,110,65,147,172,172,172,172
DATA 172,172,147,147,165,65,4,39,34,0,120,61,57,46,77,183,83,17,26,54,54,31
DATA 85,85,85,5,176,176,176,176,1,1,1,1,1,1,79,131,30,30,86,131,1,1,1,1,5,5
DATA 5,5,85,85,85,85,85,5,5,5,5,5,5,5,176,1,1,1,1,1,1,1,1,1,79,1,1,1,79,131
DATA 131,30,109,109,109,109,109,109,109,109,86,55,55,55,50,50,50,50,50,50,50
DATA 50,55,109,86,30,29,86,161,50,50,50,161,161,161,50,137,137,53,41,53,53
DATA 149,53,124,91,61,242,44,188,64,24,64,16,60,45,41,126,48,44,188,73,73,166
DATA 73,58,142,142,198,225,93,167,122,122,39,39,110,110,110,110,110,4,110,110
DATA 110,110,39,10,122,34,99,97,61,106,102,46,52,139,166,83,17,26,54,54,31
DATA 85,85,5,5,5,176,1,1,1,1,1,1,1,1,1,1,1,1,79,131,131,131,131,30,131,131
DATA 131,79,79,1,79,1,1,1,1,5,176,1,1,1,1,1,1,1,1,79,1,1,1,79,131,131,30,182
DATA 109,109,109,109,109,109,109,109,109,109,55,50,50,50,50,50,50,50,50,50
DATA 55,55,55,55,217,50,50,185,185,50,50,50,185,50,137,21,161,63,71,41,126
DATA 126,87,149,113,242,91,91,196,225,188,64,24,16,145,45,126,124,89,126,103
DATA 103,207,207,73,188,233,141,44,102,116,106,116,46,139,139,139,159,138,102
DATA 115,162,97,0,99,99,99,99,13,0,97,91,115,156,213,138,77,139,51,83,71,17
DATA 26,54,54,31,85,85,85,5,5,1,1,1,1,1,1,79,79,79,79,79,79,79,29,79,131,131
DATA 131,131,131,30,30,30,30,30,30,30,30,30,30,30,30,30,79,79,79,131,79,79
DATA 79,79,131,131,30,86,86,109,55,109,109,109,109,109,109,55,55,55,50,50,185
DATA 50,185,185,185,185,50,55,55,55,55,50,50,185,185,185,50,50,50,185,21,21
DATA 137,86,31,184,77,139,220,113,43,113,45,58,113,43,36,61,48,37,207,64,32
DATA 16,60,87,53,37,156,240,214,104,58,233,142,44,57,44,139,17,31,251,29,29
DATA 1,5,85,31,26,17,71,184,183,139,233,138,186,142,186,138,138,233,159,139
DATA 51,83,71,71,17,179,26,54,54,31,85,85,85,5,5,5,1,1,1,79,79,79,79,79,79
DATA 131,79,79,131,131,131,131,131,30,30,30,30,30,30,30,30,30,30,30,182,182
DATA 182,182,86,86,86,86,86,86,86,109,109,109,109,109,55,55,55,55,55,217,161
DATA 161,50,50,50,185,185,185,185,185,185,185,137,161,109,86,86,55,50,50,185
DATA 185,185,185,185,137,137,21,21,50,5,179,71,184,183,71,63,137,21,53,126
DATA 87,103,73,37,36,36,115,242,37,188,32,164,164,60,53,213,188,183,144,142
DATA 141,233,58,103,8,63,208,86,5,251,29,109,86,30,79,1,1,1,5,5,85,31,31,31
DATA 31,54,54,54,54,54,54,54,54,54,31,31,31,31,31,85,85,5,5,5,1,1,1,1,1,79
DATA 79,79,79,131,131,79,79,131,131,131,131,30,30,30,30,30,30,30,30,30,30,30
DATA 30,30,30,30,182,182,182,182,182,109,109,109,109,109,109,55,109,55,161
DATA 161,50,137,137,137,244,244,21,21,21,21,21,137,137,137,137,137,50,217,217
DATA 86,86,55,50,185,185,185,185,185,185,185,21,21,21,217,230,8,83,71,241,5
DATA 251,208,137,137,185,161,87,41,53,53,149,126,221,120,61,61,37,207,214,64
DATA 16,73,46,188,103,104,233,103,8,230,29,185,185,63,166,159,166,54,222,55
DATA 109,86,86,30,30,30,131,79,1,5,85,26,54,54,31,31,31,85,85,5,5,5,5,1,131
DATA 1,1,79,1,79,79,79,79,79,79,79,79,79,131,131,131,131,79,79,131,131,131
DATA 131,131,30,30,30,30,30,30,30,30,30,30,30,30,30,30,182,182,182,182,182
DATA 182,109,182,109,109,109,109,55,50,185,185,185,137,244,244,21,21,21,244
DATA 212,212,212,212,244,244,212,29,30,50,161,137,21,21,21,21,21,21,137,137
DATA 137,21,21,29,241,71,166,8,230,208,21,21,21,161,208,29,161,161,217,41,60
DATA 45,87,188,89,0,36,93,202,116,73,103,104,207,87,103,8,216,230,222,161,21
DATA 21,185,185,50,29,206,29,137,21,137,55,55,109,86,30,131,79,1,5,54,17,26
DATA 26,17,26,54,54,26,26,54,26,54,1,131,5,26,5,79,79,79,79,79,131,131,131
DATA 131,131,30,131,131,30,30,131,30,131,30,131,131,30,30,30,30,30,30,30,30
DATA 30,30,30,182,182,182,182,182,109,182,109,109,109,109,182,109,109,55,50
DATA 185,137,137,137,185,185,21,21,21,243,241,223,70,70,156,156,104,222,29
DATA 5,5,86,137,137,137,251,222,21,21,21,21,21,21,244,230,220,184,179,230,63
DATA 161,21,21,21,137,29,222,208,21,21,21,21,41,76,188,73,198,91,27,61,36,162
DATA 61,46,103,8,211,19,29,217,185,21,21,21,185,185,185,185,185,185,21,185
DATA 185,185,50,55,55,30,131,79,1,1,1,1,54,26,26,17,17,54,54,54,54,31,26,26
DATA 26,71,17,17,71,5,1,1,5,5,5,1,1,1,1,79,79,131,131,131,131,30,30,30,30,131
DATA 30,131,30,30,30,30,30,86,182,86,86,86,86,86,86,86,109,109,109,109,109
DATA 109,55,161,50,137,137,21,21,21,21,21,21,21,161,63,220,70,250,236,236,250
DATA 70,223,241,29,161,21,21,137,50,50,161,251,222,137,21,21,29,19,220,8,26
DATA 63,161,21,137,29,29,208,161,161,217,63,31,29,50,251,19,216,37,213,142
DATA 46,213,116,93,93,93,93,142,8,63,208,185,21,21,21,185,21,21,21,21,21,185
DATA 185,185,185,185,185,50,161,55,86,30,79,79,79,79,1,85,31,26,54,54,54,54
DATA 31,54,85,31,31,31,71,17,54,85,79,30,79,1,1,1,1,1,1,1,1,176,1,1,1,1,1,30
DATA 182,182,55,55,55,182,109,86,86,86,86,86,86,86,109,86,86,86,109,109,109
DATA 109,109,109,109,161,185,185,137,137,21,21,21,21,21,21,161,63,220,240,124
DATA 12,193,193,106,223,63,208,21,21,243,208,208,243,21,21,21,21,21,21,55,31
DATA 71,51,83,8,29,137,21,21,21,21,21,212,21,21,21,21,21,79,26,77,52,8,241
DATA 44,242,141,102,102,116,156,73,216,251,161,21,21,185,21,21,21,21,21,21
DATA 21,21,21,21,185,185,185,50,161,217,86,86,55,86,86,30,79,85,31,54,17,54
DATA 54,54,31,85,31,54,17,17,17,26,85,1,131,30,79,79,1,1,1,1,79,79,79,79,79
DATA 79,1,1,1,79,1,5,54,83,139,51,83,26,5,5,1,1,30,86,86,86,109,109,86,109
DATA 109,109,109,55,55,55,50,137,137,21,21,21,21,21,21,21,243,63,144,70,106
DATA 250,193,250,156,223,63,137,21,21,137,137,50,63,230,17,63,21,21,21,208
DATA 29,251,17,71,230,208,137,222,222,251,161,185,137,185,50,29,137,137,30
DATA 251,216,52,166,179,63,21,21,242,116,46,183,17,230,208,244,21,21,21,21
DATA 21,21,185,21,21,21,21,21,21,185,185,185,185,161,217,217,86,86,217,217
DATA 29,29,5,31,31,54,31,31,31,31,85,85,31,31,54,26,54,5,79,131,79,1,1,1,1
DATA 1,79,79,79,79,79,79,79,79,79,79,1,1,1,79,5,17,138,57,33,33,57,33,68,202
DATA 77,71,1,79,131,86,109,109,109,109,55,55,50,50,50,137,137,137,185,185,185
DATA 21,212,29,179,240,186,89,250,193,250,70,220,29,21,21,21,21,21,21,21,244
DATA 244,21,21,21,137,30,31,71,71,83,216,208,21,21,21,21,137,137,161,137,137
DATA 137,21,137,251,216,159,77,139,216,29,21,21,243,29,222,214,133,29,185,21
DATA 21,21,185,185,21,21,21,21,185,21,21,21,21,21,185,185,50,50,161,217,217
DATA 217,55,86,30,5,31,31,79,1,31,54,85,85,1,30,1,31,26,54,5,1,30,131,79,79
DATA 79,79,79,79,1,1,1,131,131,79,79,79,79,1,1,1,79,79,1,1,1,1,79,30,30,1,5
DATA 31,17,184,54,1,131,131,131,30,109,109,55,55,50,50,137,137,137,137,137
DATA 21,21,137,21,161,179,186,61,250,193,193,250,70,179,29,244,21,21,137,137
DATA 29,63,208,244,21,21,21,21,21,212,216,184,17,63,55,29,29,31,29,185,185
DATA 21,161,29,21,21,21,21,86,83,139,184,71,29,21,21,21,21,161,212,137,137
DATA
 
SUB ShowBmp
   FOR y% = 1 TO 256 
     READ R%, G%, B%
     OUT &H3C9, R%: OUT &H3C9, G%: OUT &H3C9, B%
   NEXT
   FOR y% = 0 TO 99 
      FOR x% = 0 TO 159 
        READ cv%
        PSET (x%, y%), cv%
      NEXT
   NEXT
END SUB
На всякий случай закидываю всё это дело во вложение(из-за плохой работы форума с ASCII).
Вложения
Тип файла: zip Bmp2Data.zip (32.7 Кб, 228 просмотров)
6
29.03.2011, 17:00

Не по теме:

а картинка типо намекает кто из пользователей задал такой вопрос:D но серавно ОГРОМНОЕ СПАСИБО:good:

0
Кормпилятор
 Аватар для Quiet Snow
5043 / 1717 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
05.04.2011, 06:41  [ТС]
Отрисовка кривых безье. Накодил криво, т.к. потерялся листок с оптимизацией мат. формул.
Но идея полагаю понятна. Метод используется в CAD редакторах и графических редакторах.

Совместимость программы: QBasic 1.0 и выше.

Исходник:

PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 SCREEN 12
 COLOR 14: LOCATE 30, 23: PRINT "Press [ SPACE ] key for draw curve..."
 LOCATE 1: PRINT "-Bezier curve demonstration-"
 PAINT (320, 240), 1, 14
 DO: Kb$ = INKEY$
   IF Kb$ = " " THEN
   LINE (0, 30)-(639, 445), 1, BF
   x1 = RND * 639: y1 = RND * 390 + 40
   x2 = RND * 639: y2 = RND * 390 + 40
   x3 = RND * 639: y3 = RND * 390 + 40
     oxp3 = x1
     oyp3 = y1
   CIRCLE (x1, y1), 3, 15: PAINT (x1, y1), 10, 15
   CIRCLE (x2, y2), 3, 12: PAINT (x2, y2), 14, 12
   CIRCLE (x3, y3), 3, 15: PAINT (x3, y3), 10, 15
     FOR c# = 0 TO 1 STEP .005
      xp1 = x1 + (x2 - x1) * c#
      xp2 = x2 + (x3 - x2) * c#
      xp3 = xp1 + (xp2 - xp1) * c#
      yp1 = y1 + (y2 - y1) * c#
      yp2 = y2 + (y3 - y2) * c#
      yp3 = yp1 + (yp2 - yp1) * c#
        LINE (oxp3, oyp3)-(xp3, yp3), 10
        oxp3 = xp3: oyp3 = yp3
     NEXT
   END IF
 LOOP UNTIL Kb$ = CHR$(27)
Миниатюры
Графика на бейсике  
1
 Аватар для Leben174
0 / 0 / 0
Регистрация: 10.05.2011
Сообщений: 18
10.05.2011, 22:13
Это всё на Q-Basik???
0
 Аватар для velvet1545
6 / 9 / 2
Регистрация: 21.05.2011
Сообщений: 81
23.05.2011, 23:26
ребята знаете что формат бмп шифрованый?

когда я поставил задачу перед собой сделать вьюер бмп файлов я перед этим не знал этого
паришлось в ручную разгадывать его шифр

коекак разгадал получился бмп 256 цветных файлов вьер под кубейсиком

Добавлено через 4 минуты
идеальный графический формат где нет избыточныйх вредных затормаживающих байтов в конце каждой полоски бмп

и где файл не перевернут с ног на голову

тело картинки побайтно и таблица цветов для 256цветного режима а название формата
*.256

да здраствует этот формат файла

ура ура ура

pcx gif отдыхает..
0
Кормпилятор
 Аватар для Quiet Snow
5043 / 1717 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
24.05.2011, 06:04  [ТС]
Народ, давайте не будем разводить демагогий, монологов и разный оффтоп в закреплённом топике, создавайте отдельные темы для отдельных вопросов, тут постим программы и обсуждаем конкретно их.
Надеюсь на понимание.
0
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
16.06.2011, 23:49
фрактал Martin.
PureBasic
1
2
3
4
5
6
7
SCREEN 12
WHILE INKEY$ = ""
    t = x
    x = y - SIN(x)
    y = 3.14 - t
    PSET (2 * x + 320, 2 * y + 240), 4
WEND
Миниатюры
Графика на бейсике  
5
Кормпилятор
 Аватар для Quiet Snow
5043 / 1717 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
29.07.2011, 03:07  [ТС]
Небольшая демка, кривые безье + брозенхем с эмуляцией антиналожения.
Скриншот можно взять кнопкой "S".
Миниатюры
Графика на бейсике  
Вложения
Тип файла: zip BEZIER2.zip (2.7 Кб, 87 просмотров)
4
Кормпилятор
 Аватар для Quiet Snow
5043 / 1717 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
29.05.2012, 03:46  [ТС]
Программа для построения графиков функций, закину сюда в тему, чтобы не искать потом.
Автоматически подбирает масштабы по осям, исходя из границ всех графиков.
Наклепал 5 графиков, больше вероятно и не потребуется, необходимо тестирование.
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
SCREEN 12
CONST Pi = 3.141592653589793#
DIM MinX, MinY, MaxX, MaxY
DIM XRazn, YRazn, MnogX, MnogY
DIM StpScX AS INTEGER, StpScY AS INTEGER
  '  Функции графиков
  DEF FnY1 (x) = SIN(x)
  DEF FnY2 (x) = COS(x)
  DEF FnY3 (x) = x / 2
  DEF FnY4 (x) = x * x * .1
  DEF FnY5 (x) = SQR(EXP(x)) * .3
 '  Ф-ция поиска границ
DEF FnMinMax (x, y)
    IF x < MinX THEN MinX = x
    IF x > MaxX THEN MaxX = x
    IF y < MinY THEN MinY = y
    IF y > MaxY THEN MaxY = y
END DEF
 '  Экранное преобразование
DEF FnGetX (x) = x * MnogX - MinX * MnogX
DEF FnGetY (y) = y * MnogY - MaxY * MnogY
 '  Параметры трассировки функций
Str1 = -Pi: Str2 = -Pi: Str3 = -Pi: Str4 = -Pi: Str5 = -Pi
End1 = Pi: End2 = Pi: End3 = Pi: End4 = Pi: End5 = Pi
Stp1 = .01: Stp2 = .03: Stp3 = .1: Stp4 = .1: Stp5 = .1
 '  Переменные для трассировки
x1 = Str1: x2 = Str2: x3 = Str3: x4 = Str4: x5 = Str5
y1 = FnY1(x1): y2 = FnY2(x2): y3 = FnY3(x3): y4 = FnY4(x4): y5 = FnY5(x5)
 '  Вычисляем параметры графиков
DO
  Go = 0: y1 = FnY1(x1): y2 = FnY2(x2): y3 = FnY3(x3)
  y4 = FnY4(x4): y5 = FnY5(x5)
  IF x1 < End1 THEN x1 = x1 + Stp1: y1 = FnY1(x1): Go = -1
  IF x2 < End2 THEN x2 = x2 + Stp2: y2 = FnY2(x2): Go = -1
  IF x3 < End3 THEN x3 = x3 + Stp3: y3 = FnY3(x3): Go = -1
  IF x4 < End4 THEN x4 = x4 + Stp4: y4 = FnY4(x4): Go = -1
  IF x5 < End5 THEN x5 = x5 + Stp5: y5 = FnY5(x5): Go = -1
  i = FnMinMax(x1, y1)     '  Ищем границы
  i = FnMinMax(x2, y2)
  i = FnMinMax(x3, y3)
  i = FnMinMax(x4, y4)
  i = FnMinMax(x5, y5)
LOOP WHILE Go
  PRINT
  PRINT "  "; INT(MinX); INT(MinY); INT(MaxX); INT(MaxY)
 '  Реинициализация трассировки
x1 = Str1: x2 = Str2: x3 = Str3: x4 = Str4: x5 = Str5
y1 = FnY1(x1): y2 = FnY2(x2): y3 = FnY3(x3): y4 = FnY4(x4): y5 = FnY5(x5)
 '  Старые координаты(Прошлый шаг трассировки)
xo1 = x1: xo2 = x2: xo3 = x3: xo4 = x4: xo5 = x5
yo1 = y1: yo2 = y2: yo3 = y3: yo4 = y4: yo5 = y5
 '  Делаем фрейм пошире, чтобы больше было видно
 '  + сетку, если она где-то рядом
 XRazn = MaxX - MinX
 YRazn = MinY - MaxY
 MinX = MinX - XRazn / 4
 MaxX = MaxX + XRazn / 4
 MinY = MinY + YRazn / 4
 MaxY = MaxY - YRazn / 4
 '  Для преобразования координат в экранные
XRazn = MaxX - MinX    ' Разности координат графиков
YRazn = MinY - MaxY
  IF XRazn = 0 THEN XRazn = .00001
  IF YRazn = 0 THEN YRazn = .00001
MnogX = 640 / XRazn    ' Отнош. к разностям коо. гр.
MnogY = 480 / YRazn
StpScX = 1: StpScY = 1 ' Шаг сетки
 '  Если сетка не умещается увеличиваем шаг сетки
DO: ScTst = 0
  IF ABS(XRazn / StpScX) > 160 THEN StpScX = StpScX * 10: ScTst = -1
  IF ABS(YRazn / StpScY) > 120 THEN StpScY = StpScY * 10: ScTst = -1
LOOP WHILE ScTst
 
 '  Нарисуем сетку
DlSc = SQR(1 / ABS(XRazn / StpScX) + 1 / ABS(XRazn / StpScX)) * 10
IF DlSc > 10 THEN DlSc = 10
IF DlSc < 2 THEN DlSc = 2
LINE (FnGetX(MinX), FnGetY(0))-(FnGetX(MaxX), FnGetY(0)), 8
LINE (FnGetX(0), FnGetY(MinY))-(FnGetX(0), FnGetY(MaxY)), 8
FOR i = INT(MinX) TO INT(MaxX) STEP StpScX
  LINE (FnGetX(i), FnGetY(0) - DlSc)-(FnGetX(i), FnGetY(0) + DlSc), 8
NEXT
FOR i = INT(MinY) TO INT(MaxY) STEP StpScY
  LINE (FnGetX(0) - DlSc, FnGetY(i))-(FnGetX(0) + DlSc, FnGetY(i)), 8
NEXT
 
 '  Рисуем графики
DO
  Go = 0: y1 = FnY1(x1): y2 = FnY2(x2): y3 = FnY3(x3)
  IF x1 < End1 THEN x1 = x1 + Stp1: y1 = FnY1(x1): Go = -1
  IF x2 < End2 THEN x2 = x2 + Stp2: y2 = FnY2(x2): Go = -1
  IF x3 < End3 THEN x3 = x3 + Stp3: y3 = FnY3(x3): Go = -1
  IF x4 < End4 THEN x4 = x4 + Stp4: y4 = FnY4(x4): Go = -1
  IF x5 < End5 THEN x5 = x5 + Stp5: y5 = FnY5(x5): Go = -1
    LINE (FnGetX(xo1), FnGetY(yo1))-(FnGetX(x1), FnGetY(y1)), 9
    LINE (FnGetX(xo2), FnGetY(yo2))-(FnGetX(x2), FnGetY(y2)), 10
    LINE (FnGetX(xo3), FnGetY(yo3))-(FnGetX(x3), FnGetY(y3)), 7
    LINE (FnGetX(xo4), FnGetY(yo4))-(FnGetX(x4), FnGetY(y4)), 12
    LINE (FnGetX(xo5), FnGetY(yo5))-(FnGetX(x5), FnGetY(y5)), 14
  xo1 = x1: xo2 = x2: xo3 = x3: xo4 = x4: xo5 = x5  ' Старые координаты
  yo1 = y1: yo2 = y2: yo3 = y3: yo4 = y4: yo5 = y5
LOOP WHILE Go
 
WHILE INKEY$ = "": WEND   ' Ждать кнопку
3
 Аватар для PAnT0P
1492 / 587 / 106
Регистрация: 26.03.2012
Сообщений: 1,039
16.06.2012, 13:58
Векторный шрифт
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
DECLARE SUB DrawText (Text AS STRING, X AS INTEGER, Y AS INTEGER, FontColor AS INTEGER, FontSize AS INTEGER, FontAngle AS INTEGER)
 
SCREEN 12
DIM SHARED Font(223) AS STRING
DIM I AS INTEGER
RESTORE FontData
FOR I = 0 TO 223
    READ Font(I)
NEXT I
'Демо
DrawText " !" + CHR$(34) + "#$%&'()*+,-./0123456789:;<=>?@", 50, 50, 15, 4, 0
DrawText "ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`", 50, 100, 14, 4, 0
DrawText "abcdefghijklmnopqrstuvwxyz{|}~√№■", 50, 150, 12, 4, 0
DrawText "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ", 50, 200, 11, 4, 0
DrawText "абвгдеёжзийклмнопрстуфхцчшщъыьэюя", 50, 250, 10, 4, 0
DrawText "1", 50, 400, 13, 1, 0
DrawText "2", 60, 400, 13, 2, 0
DrawText "3", 75, 400, 13, 3, 0
DrawText "4", 95, 400, 13, 4, 0
DrawText "5", 120, 400, 13, 5, 0
DrawText "6", 150, 400, 13, 6, 0
DrawText "7", 185, 400, 13, 7, 0
DrawText "8", 225, 400, 13, 8, 0
DrawText "9", 260, 400, 13, 9, 0
DrawText "10", 310, 400, 13, 10, 0
DrawText "     Вращение 0", 500, 350, 9, 2, 0
DrawText "     Вращение 45", 500, 350, 9, 2, 45
DrawText "     Вращение -45", 500, 350, 9, 2, -45
DrawText "     Вращение 90", 500, 350, 9, 2, 90
DrawText "     Вращение -90", 500, 350, 9, 2, -90
DrawText "     Вращение 135", 500, 350, 9, 2, 135
DrawText "     Вращение 180", 500, 350, 9, 2, 180
DrawText "     Вращение -135", 500, 350, 9, 2, -135
 
'Правила построения символов:
'Общая высота символа 9 единиц, ширина может быть любой.
'Рисование всегда начинается в точке A и заканчивается в точке C
'При рисовании символа можно использовать все команды оператора DRAW,
'за исключением команд вращения, масштаба и цвета.
'Пример (символ Щ):
DATA "NU5R2NU4R2NU5RDBE"
'0 0 0 0 0 0
'0 0 0 0 0 0
'B 0 0 0 B 0
'B 0 B 0 B 0
'B 0 B 0 B 0
'B 0 B 0 B 0
'B 0 B 0 B 0
'A B B B B B C
'0 0 0 0 0 B
FontData:
DATA "BR2"                                  : REM Пробел
DATA "NURUNLBUU3LM+1,+3BF2"                 : REM !
DATA "BU4UBRDBD4BR"                         : REM "
DATA "BU3NR3BUNR3BEND3BRD3BR2BD2"           : REM #
DATA "BUFEH2ENUNFD5BRBE"                    : REM $
DATA "BRRULNDBLE3BLLURDBD4BR2"              : REM %
DATA "BR4HUHLGDFREEBLNDHLHERFGBF3"          : REM &
DATA "BU5DENLBD5BR"                         : REM '
DATA "BRBU5GD3FBR"                          : REM (
DATA "BU5FD3GBR2"                           : REM )
DATA "BU3R2BDH2BD2E2BD4BR"                  : REM *
DATA "BU3R2BHD2BD2BR2"                      : REM +
DATA "BURGURBF"                             : REM ,
DATA "BU3R2BD3BR"                           : REM -
DATA "URDLBR2"                              : REM .
DATA "M+2,-5BD5BR"                          : REM /
DATA "BUU3ERFNM-3,+3D3GLHBDBR4"             : REM 0
DATA "BU4ED5LR2BR"                          : REM 1
DATA "BU3UERFDG3R3BR"                       : REM 2
DATA "BU5R3DGFDGLHBR4BD"                    : REM 3
DATA "BR3U5G3DR4BF"                         : REM 4
DATA "BUFREUHL2U2R3BD5BR"                   : REM 5
DATA "BU2ERFDGLHU3ERFBD4BR"                 : REM 6
DATA "BU5R3DM-2,+4BR3"                      : REM 7
DATA "BUUEREHLGFRFDGLHBR4BD"                : REM 8
DATA "BUFREU3HLGDFREBD3BR"                  : REM 9
DATA "URDLBU3URDLBR2BD3"                    : REM :
DATA "URGBU3URDLBD3BR2"                     : REM ;
DATA "BR2M-2,-2M+2,-2BD4BR"                 : REM <
DATA "BU2R2BUNL2BD3BR"                      : REM =
DATA "M+2,-2M-2,-2BD4BR3"                   : REM >
DATA "BU4ERFGDBDDLURBBFBR"                  : REM ?
DATA "BEBUURDNLEHLGD2FRBR2"                 : REM @
DATA "U4ER2D3NL3D2BR"                       : REM A
DATA "U5R2FGNL2FDGL2BR4"                    : REM B
DATA "BE3BUHLGD3FREBF"                      : REM C
DATA "U5R2FD3GL2BR4"                        : REM D
DATA "BU5BR3L3D2NR2D3R3BR"                  : REM E
DATA "U2NR2U3R3DBD4BR"                      : REM F
DATA "BE2RDGLHU3ERFBD4BR"                   : REM G
DATA "U3NU2R3NU2D3BR"                       : REM H
DATA "RNRU5NLRBD5BR"                        : REM I
DATA "BUNUFREU4NL3BD5BR"                    : REM J
DATA "U3NU2RNM+2,-2M+2,+3BR"                : REM K
DATA "NU5R3NUBR"                            : REM L
DATA "M+1,-5M+1,+5M+1,-5M+1,+5BR"           : REM M
DATA "U5M+3,+5NU5BR"                        : REM N
DATA "BUU3ERFD3GLHBDBR4"                    : REM O
DATA "U5R2FDGL2BR4BD2"                      : REM P
DATA "BUU3ERFD3GLHBRRFBR"                   : REM Q
DATA "U5R2FDGLNLF2BR"                       : REM R
DATA "BUFREUHLHERFBD4BR"                    : REM S
DATA "BR2U5BL2BDUR4DBD4BR"                  : REM T
DATA "BU5D4FRENU4BF"                        : REM U
DATA "BU5M+1,+5RNM+1,-5BR2"                 : REM V
DATA "BU5M+1,+5M+1,-5M+1,+5NM+1,-5BR2"      : REM W
DATA "M+3,-5BL3M+3,+5BR"                    : REM X
DATA "BRU2NM-1,-3NM+1,-3BF2"                : REM Y
DATA "BU4UR3DG3DR3NUBR"                     : REM Z
DATA "BU5NRD5RBR"                           : REM [
DATA "BU5M+2,+5BR"                          : REM \
DATA "BU5RD5NLBR"                           : REM ]
DATA "BU4M+1,-1M+1,+1BD4BR"                 : REM ^
DATA "BDR2BE"                               : REM _
DATA "BU5FBD4BR"                            : REM `
DATA "BU3EFD2GHERD2BR"                      : REM a
DATA "NU5REUHLBF3"                          : REM b
DATA "BE3HLGD2FREBF"                        : REM c
DATA "BE2BULGDFRNU5BR"                      : REM d
DATA "BU2R2EHLGD2FREBF"                     : REM e
DATA "BRU2NLNRU2ERBD5BR"                    : REM f
DATA "BE2BU2LGDFRNU3DNGBR"                  : REM g
DATA "U3NU2RFD2BR"                          : REM h
DATA "RNRU3NLBUUBD5BR2"                     : REM i
DATA "FEU3NLBUUBD5BR"                       : REM j
DATA "U2NU3NE2F2BR"                         : REM k
DATA "BUNU4FBR"                             : REM l
DATA "U3NUEDND3ED4BR"                       : REM m
DATA "U3NUEFD3BR"                           : REM n
DATA "BUU2ER1FD2GL1HBDBR4"                  : REM o
DATA "U4RFDGLBR3BD"                         : REM p
DATA "BE2BU2LGDFRNU3D2BE"                   : REM q
DATA "U3NUERBD4BR"                          : REM r
DATA "BUFREHLHERFBD3BR"                     : REM s
DATA "BRBU5D2NLNRD2FEBF"                    : REM t
DATA "BU4D3FRENU3DBR"                       : REM u
DATA "BU4M+1,+4NM+1,-4BR2"                  : REM v
DATA "BU4M+1,+4M+1,-4M+1,+4NM+1,-4BR2"      : REM w
DATA "M+2,-4BL2M+2,+4BR"                    : REM x
DATA "BU4M+1,+2ND2NM+1,-2BF2"               : REM y
DATA "BU3UR2M-2,+4R2NUBR"                   : REM z
DATA "BU4BR2GDNLDFBR"                       : REM {
DATA "NU4BR"                                : REM |
DATA "BU4FDNRDGBR3"                         : REM }
DATA "BU2EF2EBD2BR"                         : REM ~
DATA "U7R4D8L4UBR5"                         : REM Рамка
DATA "U4ER2D3NL3D2BR"                       : REM А
DATA "BU3R2FDGL2U5R3BD5BR"                  : REM Б
DATA "U5R2FGNL2FDGL2BR4"                    : REM В
DATA "U5R3DBD4BR"                           : REM Г
DATA "BDURM+1,-5RD5NL2RDBE"                 : REM Д
DATA "BU5BR3L3D2NR2D3R3BR"                  : REM Е
DATA "U2ER2FD2BL4BU5DFR2EUBL2D5BR3"         : REM Ж
DATA "BUFREUHEHLGBF4"                       : REM З
DATA "NU5M+3,-5D5BR"                        : REM И
DATA "NU5M+3,-5ND5BUBL2RBR2BD6"             : REM Й
DATA "U3NU2RNM+2,-2M+2,+3BR"                : REM К
DATA "M+2,-5RD5BR"                          : REM Л
DATA "M+1,-5M+1,+5M+1,-5M+1,+5BR"           : REM М
DATA "U3NU2R3NU2D3BR"                       : REM Н
DATA "BUU3ERFD3GLHBDBR4"                    : REM О
DATA "U5R3D5BR"                             : REM П
DATA "U5R2FDGL2BR4BD2"                      : REM Р
DATA "BE3BUHLGD3FREBF"                      : REM С
DATA "BR2U5BL2BDUR4DBD4BR"                  : REM Т
DATA "BUFREU4BL3D2FR2BD2BR"                 : REM У
DATA "BR2U5RFD2GL2HU2ERBR3BD5"              : REM Ф
DATA "M+3,-5BL3M+3,+5BR"                    : REM Х
DATA "NU5R2NU5RDBE"                         : REM Ц
DATA "BR3U5BL3D2FR2BD2BR"                   : REM Ч
DATA "NU5R2NU4R2NU5BR"                      : REM Ш
DATA "NU5R2NU4R2NU5RDBE"                    : REM Щ
DATA "BU4URD5R2EUHL2BF3BR"                  : REM Ъ
DATA "BU3R2FDGL2U5BR4D5BR"                  : REM Ы
DATA "BU5D5R2EUHL2BF3BR"                    : REM Ь
DATA "BUFREU2NL2UHLGBF4"                    : REM Э
DATA "U3NU2RUERFD3GLHU3BF4"                 : REM Ю
DATA "E2NRLHUER2D5BR"                       : REM Я
DATA "BU3EFD2GHERD2BR"                      : REM а
DATA "BU2RFGLU3ERBD4BR"                     : REM б
DATA "U4RFGNLFGNLBR2"                       : REM в
DATA "U4R2DBD3BR"                           : REM г
DATA "BDURM+1,-4RD4NL2RDBUBR"               : REM д
DATA "BU2R2EHLGD2FREBF"                     : REM е
DATA "UENRHUBR2ND4BR2DGNLFDBR"              : REM ж
DATA "BU3ERFGNLFGLHBDBR4"                   : REM з
DATA "BU4D4M+2,-4D4BR"                      : REM и
DATA "BU4D4M+2,-4BLNUBRD4BR"                : REM й
DATA "U2NU2NE2F2BR"                         : REM к
DATA "M+1,-4RD4BR"                          : REM л
DATA "M+1,-4M+1,+4M+1,-4M+1,+4BR"           : REM м
DATA "U2NU2R2NU2D2BR"                       : REM н
DATA "BUU2ER1FD2GL1HBDBR4"                  : REM о
DATA "U4R2D4BR"                             : REM п
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA "U4RFDGLBR3BD"                         : REM р
DATA "BE3HLGD2FREBF"                        : REM с
DATA "BU3URND4RDBD3BR"                      : REM т
DATA "BU4D1FRNU2D1GLBR3"                    : REM у
DATA "BR2U4LGDFR2EUHLBD4BR3"                : REM ф
DATA "M+2,-4BL2M+2,+4BR"                    : REM х
DATA "BU4D4R2NU4RDBE"                       : REM ц
DATA "BU4D2FRNU3DBR"                        : REM ч
DATA "NU4RNU4RNU4BR"                        : REM ш
DATA "NU4RNU4RNU4RDBE"                      : REM щ
DATA "BU3URD4REUHLBF3"                      : REM ъ
DATA "BU3RFDGLU4BR3D4BR"                    : REM ы
DATA "NU4REUHLBF3"                          : REM ь
DATA "BUFREUNLUHLGBF3BR"                    : REM э
DATA "U2NU2RUERFD2GLHUBF2BR2"               : REM ю
DATA "ENRHUERD4BR"                          : REM я
DATA "BU7BRDBRUBRBD2L3D2NR2D3R3BR"          : REM Ё
DATA "BU2R2EHBUUBD2LBUUBD2GD2FREBF"         : REM ё
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA ""
DATA "BU2RM+1,+2M+1,-5BD5BR"                : REM √
DATA "U5M+2,+5U5RBDRDLNUBDRBD2BR"           : REM №
DATA ""
DATA "BU2URDLBF2"                           : REM ■
DATA ""
 
SUB DrawText (Text AS STRING, X AS INTEGER, Y AS INTEGER, FontColor AS INTEGER, FontSize AS INTEGER, FontAngle AS INTEGER)
    'Text           Печатаемый текст
    'X              Горизонтальная позиция начала текста
    'Y              Вертикалная позиция начала текста
    'FontColor      Цвет шрифта
    'FontSize       Размер шрифта
    'FontAngle      Угол поворота текста
    DIM N AS INTEGER, I AS INTEGER
    DIM C AS STRING, S AS STRING, Message AS STRING, A AS STRING
    FOR N = 1 TO LEN(Text)
        I = ASC(MID$(Text, N, 1))
        I = I - 32
        Message = Message + RTRIM$(Font(I))
    NEXT N
    C = "C" + LTRIM$(RTRIM$(STR$(FontColor)))
    A = "TA" + LTRIM$(RTRIM$(STR$(FontAngle)))
    S = "S" + LTRIM$(RTRIM$(STR$(FontSize * 4)))
    Message = C + A + S + Message + "TA0"
    PSET (X, Y), POINT(X, Y)
    DRAW "X" + VARPTR$(Message):
END SUB
PS. Немного изменил код и внес исправление в начертание некоторых символов.
Модератору просьба удалить мое предыдущее сообщение.
Миниатюры
Графика на бейсике  
7
 Аватар для PAnT0P
1492 / 587 / 106
Регистрация: 26.03.2012
Сообщений: 1,039
07.07.2012, 11:47
Ремейк Color Lines. Делалось на QBasic, но на QB тоже должен работать. Зачем делалось? Да скучно было во время дежурства.

PS. Че то мне понравилось, надо будет код прилизать и на VB.NET портануть
Миниатюры
Графика на бейсике   Графика на бейсике   Графика на бейсике  

Графика на бейсике  
Вложения
Тип файла: zip LINES.zip (94.3 Кб, 211 просмотров)
8
Кормпилятор
 Аватар для Quiet Snow
5043 / 1717 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
06.04.2013, 05:44  [ТС]
Простенький тетрис на QBasic, написал вчера за вечер...
Это кстати мой первый тетрис , знаю что какашка редкостная, ну, что есть то есть...

QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
'
'  Тетрис v 0.2 Alfa
'  Авторство: >Quiet Snow<
'  (c) 2013
'_____________________________
 
  DECLARE SUB PrepareALL ()
  DECLARE SUB DeinitALL ()
  DECLARE SUB DrawPole ()
  DECLARE SUB ClearPole ()
  DECLARE SUB CheckLines ()
  DECLARE SUB SdvigPole ()
  DECLARE SUB CopyToTek (NumFigur%)
  DECLARE SUB CopyTekToPole ()
  DECLARE SUB PoleTekFigureDelete ()
  DECLARE SUB FreezeFigure ()
  DECLARE SUB SaveTekState ()
  DECLARE SUB NextFigureToMem (NumFigur%)
  DECLARE SUB RestoreTekState ()
  DECLARE SUB RotateRight ()
  DECLARE SUB RotateLeft ()
  DECLARE SUB EngineTick ()
  DECLARE SUB Delay (Delitel AS INTEGER)
  DECLARE SUB GoGame ()
  DECLARE SUB HelpScreen ()
  DECLARE SUB MainMenu ()
 
CONST CSize = 8     ' Размер ячейки поля
CONST NSize = 14    ' Размер ячейки поля след фигуры
CONST Figur = 7     ' Сколько фигур в наборе
 
CONST LSz = CSize - 2
CONST NSz = NSize - 2
CONST NfSz = NSize * 4
CONST ObvWdt = CSize * 10, ObvHgt = CSize * 20
DIM SHARED Tm AS LONG, TimerFactor AS LONG, TickControl AS INTEGER
DIM SHARED Kb$, Dn%
DIM SHARED Pole%(9, 23), Figura(Figur - 1, 3, 3) AS INTEGER
DIM SHARED TekF(3, 3) AS INTEGER, PosY%, PosX%, NewFigure%
DIM SHARED Collizion%, NextFigure%, RotF(3, 3) AS INTEGER
DIM SHARED StatF(3, 3) AS INTEGER, NxtF(3, 3) AS INTEGER
DIM SHARED Quit AS INTEGER, StartRound AS INTEGER, GmPause AS INTEGER
DIM SHARED EndRaund AS INTEGER, PlayScore&, FigCv%, NxFigCv%
DIM SHARED ix AS INTEGER, iy AS INTEGER, FstMul%(19), FstMul2%(3)
DIM SHARED px AS INTEGER, py AS INTEGER
DIM SHARED nfx AS INTEGER, nfy AS INTEGER
 
  PrepareALL
 
     MainMenu
 
  DeinitALL
  CLEAR
 
END
DnOn: Dn% = 1: RETURN
DnOff: Dn% = 0: RETURN
 
DATA 0,0,1,0
DATA 0,0,1,0
DATA 0,0,1,0
DATA 0,0,1,0
 
DATA 0,0,0,0
DATA 0,1,0,0
DATA 0,1,0,0
DATA 0,1,1,0
 
DATA 0,0,0,0
DATA 0,0,1,0
DATA 0,0,1,0
DATA 0,1,1,0
 
DATA 0,0,0,0
DATA 0,0,0,0
DATA 0,1,1,0
DATA 0,1,1,0
 
DATA 0,0,0,0
DATA 0,1,0,0
DATA 0,1,1,0
DATA 0,0,1,0
 
DATA 0,0,0,0
DATA 0,0,1,0
DATA 0,1,1,0
DATA 0,1,0,0
 
DATA 0,0,0,0
DATA 0,0,1,0
DATA 0,1,1,0
DATA 0,0,1,0
 
SUB CheckLines
DIM LnFill%, Porog AS INTEGER, Udy%
 iy = 23
 Porog = 4
 DO
    '  Проверка заполненности гориз. линии
    LnFill% = 1
    FOR ix = 0 TO 9
       IF Pole%(ix, iy) = 0 THEN LnFill% = 0
    NEXT
    '  Если заполнена
    IF LnFill% THEN
    PlayScore& = PlayScore& + 100
      FOR Udy% = iy TO Porog STEP -1
         FOR ix = 0 TO 9
            Pole%(ix, Udy%) = Pole%(ix, Udy% - 1)
         NEXT
      NEXT
      FOR ix = 0 TO 9
         Pole%(ix, Porog) = 0
      NEXT
      Porog = Porog + 1
    ELSE
      iy = iy - 1
    END IF
 LOOP UNTIL iy <= Porog
   '  Если уже некуда совать и выходит наверх
   '  То пора игроку сдаться
 FOR ix = 0 TO 9
    IF Pole%(ix, 3) = 1 THEN EndRaund = 1: EXIT FOR
 NEXT
END SUB
 
SUB ClearPole
FOR iy = 0 TO 23
  FOR ix = 0 TO 9
     Pole%(ix, iy) = 0
NEXT ix, iy
END SUB
 
SUB CopyTekToPole
DIM Ccx%, Ccy%
 FOR iy = 0 TO 3
    Ccy% = PosY% + iy
    FOR ix = 0 TO 3
       Ccx% = PosX% + ix
       '  Если попадает в поле
       IF Ccx% > -1 AND Ccx% < 10 AND Ccy% < 24 AND Ccy% >= 0 THEN
          IF TekF(ix, iy) = 2 AND Pole%(Ccx%, Ccy%) = 1 THEN Collizion% = 1
       ELSE
          IF TekF(ix, iy) = 2 THEN Collizion% = 1
       END IF
 NEXT ix, iy
IF PosY% > 20 THEN Collizion% = 1
IF Collizion% = 0 THEN
 FOR iy = 0 TO 3
    Ccy% = PosY% + iy
    FOR ix = 0 TO 3
       Ccx% = PosX% + ix
       '  Если попадает в поле
       IF Ccx% > -1 AND Ccx% < 10 AND Ccy% < 24 THEN
          IF TekF(ix, iy) = 2 THEN Pole%(Ccx%, Ccy%) = TekF(ix, iy)
       END IF
 NEXT ix, iy
END IF
END SUB
 
SUB CopyToTek (NumFigur%)
 FOR iy = 0 TO 3
    FOR ix = 0 TO 3
       IF Figura(NumFigur%, ix, iy) = 1 THEN
       TekF(ix, iy) = 2
       ELSE : TekF(ix, iy) = 0
       END IF
 NEXT ix, iy
END SUB
 
SUB DeinitALL
  KEY(15) OFF
  KEY(16) OFF
END SUB
 
SUB Delay (Delitel AS INTEGER)
 Td = Tm \ Delitel
 Tmr = 0
 DO
   Tmr = Tmr + 1: f = TIMER
 LOOP UNTIL Tmr > Td
END SUB
 
SUB DrawPole
 
FOR iy = 0 TO 19
  FOR ix = 0 TO 9
     'IF Pole%(ix, iy + 4) THEN Cv% = 7 ELSE Cv% = 0
     SELECT CASE Pole%(ix, iy + 4)
       CASE 1: Cv% = 8
       CASE 2: Cv% = FigCv%
       CASE ELSE: Cv% = 0
     END SELECT
     LINE (FstMul%(ix) + px, FstMul%(iy) + py)-STEP(LSz, LSz), Cv%, BF
NEXT ix, iy
LINE (px - 1, py - 1)-STEP(ObvWdt, ObvHgt), 7, B
 
FOR iy = 0 TO 3
  FOR ix = 0 TO 3
     IF NxtF(ix, iy) = 2 THEN Cv% = NxFigCv% ELSE Cv% = 0
     LINE (FstMul2%(ix) + nfx, FstMul2%(iy) + nfy)-STEP(NSz, NSz), Cv%, BF
NEXT ix, iy
LINE (nfx - 1, nfy - 1)-STEP(NfSz, NfSz), 7, B
 
END SUB
 
SUB EngineTick
DIM i AS INTEGER
DIM DnStatus%
 
 TickControl = TickControl + 1
 
   '  Старт раунда
   IF StartRound THEN
     ClearPole
     PlayScore& = 0
     NewFigure% = 1
     NextFigure% = INT(RND * Figur)
     StartRound = 0
   END IF
   '  Новая фигура
   IF NewFigure% THEN
     FigCv% = NxFigCv%
     CopyToTek NextFigure%  ' Откопируем новую фигуру в тек фигуру
     NextFigure% = INT(RND * Figur)
     NextFigureToMem NextFigure%
     NxFigCv% = 125 + RND * 26
     PosY% = -1: PosX% = 3  ' Фигура наверху по центру
     Collizion% = 0
     NewFigure% = 0         ' Пока новых фигур больше не надо
   END IF
  
  
   '  Управление
 
 
   LOCATE 1, 1: PRINT "Score: "; PlayScore&
   IF Dn% = 1 THEN DnStatus% = 0 ELSE DnStatus% = 10
     '  Фигуру по час стрелке
   IF Kb$ = "." OR Kb$ = "ю" OR Kb$ = "Ю" OR Kb$ = CHR$(0) + "H" THEN
     SaveTekState
     RotateRight
     CopyTekToPole
     IF Collizion% THEN
       RestoreTekState
       Collizion% = 0
     ELSE
       PoleTekFigureDelete
       CopyTekToPole
       DrawPole
     END IF
   END IF
 
     '  Фигуру против час стрелки
   IF Kb$ = "," OR Kb$ = "б" OR Kb$ = "Б" THEN
     SaveTekState
     RotateLeft
     CopyTekToPole
     IF Collizion% THEN
       RestoreTekState
       Collizion% = 0
     ELSE
       PoleTekFigureDelete
       CopyTekToPole
       DrawPole
     END IF
   END IF
 
     '  Фигуру налево
   IF Kb$ = CHR$(0) + "K" THEN
     PoleTekFigureDelete    '  Удаляем тек фигуру с поля
     PosX% = PosX% - 1
     CopyTekToPole
     IF Collizion% THEN
       PosX% = PosX% + 1
       CopyTekToPole
       Collizion% = 0
     ELSE
       DrawPole
     END IF
   END IF
 
     '  Фигуру направо
   IF Kb$ = CHR$(0) + "M" THEN
     PoleTekFigureDelete    '  Удаляем тек фигуру с поля
     PosX% = PosX% + 1
     CopyTekToPole
     IF Collizion% THEN
       PosX% = PosX% - 1
       CopyTekToPole
       Collizion% = 0
     ELSE
       DrawPole
     END IF
   END IF
 
   '  Основной движок
   IF TickControl > DnStatus% THEN
     PosY% = PosY% + 1
     PoleTekFigureDelete    '  Удаляем тек фигуру с поля
     CopyTekToPole
     '  Столкновение
     IF Collizion% THEN
       PoleTekFigureDelete  '  Удаляем тек фигуру с поля
       PosY% = PosY% - 1    '  На шаг назад
       FreezeFigure         '  Зафризим на поле тек фигуру
       NewFigure% = 1       '  Подать новую фигуру
       CheckLines           '  Проверим не заполнены ли строки
     END IF
     TickControl = 0
   DrawPole
   END IF
 
END SUB
 
SUB FreezeFigure
DIM Ccx%, Ccy%
 FOR iy = 0 TO 3
    Ccy% = PosY% + iy
    FOR ix = 0 TO 3
       Ccx% = PosX% + ix
       '  Если попадает в поле
       IF Ccx% > -1 AND Ccx% < 10 AND Ccy% < 24 THEN
          IF TekF(ix, iy) = 2 THEN Pole%(Ccx%, Ccy%) = 1
       END IF
 NEXT ix, iy
END SUB
 
SUB GoGame
 
  StartRound = 1
  
    DO: Kb$ = INKEY$
 
     ' Пауза ВКЛ/ВЫКЛ
     IF Kb$ = CHR$(32) THEN
       GmPause = -1 - GmPause: COLOR 7
       IF NOT GmPause THEN LOCATE 12, 17: PRINT "         "
     END IF
 
       IF GmPause THEN
          
           COLOR (COS((TimerFactor AND 31) / (9.8676064716#)) + 1) * 6 + 16
           LOCATE 12, 17: PRINT "[ PAUSE ]"
      
       ELSE
         
           EngineTick
 
       END IF
 
       Delay 80
       TimerFactor = (TimerFactor + 1) AND &HFFFFFF
       IF Kb$ = CHR$(27) THEN Quit = -1
   
    LOOP UNTIL Quit OR EndRaund
 
  Quit = 0
  CLS
END SUB
 
SUB HelpScreen
  CLS
  LOCATE 3, 19: PRINT "Help"
  COLOR 7
  LOCATE 8, 4: PRINT CHR$(17) + "   " + CHR$(16) + "   -   Move figure Left/Right"
  LOCATE 10, 3: PRINT " < " + CHR$(24) + " >   -   Rotate figure"
  LOCATE 12, 6: PRINT CHR$(25); "     -   Fast fall"
  LOCATE 14, 4: PRINT "Space   -   Pause"
  LOCATE 16, 5: PRINT "Esc    -   Exit everywhere"
  COLOR 10
  LOCATE 20, 4: PRINT "Press any key to exit help..."
  WHILE INKEY$ = "": WEND
END SUB
 
SUB MainMenu
V% = 0: Rdr% = 1
KEY(15) OFF
KEY(16) OFF
 
  DO: Kb$ = INKEY$
 
     IF Kb$ = CHR$(0) + "H" AND V% > 0 THEN V% = V% - 1: Rdr% = 1
     IF Kb$ = CHR$(0) + "P" AND V% < 2 THEN V% = V% + 1: Rdr% = 1
     
   IF Rdr% THEN
       CLS 2
       LOCATE 10
       IF V% = 0 THEN COLOR 10: d$ = CHR$(27) ELSE COLOR 7: d$ = ""
           PRINT TAB(18); "Play "; d$; CHR$(10)
       IF V% = 1 THEN COLOR 14: d$ = CHR$(27) ELSE COLOR 7: d$ = ""
           PRINT TAB(18); "Help "; d$; CHR$(10)
       IF V% = 2 THEN COLOR 12: d$ = CHR$(27) ELSE COLOR 7: d$ = ""
           PRINT TAB(18); "Quit "; d$; CHR$(10)
       Rdr% = 0
   END IF
     '  Выбор опции
   IF Kb$ = CHR$(13) THEN
     SELECT CASE V%
       CASE 0: KEY(15) ON: KEY(16) ON
               CLS
               GoGame
               Rdr% = 1
               KEY(15) OFF: KEY(16) OFF
               Kb$ = ""
       CASE 1: HelpScreen: Rdr% = 1
       CASE 2: EXIT DO
       CASE ELSE
     END SELECT
   END IF
     '  Окончание раунда
   IF EndRaund THEN
   DO: LOOP UNTIL INKEY$ = ""
   CLS : LOCATE 11, 10: PRINT "Your record is"
         LOCATE 13, 15: PRINT PlayScore&; "points"
      EndRaund = 0
      WHILE INKEY$ = "": WEND
   END IF
 
  LOOP UNTIL Kb$ = CHR$(27)
CLS
KEY(15) ON
KEY(16) ON
END SUB
 
SUB NextFigureToMem (NumFigur%)
 FOR iy = 0 TO 3
    FOR ix = 0 TO 3
       IF Figura(NumFigur%, ix, iy) = 1 THEN
       NxtF(ix, iy) = 2
       ELSE : NxtF(ix, iy) = 0
       END IF
 NEXT ix, iy
END SUB
 
SUB PoleTekFigureDelete
 StY% = PosY% - 1
 EnY% = PosY% + 4
 IF StY% < 0 THEN StY% = 0
 IF StY% > 23 THEN StY% = 23
 IF EnY% < 0 THEN EnY% = 0
 IF EnY% > 23 THEN EnY% = 23
 FOR iy = StY% TO EnY%
    FOR ix = 0 TO 9
       Pole%(ix, iy) = Pole%(ix, iy) AND 1
 NEXT ix, iy
END SUB
 
SUB PrepareALL
     '  Почистим экран
   CLS
     '  Клавиши на прерывание
   KEY 15, "АP"
   KEY 16, "А" + CHR$(208)
   ON KEY(15) GOSUB DnOn
   ON KEY(16) GOSUB DnOff
   KEY(15) ON
   KEY(16) ON
     '  Определяем задержку
   PRINT "Delay determinating...";
   f = TIMER
   DO: Tm = Tm + 1
   LOOP UNTIL TIMER - f > .5
   PRINT "ok!"
   Tm = Tm * 2
     '  Подгрузим фигуры из DATA
   FOR FgNum = 0 TO Figur - 1
      FOR iy = 0 TO 3
         FOR ix = 0 TO 3
            READ Figura(FgNum, ix, iy)
   NEXT ix, iy, FgNum
     '  Экран
   SCREEN 13
     '  Предрассчёт таблицы
   FOR iy = 0 TO 19
      FstMul%(iy) = CSize * iy
   NEXT
   FOR iy = 0 TO 3
      FstMul2%(iy) = NSize * iy
   NEXT
     '  Положение поля
   px = 123
   py = 20
     '  Положение поля след фигуры
   nfx = 230
   nfy = 20
     '  Цвет фигуры
   FigCv% = 1
   NxFigCv% = 1
     '  Случайность
   RANDOMIZE TIMER
END SUB
 
SUB RestoreTekState
  FOR iy = 0 TO 3
     FOR ix = 0 TO 3
        TekF(ix, iy) = StatF(ix, iy)
     NEXT
  NEXT
END SUB
 
SUB RotateLeft
  FOR iy = 0 TO 3
     FOR ix = 0 TO 3
        RotF(3 - ix, iy) = TekF(3 - iy, 3 - ix)
     NEXT
  NEXT
  FOR iy = 0 TO 3
     FOR ix = 0 TO 3
        TekF(ix, iy) = RotF(ix, iy)
     NEXT
  NEXT
DO
  NeedSdvig = 1
  FOR ix = 0 TO 3
     IF TekF(ix, 3) = 2 THEN NeedSdvig = 0
  NEXT
  IF NeedSdvig THEN
    FOR iy = 3 TO 1 STEP -1
       FOR ix = 0 TO 3
          TekF(ix, iy) = TekF(ix, iy - 1)
       NEXT
    NEXT
    FOR ix = 0 TO 3
       TekF(ix, 0) = 0
    NEXT
  END IF
LOOP WHILE NeedSdvig = 1
END SUB
 
SUB RotateRight
  FOR iy = 0 TO 3
     FOR ix = 0 TO 3
        RotF(3 - ix, iy) = TekF(iy, ix)
     NEXT
  NEXT
  FOR iy = 0 TO 3
     FOR ix = 0 TO 3
        TekF(ix, iy) = RotF(ix, iy)
     NEXT
  NEXT
DO
  NeedSdvig = 1
  FOR ix = 0 TO 3
     IF TekF(ix, 3) = 2 THEN NeedSdvig = 0
  NEXT
  IF NeedSdvig THEN
    FOR iy = 3 TO 1 STEP -1
       FOR ix = 0 TO 3
          TekF(ix, iy) = TekF(ix, iy - 1)
       NEXT
    NEXT
    FOR ix = 0 TO 3
       TekF(ix, 0) = 0
    NEXT
  END IF
LOOP WHILE NeedSdvig = 1
 
END SUB
 
SUB SaveTekState
  FOR iy = 0 TO 3
     FOR ix = 0 TO 3
        StatF(ix, iy) = TekF(ix, iy)
     NEXT
  NEXT
END SUB
 
SUB SdvigPole
 FOR iy = 23 TO 1 STEP -1
    FOR ix = 0 TO 9
       Pole%(ix, iy) = Pole%(ix, iy - 1)
 NEXT ix, iy
 FOR ix = 0 TO 9
    Pole%(ix, 0) = 0
 NEXT
END SUB
0
1045 / 315 / 74
Регистрация: 13.07.2013
Сообщений: 1,270
14.07.2013, 19:04
Недавно написал программу для "текстирования" изображения. Есть, правда, недоработки, но работает =). Вот она:

PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
cls
p$="" 'text       19600
kk$=""
input "A file to compile (short name+.bmp) "; na$
input "A file to create (short name+.txt) "; nam$
open "d:\"+na$ for binary as #1
open "d:\"+nam$ for output as #2
seek #1, 10
get$ #1, 1, a$
shift=asc(a$)
? shift
seek #1, 18
get$ #1, 1, a$
seek #1, 19
get$ #1, 1, b$
widtha=asc(a$)
widthb=asc(b$)
wid=widtha+widthb*256
? wid
seek #1, 22
get$ #1, 1, a$
seek #1, 23
get$ #1, 1, b$
lengtha=asc(a$)
lengthb=asc(b$)
lon=lengtha+lengthb*256
? lon
seek #1, shift
input "width", wi
input "length", le
s=wi*le
l=lon/le
cls
? chr$(201)
if l<>fix(l) then l=fix(l)+1
w=wid/wi
if w<>fix(w) then w=fix(w)+1
dim dynamic k%(1:l,1:w)
for i=1 to lon
ii=fix((i-1)/le)+1
for j=1 to wid
jj=fix((j-1)/wi)+1
seek #1, shift
get$ #1, 1, a$
seek #1, shift+1
get$ #1, 1, b$
seek #1, shift+2
get$ #1, 1, c$
k%(l-ii+1,jj)=k%(l-ii+1,jj)+fix((asc(a$)+asc(b$)+asc(c$))/3)
if ii>l then ? "ii="ii" l="l: end
shift=shift+3
next j
locate 10,10
? fix(100*i/lon)"% is done"
 
next i
for i=1 to l
for j=1 to w
'if len(p$)>19000 then swap p$, kk$
'if len(p$)>19000 and len(kk$)>19000 then cls: ? "overload": end
if k%(i,j)/s<=85 then p$=p$+"Ы"
if k%(i,j)/s<170 and k%(i,j)/s>85 then p$=p$+"+"
if k%(i,j)/s>=170 then p$=p$+" "
next j
p$=p$+chr$(13)
next i
print #2, p$
'if kk$="" then print #2, p$
'if kk$<>"" then print #2, kk$+p$
? "completed"
close #1
close #2
Добавлено через 8 минут
(эта программа написана на Turbo Basic)

Добавлено через 6 минут
Цитата Сообщение от velvet1545 Посмотреть сообщение
ребята знаете что формат бмп шифрованый?
ЧИво? Почему он шифрованый? BMP формат - самый простой и понятный.

Добавлено через 18 минут
Простенький, написанный за несколько минут "осциллограф" с возможностью указания частоты на обоих электродах + маштабирование...

PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
screen 9
input "F of x", xx
input "F of y", yy
input "cmewenue x", xxx
input "cmewenue y", yyy
cls
kk=1/xx
kk=kk*100
kk=int(kk)
kk=kk/100
yy=yy/xx
if kk>1 then ? kk"x"
if kk<1 then ? "1/"xx"x"
xx=1
a=a+xxx/57.3
b=b+yyy/57.3
z=150*|!REG3XP3!>sin(a)+320
w=150*|!REG3XP3!>sin(b)+175
lvl:
x=150*|!REG3XP3!>sin(a)+320
y=150*|!REG3XP3!>sin(b)+175
a=a+xx*0.3
b=b+yy*0.3
if a>20 then a=a-12.56
if b>20 then b=b-12.56
line(x,y)-(z,w)
delay 0.05
line(x,y)-(z,w),0
z=x
w=y
k$=inkey$
if k$="" then lvl
Кривой, но что получилось

Добавлено через 1 час 57 минут
Вот еще одна программка... Понять что она делает, я думаю, будет очень не просто, но объяснять еще треднее . В общих чертах - программа черчения 3d функций. Там надо некоторые константы подработать и будет то, что надо, надеюсь! Вот она:

PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
screen 9
alfa=1.55
gamma=0.5
sc=260
'yy=-100
zz=600
for xx=-100 to 100
for yy=-100 to 100 step 50
gosub drawing
next yy
next xx
for yy=-100 to 100
for xx=-100 to 100 step 50
gosub drawing
next xx
next yy
for xx=-100 to 100 step 20
for yy=-100 to 100 step 20
zz=200-xx-yy
gosub drawing
next yy
next xx
end
 
 
drawing:
z=zz
y=(xx+yy)*0.707+500
x=(xx-yy)*0.707
 
beta=atn(y/x)
beta=-(beta-alfa)
a=tan(beta)*sc
d=sqr((x*x)+(y*y))
beta=atn(z/d)
beta=beta-gamma
'if abs(beta)>89/57.29 then lvl
b=tan(beta)*sc
pset(320+a,175+b)
'? a, b
return
1
1045 / 315 / 74
Регистрация: 13.07.2013
Сообщений: 1,270
14.07.2013, 19:11
Вот вариант получше...
Вложения
Тип файла: zip 3DFUNC.ZIP (412 байт, 68 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.07.2013, 19:11
Помогаю со студенческими работами здесь

решение задач на бейсике
прошу, помогите с решением номера 98 и 99

Можно ли на Бейсике писать хак-софт?
Можно ли на Бейсике писать хакерские программы, типа брутфорсов, чекеров, спамеров, грабберов, реггеров и тд.?

составить разветвляющую программу в бейсике при заранее неизвестных значениях параметров
Пожалуйста помогите нубу составить разветвляющую программу в бейсике при заранее неизвестных значениях параметров

Составить программу в бейсике для вычисления значения функции при заданных параметрах
Пожалуйста помогите нубу составить программу в бейсике для вычисления значения функции при заданных параметрах

Третий раз информатику буду сдавать информатику. На языке Бейсике
Дан одномерный массив A из N элементов. Если четвертый элемент массива больше квадратного 6-го элемента, то каждый четвертый элемент...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru