Важная информация

User Tag List

Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 19 из 19

Тема: Обнулить DATA в BASIC

  1. #11
    Banned
    Регистрация
    25.01.2005
    Адрес
    Miass, Chelyabinsk region
    Сообщений
    4,094
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    перед 5 байт числа еще 0E. гиблый способ.

  2. #12
    Super Moderator Аватар для Ewgeny7
    Регистрация
    03.07.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,168
    Спасибо Благодарностей отдано 
    146
    Спасибо Благодарностей получено 
    76
    Поблагодарили
    51 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Проще хранить и читать прямо в памяти POKE/PEEK. Читай элемент какой тебе заблагорассудится.
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

    Сайт с документацией к "Scorpion ZS 256"

  3. #13
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,560
    Спасибо Благодарностей отдано 
    1,223
    Спасибо Благодарностей получено 
    1,754
    Поблагодарили
    683 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от JeRrS Посмотреть сообщение
    Хм, RESTORE восстанавливает позицию с нуля а не удаляет заполненную DATA. А как тогда удалить информацию из DATA и заполнить её в туже переменную?.
    Как можно удалить что-то из DATA, если это массив КОНСТАНТ?

  4. #14
    Guru Аватар для null_device
    Регистрация
    26.09.2009
    Адрес
    г. Красноярск
    Сообщений
    3,099
    Спасибо Благодарностей отдано 
    22
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    68 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Через массив DIM n[$](m[, m1, m2, .. mx]) где n - имя переменных массива, $ - необязательный параметр (только для строковых переменных), m - количество переменных в массиве (если массив многомерный, добавляются параметры m1, m2, .. mx).
    На практике, это может выглядеть так:
    ...
    10 DIM A (10) ; задаем массив из 10 элементов
    20 FOR I = 1 TO 10 ; организуем цикл
    30 LET A (I) = RND ; заносим данные в массив
    40 NEXT I ; конец цикла
    ...
    При этом дав команду go to 20, массив (в данном случае) заполниться уже другими значениями.

    ---------- Post added at 15:39 ---------- Previous post was at 15:37 ----------

    Цитата Сообщение от JeRrS Посмотреть сообщение
    мне нужно чтобы предыдущие 10 заменились на другие 10. Как организовать?
    Можно узнать, откуда будут браться данные для заполнения в первом и во втором случае? Если вы храните в DATA-строке глобальные переменные (положение окон, начальные данный, карты уровней и т.п.) не вижу сложности в том, что будет несколько однотипных строк, для выборки данных из которых делаем RESTORE n (где n - адрес строки с данными), а потом READ a, b, .. x. В данном случае при разных значениях n, данные a, b, .. x будут разными.
    А заменять программным способом значения в троках DATA - это какой-то "китайский коммунизм"! Все можно организовать намного проще. Например, вот как я организовывал хранение данных об окнах в DATA-строках (см. вложение - игра сапер). Со строки 7000 идут блоки микропрограмм с параметром "выбора окна" (строка RESTORE n), подпрограмма для работы с данными начинается со строки 9500, сами данные расположены со строки 9900.
    Последний раз редактировалось null_device; 03.05.2011 в 12:01.
    Когда есть, но не знаешь где - это все равно, что нету.

  5. #15
    Guru Аватар для null_device
    Регистрация
    26.09.2009
    Адрес
    г. Красноярск
    Сообщений
    3,099
    Спасибо Благодарностей отдано 
    22
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    68 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от JeRrS Посмотреть сообщение
    как не через INPUT можно заполнить массив?
    Через ту же связку restore n, read n, data n. Как альтернатива, если числа целые, через PEEK n [+256*PEEK (n+1) - если число "двухбайтное"], но их нужно, все равно, предварительно как-то загрузить в память (вручную, через data-строки или с кассеты\диска).

    ---------- Post added at 16:09 ---------- Previous post was at 16:05 ----------

    Цитата Сообщение от JeRrS Посмотреть сообщение
    про DIM неплохая идея
    Только, числовые переменные (и массивы, как частный случай числовой переменной) в бейсике "сьедают" много памяти..

    Цитата Сообщение от JeRrS Посмотреть сообщение
    да все очень просто, если X=1 значит такие то 10 если X=2 значит другие 10
    Тогда можно использовать массив DIM A (x, n), где x - зависит от того сколько одинаковых x-наборов будет у вас, а n-количество чисел для "выборки".

    ---------- Post added at 16:11 ---------- Previous post was at 16:09 ----------

    Внес кое-какие изменения в 19 сообщение - перечитайте, на всякий случай..

    ---------- Post added at 16:11 ---------- Previous post was at 16:09 ----------

    В соседней ветке увидел новую игру, анонсированную вами. Возможно ошибаюсь, но не для нее ли вы искали алгоритм хранения данных?!
    Рассмотрев листинг, пришел к выводу, что данные хранятся, несколько "неоптимально". Как массив, так и DATA-строки можно было оформить в виде символьный переменных. Тогда перенос лабиринта из строки DATA в массив можно было бы выполнить "целой строкой" READ d$: LET a$ (t)=d$, где t - это "строка", а не счетчик очередного элемента лабиринта.
    Последний раз редактировалось null_device; 03.05.2011 в 21:04.
    Когда есть, но не знаешь где - это все равно, что нету.

  6. #16
    Guru Аватар для null_device
    Регистрация
    26.09.2009
    Адрес
    г. Красноярск
    Сообщений
    3,099
    Спасибо Благодарностей отдано 
    22
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    68 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от JeRrS Посмотреть сообщение
    Жмем клавишу а он мне его номер
    В смысле, "код" нажатой клавиши (число от 32 до 164-255)? Либо, с помошью "конструкции" LET n = CODE INKEY$, либо через переменную last_k (23560), не забывая "обнулять" ее после процедуры обработки нажатия клавиши. Например так:
    Код:
    ..
    10 poke 23560,0 ; "обнуляем" переменную
    20 let n = peek 23560 ; присваиваем значение
    30 if not n then goto 20 ; "ждем" нажатия
    40 if n = 32 then print "press space" ; обработка факта нажатия space 
    42 if n = 13 then print "press enter" ; обработка факта нажатия enter
    50 goto 10 ; завершение "цикла"
    ..
    ----
    Важно!
    Таким способом можно "опрашивать" только нажатие одной клавиши. Т.е., при одновременном зажатии нескольких клавиш ни одна из них, не будет "распознана".
    Последний раз редактировалось null_device; 17.11.2011 в 16:32.
    Когда есть, но не знаешь где - это все равно, что нету.

  7. #16
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #17
    Guru Аватар для null_device
    Регистрация
    26.09.2009
    Адрес
    г. Красноярск
    Сообщений
    3,099
    Спасибо Благодарностей отдано 
    22
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    68 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Скрытый текст

    Цитата Сообщение от JeRrS Посмотреть сообщение
    Если верить вашей программе получается я все IF N - ??? должен буду заполнить? от 32 до 127
    Не обязательно.. данная программа проверяет нажатие двух клавиш и выводит надпись о факте их нажатия. У вас это может быть реакция для управления спрайтом\курсором и т.п.
    Допустим, вам нужно определить нажатие одной из пяти клавиш (например 67890). Коды этих клавиш можно поместить в массив (или ячейки памяти) и сравнивать с ними так:
    Код:
    for i = 1 to 5 : read k(i) : next i
    data 54, 55, 56, 58, 48 
    ..
    if n = k(1) then..
    if n = k(2) then...
    if n = k(3) then...
    if n = k(4) then...
    if n = k(5) then...
    ..
    ----
    Хотя, более компактно, при использовании массива хранить значения для клавиш в "символьном" виде. Занимает меньше места в памяти и позволяет "на лету" менять "управляющие" клавиши.
    Код:
    let k$ = "67890" 
    ..
    if chr$ n = k$(1) then..
    if chr$ n = k$(2) then..
    if chr$ n = k$(3) then..
    if chr$ n = k$(4) then..
    if chr$ n = k$(5) then.. ; либо так if n = code k$(5) then..
    ..
    При этом для смены управляющий клавиш в программе, достаточно присвоить переменной k$ другую символьную последовательность, например let k$ = "qaopm".
    [свернуть]

    ---------- Post added at 20:53 ---------- Previous post was at 20:40 ----------

    Цитата Сообщение от JeRrS Посмотреть сообщение
    получается я все IF N - ??? должен буду заполнить? от 32 до 127 ?
    Для "высвечивания" только кода нажатой клавиши можно поступить намного проще:
    Код:
    10 print at 0, 0; code inkey$ ;"  " : goto 10
    Обьясните, подробно, для чего вам нужен код нажатой клавиши?
    Последний раз редактировалось null_device; 17.11.2011 в 17:15.
    Когда есть, но не знаешь где - это все равно, что нету.

  9. #18
    Guru Аватар для null_device
    Регистрация
    26.09.2009
    Адрес
    г. Красноярск
    Сообщений
    3,099
    Спасибо Благодарностей отдано 
    22
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    68 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от JeRrS Посмотреть сообщение
    Чтобы заполнить её в POKE. Будет последовательное нажатие и одновременное заполнение в POKE нажатых символов.
    Не совсем понял? Речь о чем-то типа "програмного буфера" ввода с клавиатуры? Нэ?!
    ----
    Если что - вся "таблица" клавиш есть в конце книжки ZX Spectrum для пользователей и прграммистов..
    Когда есть, но не знаешь где - это все равно, что нету.

  10. #19
    Guru Аватар для null_device
    Регистрация
    26.09.2009
    Адрес
    г. Красноярск
    Сообщений
    3,099
    Спасибо Благодарностей отдано 
    22
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    68 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от JeRrS Посмотреть сообщение
    Так понятнее теперь?
    Теперь, "допер"!
    ----
    В свое время, похожим способом "учил русскому языку" музыкальный редактор WHAM!
    Когда есть, но не знаешь где - это все равно, что нету.

Страница 2 из 2 ПерваяПервая 12

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Подключение дисковода 5,25'' YE Data YD-380C
    от Kuper в разделе Внешние накопители
    Ответов: 17
    Последнее: 07.08.2022, 17:37
  2. laser basic
    от johnny в разделе Программирование
    Ответов: 32
    Последнее: 17.02.2014, 22:57
  3. Орион-128: BASIC
    от ivagor в разделе Орион
    Ответов: 28
    Последнее: 03.05.2012, 20:03
  4. Программы на BASIC
    от form в разделе ДВК, УКНЦ
    Ответов: 14
    Последнее: 17.04.2010, 15:41

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •