Без описания |
Поиск в теме | Версия для печати |
Admin |
Отправлено: 08 Июня, 2011 - 22:33:00
|
Администратор
Сообщений всего: 899
Дата рег-ции: Май 2006
|
uiouio пишет:Но не быстрее пятницы - хочется совместить это с обучением программированию ребенка.
Да, это главное. Да и не к спеху. Я просто хотел попросить Вас поделиться результатами.
uiouio пишет:проще состояния клетки отражать не (0;1), а (0;15)
Да, Вы правы.
uiouio пишет:- простые детерминированные условия порождают фракталы очень сложной структуры
- случайные процессы имеют аттракторы в виде геометрически простых фигур
При большом количестве циклов, боюсь, рисоваться будет довольно неспешно.
uiouio пишет:Нельзя
спроси A[i]
Спасибо, что Вы заметили. Я проглядел. Все доделал и выложил.
В новой версии могут встретиться еще какие-либо недоделки. Если Вы что-то заметите, то буду признателен за Ваши замечания. |
|
|
Admin |
Отправлено: 10 Июня, 2011 - 15:12:00
|
Администратор
Сообщений всего: 899
Дата рег-ции: Май 2006
|
Немного оптимизировал парсер, что увеличило скорость приблизительно в 2 - 2,5 раза.
Последняя версия 1.5.0.5.
Добавил команду для вывода массива в виде ряда точек. Очень удобно для моделирования клеточных автоматов, для визуализации сортировки и во многих других случаях, когда требуется визуальное восприятие происходящего в массиве.
ТОЧКА# <имя массива> [, <координата х>, <координата у>]
Каждая точка при этом имеет цвет в соответствии со значением элемента массива. Если значение больше 15 (в GameLogo пятнадцать основных цветов), то точка выводится белым цветом.
Пример использования:
массив M[10,10]
переменная x
переменная y
переменная n
переменная d
переменная count
d = 10
перо 50
спрятать черепаху
загрузи в M
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 14 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 14 14
0 0 0 0 0 0 0 0 14 0
0 0 0 0 0 0 0 0 0 0
0 0 0 14 14 0 14 14 14 14
0 0 14 14 0 0 14 14 14 0
0 0 0 0 0 0 14 14 0 0
0 0 0 0 0 0 14 0 14 14
конец загрузки
повторять пока 1 = 1 {
ТОЧКА# M, 150, 50
повторить для y = 2 до d - 1 {
повторить для x = 2 до d - 1 {
n = 0
если M[x-1,y] = 14 то n = n + 1
если M[x-1,y-1] = 14 то n = n + 1
если M[x,y-1] = 14 то n = n + 1
если M[x-1,y+1] = 14 то n = n + 1
если M[x,y+1] = 14 то n = n + 1
если M[x+1,y+1] = 14 то n = n + 1
если M[x+1,y] = 14 то n = n + 1
если M[x+1,y-1] = 14 то n = n + 1
если n > 3 то если M[x,y] = 14 то M[x,y] = 0
если n = 3 то M[x,y] = 14
если n < 2 то если M[x,y] = 14 то M[x,y] = 0
}
}
count = count + 1
пиши count
} |
|
|
uiouio |
Отправлено: 14 Июня, 2011 - 23:33:38
|
Рядовой
Сообщений всего: 14
Дата рег-ции: Июнь 2011
|
Добрый вечер.
1.
Нашел старый файл - игру гонки, на котором показывал ребенку возможности GameLogo.
Выкладываю, хоть и с задержкой.
Тогда я удовлетворился, что общая концепция работает. А сейчас стал проверять и обнаружил интересную штуку - проверка на столкновение машин не приводит к действию в этот момент. Можете заменить в строке
если машина.у - грузовик.у < 80 то звук = bom.wav
число 80 на что-нибудь другое, например 10, звук все равно издается после того как машины проехали "друг сквозь друга". При это если вставить
спроси х
как точку останова, то все срабатывает правильно. У меня не получилось сделать так, чтобы звук издавался в нужный момент.
2.
Более того, решил добавить изменяемую скорость (в первоначальном варианте было .y = .y + 1). Оказывается, что нажатие на клавишу Up равносильно многим нажатиям и скорость сразу становится максимальной, а нажатие на Down - скорость сразу падает до нуля. Мне кажется это все некие ошибки, которые Вы легко поправите.
3.
Среди математических конструкций нет самой употребительной - abs, приходится писать
если переменная < 0 то переменная = -переменная
4.
Вывод массива одной командой (точка # M)может быть удобно, но лучше избежать вездесущей сейчас моды добавлять в язык все, что может сгодится. Дело в том, что операция эта нужна только там, где надо выводить точки цветом, а это не столь часто. Кроме того, ее замена в виде цикла, содержащего повторить ... точка M[i,j] проста и понятна. И лично мне не нравится, что точки выводятся слитно друг другу - все равно придется использовать цикл. GameLogo привлекает тем, что нет ничего лишнего. На Ваше усмотрение.
|
|
|
Admin |
Отправлено: 16 Июня, 2011 - 21:29:27
|
Администратор
Сообщений всего: 899
Дата рег-ции: Май 2006
|
uiouio пишет:Выкладываю, хоть и с задержкой.
Спасибо, что Вы поделились.
uiouio пишет:2.
Более того, решил добавить изменяемую скорость (в первоначальном варианте было .y = .y + 1). Оказывается, что нажатие на клавишу Up равносильно многим нажатиям и скорость сразу становится максимальной, а нажатие на Down - скорость сразу падает до нуля. Мне кажется это все некие ошибки, которые Вы легко поправите.
Это не ошибки, это стандартный практически для всех языков программирования способ обработки событий. Как бы Вы по другому управляли автомобилем в Вашей игре? Многократно нажимая на одну и ту же клавишу? А проблема, которую Вы описываете, решается уменьшением приращения.
Пример:
скорость = скорость + 0.05
uiouio пишет:3.
Среди математических конструкций нет самой употребительной - abs, приходится писать
если переменная < 0 то переменная = -переменная
Функция ABS() есть. К сожалению, все никак не доходят руки сделать полное описание языка.
Пример
переменная А
А = -5
пиши ABS(А)
Спасибо, что Вы напомнили про эту функцию. Вставил в описание.
Еще один неописанный момент. Записи вида
если расстояние < 40 то
если машина.у - грузовик.у < 80 то звук = bom.wav
конец условия
лучше записывать в виде
если расстояние < 40 то если машина.у - грузовик.у < 80 то звук = bom.wav
Однострочные вложенные условия обрабатываются на порядок быстрее без рекурсивного вызова обработчика. Команда ИНАЧЕ при этом может быть только у последнего вложенного условия. Таким образом легко реализуется любая конъюнкция.
uiouio пишет:4.
Вывод массива одной командой (точка # M)может быть удобно, но лучше избежать вездесущей сейчас моды добавлять в язык все, что может сгодится.
Данная команда абсолютно необходима при моделировании клеточных автоматов для быстрой перерисовки.
nest пишет:нужен раздел форума для "Проекты для GAMELogo"...
Сейчас сделаю.
uiouio пишет:столкнулся с необходимостью иметь функцию round
На днях сделаю. |
|
|
Admin |
Отправлено: 24 Июня, 2011 - 12:22:40
|
Администратор
Сообщений всего: 899
Дата рег-ции: Май 2006
|
cjA пишет:а вот А пачему?
для корпоративных систем где одну половину кода придумали в китае, а другую в индии- аля уиндовс 7- это пунктуально, иначи бы и не заработало..
А почему для домашней системы где я знаю сам и решаю сам где какой байт лежит- не придумать что "у всех массивов есть свойство- наполняемость и больше наполняемости в массив написать нельзя и больше наполняемости прочесть из него нельзя" ?
Потому что иначе появляется неоднозначность при обработке двумерных массивов.
В команде ЗАГРУЗИТЬ В используется именно "наполняемость" и никаких предупреждений об ошибке GameLogo не выдает, но при случайном пропуске в блоке данных могут начаться проблемы. Начинающий может не сразу понять без предупреждения, что у него не так.
cjA пишет:Ведь эта ошибка- всего лишь свойство процессора вызывать прерывание по достижении определенной величины счетчика. Наследие х86
Сообщение об ошибке выдает сам GameLogo.
cjA пишет:с английского переводим напрямую
Может быть, как-то попроще. Я предполагал как-то совместить с простенькой обработкой ошибок. Некоторые дети конструкцию "если - то - иначе -" с трудом понимают, а тут целый селектор.
Вообще концепция GameLogo не в том, чтобы повторить какой-то язык программирования, а в том чтобы представить простой инструмент для начального обучения программированию, при этом по возможности максимально сохранив восходящую преемственность по отношению к распространенным высокоуровневым языкам программирования, чтобы потом не пришлось переучиваться.
При этом момент "чтобы не пришлось переучиваться" очень важен, именно поэтому GameLogo и был сделан, потому что распространенная среда программирования на Logo, которая называется "Лого Миры", - это большая проблема для тех детей, которым приходится потом начинать изучение программирования на Си, Бейсике или Паскале.
Вот сохранить восходящую преемственность и сделать попроще для начинающих - главная и довольно сложная задача.
Вообще тема, которую Вы затронули в рамках своего комментария "GameLogo становится взрослым, глядишь уже и обработка исключений добавится", очень интересная. Тем более, что постепенно либо черепашка в GameLogo должна обрести больше робототехнических функций, либо выделиться в отдельный родственный язык РобоЛого. А роботы - это уже серьезно
Поэтому предлагаю выделить эту тему в отдельную ветку, если Вы готовы по этому поводу что-то развить и предложить. |
|
|
cjA |
Отправлено: 25 Июня, 2011 - 16:01:41
|
Генерал
Сообщений всего: 3291
Дата рег-ции: Янв. 2010
|
"если то" - должно восприниматься довольно просто, а вот "иначе"- действительно сложно , потому что "иначе" подразумевает в общем случае бесконечное множество ответов, а бесконечность даже не все студенты понимают.
нет, мне пожалуй больше нечего добавить к вопросу об ошибках, тем более в той концепции языка как это сделано в GameLogo.
(Пока нечего. Посмотрю как это сделано в Ява и почему сделано не так как в Ада. Вот в Ява действительно непонятный обработчик ошибок, а подниматься Вы наверное хотите к нему, нежели к почти мертвому Ада, пример из которого я и привел.)
(либо в GameRobo, имхо Лого - это уже чужая торговая марка )
(Добавление)
Хм. А какие чаще всего ошибки возникают в GameLogo? Есть статистика? (Вроде писали про закрывающую скобку , но это ошибка кодирования , а не выполнения.) |
|
|
|
Поиск в теме | Версия для печати |
Страниц (3): « 1 [2] 3 » |
« GameLOGO » |
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
|
|
|
|
|