- Вывод текста
- Программирование
- Оформление
- Расширенные возможности
- Нюансы написания игр под разные плееры
-
- x AeroQSP
- Утилиты и средства разработки
Это старая версия документа.
Пример симуляции двумерного массива
! Индексы i1 0..8 i1_max=9 ! Индексы i2 0..5 i2_max=6 ! Заполнение данных массива i1=0 :ПрыгЗадатьМассив1 i2=0 :ПрыгЗадатьМассив2 $ДвумерныйМассив[i1*i2_max+i2]='[<<i1>>,<<i2>>]' i2+=1 if i2<i2_max : Jump 'ПрыгЗадатьМассив2' i1+=1 if i1<i1_max : Jump 'ПрыгЗадатьМассив1' ! Вывод данных массива i1=0 :ПрыгВыводМассива1 *Nl i2=0 :ПрыгВыводМассива2 *P $ДвумерныйМассив[i1*i2_max+i2]+' ' i2+=1 if i2<i2_max : Jump 'ПрыгВыводМассива2' i1+=1 if i1<i1_max : Jump 'ПрыгВыводМассива1' *Nl !{Результат [0,0] [0,1] [0,2] [0,3] [0,4] [0,5] [1,0] [1,1] [1,2] [1,3] [1,4] [1,5] [2,0] [2,1] [2,2] [2,3] [2,4] [2,5] [3,0] [3,1] [3,2] [3,3] [3,4] [3,5] [4,0] [4,1] [4,2] [4,3] [4,4] [4,5] [5,0] [5,1] [5,2] [5,3] [5,4] [5,5] [6,0] [6,1] [6,2] [6,3] [6,4] [6,5] [7,0] [7,1] [7,2] [7,3] [7,4] [7,5] [8,0] [8,1] [8,2] [8,3] [8,4] [8,5] } !Получение индексов массива через функцию ARRPOS $Поиск='[2,5]' i1=ARRPOS('$ДвумерныйМассив',$Поиск)/i2_max i2=ARRPOS('$ДвумерныйМассив',$Поиск) mod i2_max if ARRPOS('$ДвумерныйМассив',$Поиск)<>-1 : *Nl $Поиск+'=[<<i1>>,<<i2>>]' else *Nl 'Элемент не найден' end !{Результат [2,5]=[2,5] }
В данном примере использованы функции:
Пример работы с массивом имеющим текстовые индексы
! Индексы i1 0..3 i1_max=4 ! Индексы i2 0..5 i2_max=6 ! Заполнение данных массива i1=0 :ПрыгЗадатьМассив1 i2=0 :ПрыгЗадатьМассив2 ! Знак двоеточие используется как разделитель ! между двумя численными индексами переведенными в текст $ДвумерныйМассивТекстовыйИндекс['<<i1>>:<<i2>>']='[<<i1>>,<<i2>>]' ! $МассивИндекс нужен для дальнейшего поиска через ARRPOS/ARRCOMP $МассивИндекс['<<i1>>:<<i2>>']='<<i1>>:<<i2>>' ! МассивПорядок нужен для использования KILLVAR МассивПорядок['<<i1>>:<<i2>>']=ARRSIZE('МассивПорядок') ! Добавлять новый элемент и удалять нужно !только одновременно в 3х массивах i2+=1 if i2<i2_max : Jump 'ПрыгЗадатьМассив2' i1+=1 if i1<i1_max : Jump 'ПрыгЗадатьМассив1' ! Вывод данных массива i1=0 :ПрыгВыводМассива1 *Nl i2=0 :ПрыгВыводМассива2 *P $ДвумерныйМассивТекстовыйИндекс['<<i1>>:<<i2>>']+' ' i2+=1 if i2<i2_max : Jump 'ПрыгВыводМассива2' i1+=1 if i1<i1_max : Jump 'ПрыгВыводМассива1' *Nl !{ Результат [0,0] [0,1] [0,2] [0,3] [0,4] [0,5] [1,0] [1,1] [1,2] [1,3] [1,4] [1,5] [2,0] [2,1] [2,2] [2,3] [2,4] [2,5] [3,0] [3,1] [3,2] [3,3] [3,4] [3,5] } !Получение индексов массива через функцию ARRPOS $Поиск='[3,0]' N=ARRPOS('$ДвумерныйМассивТекстовыйИндекс',$Поиск) if N<>-1: !Ищем разделитель ':' в индексе K=STRPOS($МассивИндекс[N],':') i1=VAL(MID($МассивИндекс[N],0,K-1)) i2=VAL(MID($МассивИндекс[N],K+1,LEN($МассивИндекс[N])-K)) *NL $Поиск+'=[<<i1>>,<<i2>>]' else *Nl 'Элемент не найден' end !{ Результат [3,0]=[3,0] } *NL !Удаление элемента массива через текстовый индекс $Удалить='<<i1>>:<<i2>>' *NL 'Удаляем элемент с индексом <<i1>>:<<i2>>' !Получаем номер элемента N=МассивПорядок[$Удалить] !Удаляем элемент KILLVAR '$ДвумерныйМассивТекстовыйИндекс', N KILLVAR '$МассивИндекс', N KILLVAR 'МассивПорядок', N !Еще раз выводим данные массива i1=0 :ПрыгВыводМассива3 *Nl i2=0 :ПрыгВыводМассива4 if $ДвумерныйМассивТекстовыйИндекс['<<i1>>:<<i2>>']<>'': *P $ДвумерныйМассивТекстовыйИндекс['<<i1>>:<<i2>>']+' ' else *P '[DEL] ' end i2+=1 if i2<i2_max : Jump 'ПрыгВыводМассива4' i1+=1 if i1<i1_max : Jump 'ПрыгВыводМассива3' !{ Результат Удаляем элемент с индексом 3:0 [0,0] [0,1] [0,2] [0,3] [0,4] [0,5] [1,0] [1,1] [1,2] [1,3] [1,4] [1,5] [2,0] [2,1] [2,2] [2,3] [2,4] [2,5] [DEL] [3,1] [3,2] [3,3] [3,4] [3,5] }
Пример использования индекса в названии массива
! Индексы i1 0..5 i1_max=6 ! Индексы i2 0..2 i2_max=3 ! Заполнение данных массива i1=0 :ПрыгЗадатьМассив1 i2=0 :ПрыгЗадатьМассив2 !названия заполняемых массивов !$МассивПеременных0 , $МассивПеременных1 , $МассивПеременных2 DYNAMIC {$МассивПеременных}+i1+{['<<i2>>']='[<<i1>>,<<i2>>]' } i2+=1 if i2<i2_max : Jump 'ПрыгЗадатьМассив2' i1+=1 if i1<i1_max : Jump 'ПрыгЗадатьМассив1' ! Вывод данных массива i1=0 :ПрыгВыводМассива1 *Nl i2=0 :ПрыгВыводМассива2 DYNAMIC {*P $МассивПеременных}+i1+{['<<i2>>'] +' '} i2+=1 if i2<i2_max : Jump 'ПрыгВыводМассива2' i1+=1 if i1<i1_max : Jump 'ПрыгВыводМассива1' !{ Результат [0,0] [0,1] [0,2] [1,0] [1,1] [1,2] [2,0] [2,1] [2,2] [3,0] [3,1] [3,2] [4,0] [4,1] [4,2] [5,0] [5,1] [5,2] }