Автор Тема: BASIC на Сюборе (киборде, магистре и т.п.) примеры программ и т.д.  (Прочитано 1632 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн CRG

  • Пользователь
  • Сообщений: 7
    • Просмотр профиля
Предлагаю несколько своих примеров на G-BASIC. Возможно кому то понадобится для обучения.

Программа имитирующая загрузку данных.

10 CLS
20 LOCATE 1,21
30 PRINT "Press an key."
40 PAUSE
50 BEEP
60 CLS
70 LOCATE 1,9
80 PRINT "Loading..."
90 FOR I=1 TO 20
110 LOCATE I,10
120 PRINT CHR$(254)
130 LOCATE 1,11
140 PRINT "Camplite "; 5*I; "%"
150 PAUSE 5
160 NEXT
170 BEEP
180 END

Программа имитирующая работу мыши. Управление джойстиком.

10 CLS
20 SPRITE ON: CGEN 3
30 X=120: Y=100
40 DEF SPRITE 0,(0,1,0,0,0)=CHR$(161)
50 SPRITE 0,X,Y
60 A=STICK(0)
70 IF A=0 THEN 60
80 IF A=1 THEN X=X+2
90 IF A=2 THEN X=X-2
100 IF A=4 THEN Y=Y+3
110 IF A=8 THEN Y=Y-3
120 IF X<3 THEN X=3
130 IF X>246 THEN X=246
140 IF Y<0 THEN Y=0
150 IF Y>230 THEN Y=230
160 SPRITE 0,X,Y
170 GOTO 60
180 SPRITE OFF: CGEN 2
190 END



Описание работы некоторых операторов G-BASIC. Писал для своего 9 летнего сына.

CLS
Очистка экрана.
Пример:
10 CLS
Программа очищает экран.

PRINT
Вывод сообщения на экран.
Пример:
10 CLS
20 PRINT "Привет!"
Выводит на экран слово Привет!

BEEP
Издать звуковой сигнал.
Пример:
10 CLS
20 BEEP
Программа издаёт звуковой сигнала.

PAUSE
Задать паузу в программе, длительность паузы задаётся числом.
Пример:
10 CLS
20 BEEP
30 PAUSE 200
40 BEEP
Результат программа производит звуковой сигнал, а через 10 секунд
второй звуковой сигнал. 

GOTO
Переход на выполнение строки с указанным номером.
Пример:
10 CLS
20 PRINT "Привет!"
30 GOTO 20
Печатает на экране слово "Привет!" бесконечное число раз.

PLAY
Проигрывает заданную мелодию.
Мелодия записывается следующими значениями:
A,B,C,D,I,F,G - семь тональностей, соответствуют семи нотам.
T - скорость воспроизведения (длительность) значения от 1 до 8.
O - тональность значения от 0 до 5. 0 - самый глухой звук, 5 -самый звонкий звук.
R - сделать паузу в мелодии (отключить на время звук).
Пример:
10 CLS
20 PLAY "ABCDEFG"
30 PAUSE 40
40 PLAY "T1O0ABCDEFG"
50 PAUSE 40
60 PLAY "T8O5ABCDEFG"
Проигрывает мелодию из семи нот 3 раза с разной тональностью и скоростью.

INPUT
Ввод данных с клавиатуры.
Оператор запрашивает данные и присваивает введённое значение указанной переменной.
Пример:
10 CLS
20 INPUT A
30 INPUT B
40 C=A+B
50 PRINT C
Программа запрашивает поочерёдно 2 числа, затем выводит на экран результат их сложения.

FOR, NEXT
Цикл. Повторяет указанное число раз операторы записанные в теле цикла.
Переменная счётчика цикла увеличивает своё значение на 1 при каждом повторении.
Пример:
10 CLS
20 FOR I=1 TO 10
30 PRINT I
40 PAUSE 40
50 BEEP
60 NEXT
Программа выводит на экран поочерёдно цифры от 1 до 10,
после каждой напечатанной цифры следует пауза и звуковой сигнал. 

IF, THEN
Условие. Проверяется заданное условие если оно верно выполняется оператор
записанный после слова THEN.
10 CLS
20 INPUT A
30 INPUT B
40 IF A>B THEN PRINT A;
50 IF B>A THEN PRINT B;
60 PRINT "-больше"
Программа сравнивает 2 числа и выводит ответ какое число больше.

RND
Функция генерирует случайное число от 0 до указанного значения.
Пример:
10 CLS
20 C=RND(1000)
30 PRINT C
40 PAUSE 20
50 GOTO 20
Программа выводит на экран случайные числа от 0 до 1000.

LOCATE
Оператор устанавливает курсор на указанное место экрана.
Первая координата Х (столбец от 0 до 27), вторая координата Y (строка от 0 до 23).
Пример:
10 CLS
20 FOR I=1 TO 15
30 X=RND(27)
40 Y=RND(23)
50 LOCATE X,Y
60 PRINT "*"
70 NEXT
Программа рисует на экране звёздное небо.
« Последнее редактирование: 27 Март 2022, 16:06:48 от CRG »

Оффлайн Rumata

  • Супермодератор
  • Сообщений: 24682
    • Просмотр профиля
Может проще было скан мануала выложить?

Оффлайн CRG

  • Пользователь
  • Сообщений: 7
    • Просмотр профиля
Программа имитирующая меню. Управление крестиком джойстика, выбор пункта кнопка "А".
Символы "_" в тексте программы нужно заменить пробелами.

10 CLS
20 X=1
30 LOCATE 13,5
40 PRINT "M E N U"
50 GOTO 130
60 A=STICK(0)
70 IF STRIG(0)=8 THEN BEEP
80 IF A=0 THEN 60
90 IF A=4 THEN X=X+1
100 IF A=8 THEN X=X-1
110 IF X>3 THEN X=3
120 IF X<1 THEN X=1
130 LOCATE 9,7
140 PRINT "__LOADING"
150 LOCATE 9,9
160 PRINT "__SAVE"
170 LOCATE 9,11
180 PRINT "__EXIT"
190 LOCATE 10,5+X*2
200 PRINT ">"
210 GOTO 60
220 END

Может проще было скан мануала выложить?

Там не всё :cool:
« Последнее редактирование: 27 Март 2022, 16:07:26 от CRG »

Оффлайн Rumata

  • Супермодератор
  • Сообщений: 24682
    • Просмотр профиля
Там не всё :cool:
Так и тут не всё :D

Должно быть что-то типа:
PAUSE
описание: Временно останавливает выполнение программы
формат: PAUSE [n]
сокращение: PA.
параметры: n = 0 - 32768

Game-BASIC - это несколько переделанный Family Basic. Если что, есть его вполне англоязычный оригинальный мануал. С кучей примеров, с BG GRAPHIC и таблицей спрайтов. Без чего это всё вообще не имеет смысла.
Кстати, самые старые русские мануалы тоже были ничего, в более поздних почти всё вырезано.

Оффлайн Rumata

  • Супермодератор
  • Сообщений: 24682
    • Просмотр профиля
Ошибся, вместо слова "пользователь"  прочитал "ПОЗВОЛЬТЕ" :-)
:lol: Я бы посоветовал ещё и словарём иногда пользоваться. Дабы различать "эмиттировать" и "имитировать"  :lol:

Оффлайн CRG

  • Пользователь
  • Сообщений: 7
    • Просмотр профиля

Должно быть что-то типа:
PAUSE
описание: Временно останавливает выполнение программы
формат: PAUSE [n]
сокращение: PA.
параметры: n = 0 - 32768


Ну да, это идеально, только осталось пометить что без операнда [n],  выполнение программы останавливается до нажатия любой клавиши.

У "Магистра" есть книжечка на русском и инструкция к Сюбору  на русском встречается, а это примеры иногда нужны...

:lol: Я бы посоветовал ещё и словарём иногда пользоваться. Дабы различать "эмиттировать" и "имитировать"  :lol:

Да я тут с автоматическим исправлением ошибок замучился всё красным где надо и где не надо помечает, только за ним и смотрю,
эмитирующая  красным не горело 0_0

Ну вообще то да с первого класса страдаю от этого :-(
« Последнее редактирование: 27 Март 2022, 16:15:10 от CRG »

Оффлайн Rumata

  • Супермодератор
  • Сообщений: 24682
    • Просмотр профиля
Мануалы нужно смотреть старые, типа BBG-I, Liko. Где-то у меня был китайский мануал, там вообще даже таблицы спрайтов цветные.

Коды ошибок.

NF   NEXT without FOR
SN   Syntax error
RG   RETURN without GOSUB
OD   Out of DATA   
IL   Illegal function call   
OV   Overflow
OM   Out of memory   
UL   Undefined line Number
SO   Subscript out of range   
DD   Duplicate Definition   
DZ   Devide by Zero
TM   Type mismatch   
ST   String too long   
FT   Formula too complex   
CC   Can’t continue   
MO   Missing operand   
TP   Tape read ERROR

В мануале есть подробная расшифровка

Да я тут с автоматическим исправлением ошибок замучился
Никогда не доверяйте роботам :D Особенно пользователи телефонов на автозамену жалуются.

Оффлайн lupus

  • Пользователь
  • Сообщений: 3813
  • Пол: Мужской
  • man with no face
    • ВКонтакте
    • Просмотр профиля
:lol: Я бы посоветовал ещё и словарём иногда пользоваться. Дабы различать "эмиттировать" и "имитировать"  :lol:
Ещё «Camplite» вместо «Complete» и т.д.

Добавлено позже:
Особенно пользователи телефонов на автозамену жалуются.
В 90% случаев валят собственную неграмотность на «т9».

Оффлайн Rumata

  • Супермодератор
  • Сообщений: 24682
    • Просмотр профиля
Да не, Яндекс мне тоже постоянно исправляет "опечатки" при поиске :lol: Ему ж виднее что я ищу

Оффлайн CRG

  • Пользователь
  • Сообщений: 7
    • Просмотр профиля
Программа имитирующая работу вируса.
В начале 90-x был такой вирус под MS-DOS, на экране осыпались буквы.

10 CLS
20 LIST 10-100
30 X=RND(27)
40 Y=11
50 A$=SCR$(X,Y)
60 IF A$<>CYR(32) THEN 100
70 Y=Y-1
80 IF Y<0 THEN 30
90 GOTO 50
100 LOCATE X,Y: PRINT " "
110 IF SCR$(X,Y+1)<>CHR(32) THEN LOCATE X,Y: PRINT A$;: GOTO 30
120 Y=Y+1
130 LOCATE X,Y: PRINT A$;
140 IF Y=23 THEN 30
150 GOTO 100

Программа посимвольного вывода текста.
Эффект часто используемый в компьютерных играх.
 
10 CLS
20 X=1
30 READ A$
40 IF A$="0" THEN END
50 L=LEN(A$)
60 FOR I=1 TO L
70 LOCATE I,X
80 PRINT MID$(A$,I,1);"_"
90 PLAY "T1O5D"
100 IF MID$(A$,I,1)=" " THEN PAUSE 5
110 NEXT
120 LOCATE L+1,X
130 PRINT " "
140 PAUSE 10
150 X=X+1
160 GOTO 30
170 DATA "Hello, world!", "Demonstration of the program.","0"

Программа бегущая строка.

10 CLS
20 A$="Family Compute."
30 L=LEN(A$): D=1
40 FOR I=27 TO 0 SYEP -1
50 LOCATE I,21
60 PRINT MID$(A$,1,D);" "
70 PAUSE 5
80 D=D+1
90 IF D>L THEN D=L
100 NEXT
110 FOR I=0 TO L
120 LOCATE 0,21
130 PRINT MID$(A$,I+1,L-I);" "
140 PAUSE 6
150 NEXT

Программа: шарик летает по экрану.
Для остановки выполнения программы нужно нажать на любую клавишу.

10 CLS
20 X=50: Y=50
30 XK=1: YK=1
40 SPRITE ON: CGEN 3
50 DEF SPRITE 0,(0,1,0,0,0)=CHR$(207)
60 SPRITE 0,X,Y
70 X=X+XK
80 Y=Y+YK
90 IF X>246 THEN XK=-1
100 IF Y>220 THEN YK=-1
110 IF X<5 THEN XK=1
120 IF Y<5 THEN YK=1
130 IF INKEY$<>"" THEN CGEN 2: SPRITE OFF: END
140 GOTO 60

Оффлайн Rumata

  • Супермодератор
  • Сообщений: 24682
    • Просмотр профиля
Это всё конечно здорово и хорошо. Только зачем этим заниматься на Game-BASIC? Он всё же предназначен исключительно для игр, там Марио должен бегать, а не строка.

Оффлайн CRG

  • Пользователь
  • Сообщений: 7
    • Просмотр профиля

Добавлено позже:
Это всё конечно здорово и хорошо. Только зачем этим заниматься на Game-BASIC? Он всё же предназначен исключительно для игр, там Марио должен бегать, а не строка.

BASIC, хорошо подходит  для изучения программирования.
Нужны были примеры, не нашёл.


Программа мини-игра "Game star", без спрайтов.
Управление джойстиком, кнопка "A" - огонь.

10 CLS: X=13
20 LOCATE 10,10
30 PRINT "GAME STAR"
40 PAUSE: CLS
50 FOR I=1 TO 10
60 LOCATE RND(27),RND(20)
70 PRINT "*"
80 NEXT
90 LOCATE X,22: PRINT CHR$(253)
100 C=STICK(0): D=STRIG(0)
110 IF D=8 THEN GOSUB 210
120 IF C=0 THEN 100
130 LOCATE X,22: PRINT " "
140 IF C=1 THEN X=X+1
150 IF C=2 THEN X=X-1
160 IF X<0 THEN X=0
170 IF X>26 THEN X=26
180 LOCATE X,22: PRINT CHR$(253)
190 PAUSE 2
200 GOTO 100
210 FOR I=21 TO 0 STEP -1
220 LOCATE X,I: PRINT "."
230 LOCATE X,I: PRINT " "
240 NEXT
250 RETURN


Программа демонстрирующая работу со спрайтами. Генератор одного символа.
После первого запуска код на ассемблере будет записан в памяти и апостроф в 20 строке можно убрать.
Программа запрашивает поочерёдно 8 байт в шестнадцатиричной форме
и формирует символ заменяя им букву "a".
Русская буква "Ю": 9C,A2,A2,E2,A2,A2,9C,00
"Рожица": 3C,42,A5,81,A5,99,42,3C

10 CLS
20 'GOTO 70
30 FOR I=&H7600 TO &H7612
40 READ D$
50 POKE I,VAL("&H"+D$)
60 NEXT
70 FOR I=0 TO 7
80 PRINT I+1;" bytes ";: INPUT D$
90 POKE &H7606,15+I
100 POKE &H760E,VAL("&H"+D$)
110 POKE &H2001,0
120 CALL &H7600
130 POKE &H2001,10
140 NEXT
150 PRINT "a"
160 DATA A9,16,8D,06,20,A9,10,8D,06,20,AD,07,20,A9,FF,8D,07,20,60

Таблица для перевода двоичных чисел в шестнадцатиричные:

0000  0
0001  1
0010  2
0011  3
0100  4
0101  5
0110  6
0111  7
1000  8
1001  9
1010  A
1011  B
1100  C
1101  D
1110  E
1111  F

Формирование символа пояснено на рисунке.

« Последнее редактирование: 29 Март 2022, 10:36:14 от CRG »

Оффлайн Rumata

  • Супермодератор
  • Сообщений: 24682
    • Просмотр профиля
BASIC, хорошо подходит  для изучения программирования.
В том же картридже должен быть F-BASIC. Он как-то более подходит для таких целей. Правда с документацией там совсем плохо.

Нужны были примеры, не нашёл.
Да ладно. Даже в русской инструкции есть, хотя надо проверять. Есть английский мануал. У японцев похоже дофига всего. Правда на японском, но листинги-то на английском. Единственно что там BASIC используется по назначению, то есть для игр. И в идеале магнитофон нужен.

И ещё

Может есть смысл оформить нормальный мануал и выложить его отдельным документом в pdf? Потому как формат форума для этого не подходит совсем

Оффлайн CRG

  • Пользователь
  • Сообщений: 7
    • Просмотр профиля
Может есть смысл оформить нормальный мануал и выложить его отдельным документом в pdf? Потому как формат форума для этого не подходит совсем

Кому то понадобится, разберутся, иногда же интересно почитать.

Обучающая программа по математике, предлагается решить 10 примеров
на сложение и вычитание (например 5+3= ), по окончании выводится
количество ошибок и оценка.

Симпатичная программа с голубым экраном.

10 CLS
20 PALETS 0,2,0,0,0
30 N=0
40 LOCATE 4,2
50 PRINT "M A T H E M A T I C S"
60 PLAY "T3ADCDEFG"
70 FOR I=1 TO 10
80 OP=RND(2)
90 C=1: CZ$="+"
100 A=RND(10)
110 B=RND(10)
120 IF OP=0 THEN C=-1: A=RND(6)+5: B=RND(6): CZ$="-"
130 D$=STR$(B):DL=LEN(D$)
140 D$=MID$(D$,2,DL-1)
150 LOCATE 9,6
160 PRINT A;CZ$;D$;"=";
170 INPUT F
180 LOCATE 9,6
190 PRINT "                "
200 IF A+B*C=F THEN N=N+1
210 BEEP
220 NEXT
230 IF N>=5 THEN K=3
240 IF N>=8 THEN K=4
250 IF N>5 THEN K=2
260 IF N=10 THEN K=5
270 LOCATE 3,12
280 PRINT "OSHIBOK";10-N;" OCENKA";K
290 PAUSE
300 PALETS 0,13,0,0,0: CLS

Оффлайн Rumata

  • Супермодератор
  • Сообщений: 24682
    • Просмотр профиля
Кому то понадобится, разберутся,
Хорошая постановка вопроса

Оффлайн Mad

  • Пользователь
  • Сообщений: 7942
  • Пол: Мужской
    • Просмотр профиля
CRG, В текстовый файл запишите всё что делаете, а после выложите на форуме (или не выкладывайте). Напомню, что форум - это не личный блог определенного пользователя.

Оффлайн CRG

  • Пользователь
  • Сообщений: 7
    • Просмотр профиля
...форум - это не личный блог определенного пользователя.

По вопросам личного дискомфорта обращайтесь к модераторам  :D

Программа выводит на экран список операторов, функций и команд G-BASIC.
Операторы LAD (LOAD) и SVE (SAVE) хранятся в памяти в виде L->AD, S->VE. Видимо
не используются в версии картриджей без возможности записи (не проверял).

10 CLS
20 X=0: Y=0
30 FOR I=0 TO 411
40 C=PEEK(&HC129+I)
50 IF (C>41) AND (C<48) THEN PRINT CHR$(C);: GOTO 110
60 IF (C>59) AND (C<90) OR (C=36) THEN PRINT CHR$(C);: GOTO 110
70 Y=Y+1
80 IF Y>22 THEN Y=0: X=X+10
90 IF X>26 THEN PAUSE: CLS: X=0: Y=0
100 LOCATE X,Y
110 NEXT
120 PAUSE



Коды ошибок.

NF   NEXT without FOR
SN   Syntax error
RG   RETURN without GOSUB
OD   Out of DATA   
IL   Illegal function call   
OV   Overflow
OM   Out of memory   
UL   Undefined line Number
SO   Subscript out of range   
DD   Duplicate Definition   
DZ   Devide by Zero
TM   Type mismatch   
ST   String too long   
FT   Formula too complex   
CC   Can’t continue   
MO   Missing operand   
TP   Tape read ERROR


Спасибо, скопировал себе, пригодится.
« Последнее редактирование: 31 Март 2022, 12:27:21 от CRG »

Оффлайн p_star

  • Модератор
  • Сообщений: 5641
  • Пол: Мужской
  • We are The Prodigy...
    • Просмотр профиля
CRG, позаботьтесь пожалуйста о текстовичке, в котором всё вышенаписанное будет изложено. Не нужно захломлять форум этим.
Пока тема закрыта, если надо будет откроем.