Author Topic: Работа с двумерным массивом, нужны идеи.  (Read 1227 times)

0 Members and 1 Guest are viewing this topic.

DominatorBLR

  • Зашел в гости
  • *
  • Posts: 3
    • View Profile
Не давно работаю с кликером, много уже что на нём получилось сделать благодаря справке и форуму (я не программист), но вот появилась необходимость сделать массив как таблица и брать из неё данные и менять. Не могу придумать как это реализовать, какими командами, у меня то не удаляет лепит один за одним значения, то не могу понять как прочитать нужное.
Задача вот в чём: есть время от 1 до 60 минут, мне нужно будет присваивать каждой минуте определенное значение для режима 1, потом при режиме 2 значения другие (для той же минуте), возможно и большее кол-во режимов. В режиме обучения я задаю значения, а потом в программе мне нужно вынимать нужное значение и использовать его для своего режима. Наверное не понятно объяснил. Привиду гипотетический пример, так как конкретно моя программа большая, нет смысла её объяснять.
 Имеем таблицу вида
   - режим 1 - режим 2 - ...
1 -     123    -     234
2 -     125    -     236
3 -     165    -     455
4 -     233    -     101
... и т.д.
Нужно вынимать в переменную по запросу значения соответствующие нужному времени и нужному режиму. А в режиме изменения записывать на нужную позицию нужное число.
А так же находить в массиве нужное число и выводить время и режим.
Значения нужно сохранять в файле, так как они почти константа и меняться буду редко при обучении.
Как это лучше реализовать?
« Last Edit: April 13, 2018, 01:48:42 PM by DominatorBLR »

DominatorBLR

  • Зашел в гости
  • *
  • Posts: 3
    • View Profile
Изучаю функции и вот завис хотя бы на таком простом, помогите. для начала заполняю однострочный массив данных в файл
Code: [Select]
for ($time = 59, $time > 0, -1)
getscreen
$count = PXLCRC ($x+1,$y-31,$x+53,$y+2)
print($time," мин - ", $count)
INIWRITE("book.ini", $time, $count, 1)
wait(1)
end_cyc
Всё хорошо, получаю какой-то массив, что бы с ним дальше работать:
Quote
[1]
59=1150769073
58=1150769073
57=1150769073
56=1150769073
55=1150769073
54=1150769073
53=1150769073
.....
Далее хочу прочитать всё это в лог и не пойму как: пустые строки лезут в лог
code
for ($time = 59, $time > 0, -1)
   $str = INIREAD("book.ini", $time) // ошибку нашел
   print($str)
end_cyc
/code
Не могу понять синтаксис. Как правильно записать?
« Last Edit: April 13, 2018, 03:03:38 PM by DominatorBLR »

DominatorBLR

  • Зашел в гости
  • *
  • Posts: 3
    • View Profile
С последним разобрался, забыл указать section - название секции
Code: [Select]
for ($time = 59, $time > 0, -1)
   $str = INIREAD("book.ini", $time, 1)
   print($str)
end_cyc

Хотя я подумал что для моих задач достаточно просто сделать 2-3-... файла и просто запрашивать в разных, их не много будет. Но хочется сделать всё правильно. Как вариант думаю можно оперировать секциями. Копаю дальше, если у кого появились идеи готов выслушать.
« Last Edit: April 13, 2018, 03:12:30 PM by DominatorBLR »

Johnny

  • Создатель
  • Герой форума
  • *
  • Posts: 593
    • View Profile
Но хочется сделать всё правильно.
чем восхитительно программирование, так это тем что тут нет понятия "правильно".
есть только "работает", "не работает" ну и всякие мелочи вроде скорости выполнения и отказоустойчивости.

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