Discuss Scratch

paralg-100
Scratcher
13 posts

Скретч-помощь by Marcus-Cactus

Psyox wrote:

Не надо каждый раз ставить scratchblocks, и между состыкованными блоками не должно быть пробелов

идти (5) шагов
повернуть вправо на (15) градусов
сказать [Привет]

Получилось.
Большое спасибо.

Last edited by paralg-100 (Jan. 11, 2018 11:51:23)

Marcus-Cactus
Scratcher
100+ posts

Скретч-помощь by Marcus-Cactus

Не работает
Прости я в коде написал немного неправильно
определить сканер
если <(буква (№_буквы) в [код]) = (буква (1) в [(слово)])> , то
задать [слово] значение (слить [код2] и [world]) // Здесь ошибка
иначе
если <(длина [слово]) > [4]> , то
задать [код2] значение (слить [код2] и (слить [(] и (слить ((слить (длина [ (слова) ]) и (буква (1) в [слово])) / (10)) и [)])))
задать [слово] значение (буква (№_буквы) в [код])
иначе
задать [ код2] значение (слить (код2) и [(слово)])
end
end
изменить [№_буквы] на (1)
Надо заменить world на
(буква (№_буквы) в [код])

Last edited by Marcus-Cactus (Jan. 11, 2018 11:54:40)

paralg-100
Scratcher
13 posts

Скретч-помощь by Marcus-Cactus

Удален ошибочно введенный повторный пост.

Last edited by paralg-100 (Jan. 11, 2018 12:17:24)

Marcus-Cactus
Scratcher
100+ posts

Скретч-помощь by Marcus-Cactus

0шибка была устранена. Пост удален автором.

Last edited by Marcus-Cactus (Jan. 11, 2018 14:31:05)

paralg-100
Scratcher
13 posts

Скретч-помощь by Marcus-Cactus

Marcus-Cactus wrote:

А зачем дважды один пост выкладывать? Я прост что-то не понял

Это моя промашка.
Я зашел на форум с самого начала:
Форумы / Русский.
Но не увидел там своего поста (проглядел) - думал, что не сохранил или что-то там еще..
Сделал пост повторно.

А потом увидел первый пост и удалил повторный.
Точнее, объяснил, но сам пост (контейнер) остался .
Такие дела.

————————–
Кстати говоря:
не нашел, как можно удалить свой авторский пост (в течение какого-то времени)?
Marcus-Cactus
Scratcher
100+ posts

Скретч-помощь by Marcus-Cactus

————————–
Кстати говоря:
не нашел, как можно удалить свой авторский пост (в течение какого-то времени)?
Удалить пост невозможно, но можно его редактировать (а редакция временем не ограничена))
P.s.: Можно конечно пожаловаться, но я еще не пробовал

Last edited by Marcus-Cactus (Jan. 12, 2018 12:41:48)

Marcus-Cactus
Scratcher
100+ posts

Скретч-помощь by Marcus-Cactus

Советы
Клоны. Игра без глюков.

Всем привет! Этот пост – продолжение к моему предыдущему совету. Идеей для этого совета послужила запись на форуме. Итак… приступим:

1. Всегда удаляйте клоны. Как и говорил coder2_0 (создатель записи) игра начинает глючить если прятать клоны, вместо того, чтобы их удалять.

2. Не создавайте слишком много клонов. Это тоже сильно тормозит проект. (не забывайте: клонов может быть до 300 экземпляров!)

3. Делайте действия клонов максимально проще. Это сделает игру легче (информативно легче) и уменьшит количество лагов в игре. Например, избегайте блока “всегда”, т.к. он занимает очень много памяти (по сравнению с другими блоками)

Ну вот и все. Ждите новых советов

Last edited by Marcus-Cactus (Jan. 13, 2018 19:03:51)

Marcus-Cactus
Scratcher
100+ posts

Скретч-помощь by Marcus-Cactus

Советы
“Убегающий” спрайт

Вот увидел такой интересный вопрос на форуме:

Ambrik wrote:

Здравствуйте. Подскажите, пожалуйста, как сделать так, чтобы один спрайт “убегал” от другого?
Хотел бы поделиться здесь своим ответом.
1. Для начала создадим спрайт, который будет догонять. Назовем его “спрайт 1”
2. Создим 2, “убегающий” спрайт. Его костюм (именно костюм!) мы должны развернуть на 180 градусов или отразить (справа на лево и слева на право). Это нужно для того, чтобы спрайт, убегая, был повернут в нужную сторону.
3. Пишем код для 2 спрайта:

когда щёлкнут по зелёному флагу
всегда
повернуться к [спрайт 1]
идти (-10) шагов
end

Действие 2 мы сделали не просто так. Убегающий спрайт поворачивается к спрайту 1 (догоняющему спрайту) и “отступает”, идет задом. По этому, мы заранее поменяли переднюю сторону костюма убегающего и его заднюю сторону. По этому, спрайт будет уже не отступать (лицом к противнику), а убегать (спиной к противнику). Вот и все.
Рад был помочь

Last edited by Marcus-Cactus (Jan. 14, 2018 16:20:21)

Marcus-Cactus
Scratcher
100+ posts

Скретч-помощь by Marcus-Cactus

Советы
Невозможные блоки. Часть 3.

Спасибо RuMaks за идею для этого поста. Вот такой блок мы собираемся сделать:

когда<>::events hat

А вот как это сделать:

когда щёлкнут по зелёному флагу
когда <мышка нажата?> // условие можно поставить любое

определить когда (условие)
ждать до <(условие) = [true]>
Дальнейший код :: grey

Вот теперь вы знаете как сделать этот “невозможный” блок. Ждите новых советов
Marcus-Cactus
Scratcher
100+ posts

Скретч-помощь by Marcus-Cactus

Советы
Невозможные блоки. Часть 4.

Этот пост я создал в ответ на запись by Tank_Create333. И одним из блоков, который он хотел сделать был этот:

Останановить скрипты этого спрайта до момента <>::control 

Вот как его заменить за 2 шага:

1. Создайте переменную “стоп скрипты спрайта 1”. При написании вашего кода в каждое действие добавляете это условие:

если <(стоп скрипты спрайта 1) = [0]> , то
действие... :: grey
end
если <(стоп скрипты спрайта 1) = [0]> , то
действие... :: grey
end
если <(стоп скрипты спрайта 1) = [0]> , то
действие... :: grey
end
И т.д. ::grey

2.Создайте 2 таких скрипта (без условия!):

когда щёлкнут по зелёному флагу
задать [стоп скрипты спрайта 1] значение [0]
определить Останановить скрипты этого спрайта до момента (момент)
задать [стоп скрипты спрайта 1] значение [1]
ждать до <(момент) = [true]>
задать [стоп скрипты спрайта 1] значение [0]

А когда надо будет использовать “невозможный” блок, просто добавляете это в код:

Останановить скрипты этого спрайта до момента <мышка нажата?> // условие здесь можно поставить любое

Ожидайте новых советов!

Last edited by Marcus-Cactus (Jan. 14, 2018 16:03:11)

Ambrik
New Scratcher
3 posts

Скретч-помощь by Marcus-Cactus

Привет! Спасибо за помощь с убегающим спрайтом!. Не подскажите как сделать так чтобы он не только убегал, но и мог отталкиваться от стенок, если преследующий его спрайт не слишком близко. Пытался сделать, так но что-то не идет. Объясните, пожалуйста, в чем я не прав

если <(расстояние до [ спрайт 2]) > [15]> , то 
если на краю, оттолкнуться


иначе
повернуться к [ спрайт 2]
сменить костюм на [ v]
идти (-5) шагов
end
Marcus-Cactus
Scratcher
100+ posts

Скретч-помощь by Marcus-Cactus

Ambrik wrote:

Привет! Спасибо за помощь с убегающим спрайтом!. Не подскажите как сделать так чтобы он не только убегал, но и мог отталкиваться от стенок, если преследующий его спрайт не слишком близко. Пытался сделать, так но что-то не идет. Объясните, пожалуйста, в чем я не прав

если <(расстояние до [ спрайт 2]) > [15]> , то 
если на краю, оттолкнуться


иначе
повернуться к [ спрайт 2]
сменить костюм на [ v]
идти (-5) шагов
end

Вроде надо так:

если <(расстояние до [спарйт 2 v]) < [15]> , то
повернуться к [спрайт 2 v]
идти (-10) шагов
если <(расстояние до [спарйт 2 v]) > [15]> , то
если на краю, оттолкнуться
end
end

Просто в твоем варианте он когда не двигается может отскакивать. А это бесполезно, т.к. когда он движется, он не может отскакивать и наоборот. Мой вариант немного по другому устроен… (и может сработать)

Last edited by Marcus-Cactus (Jan. 16, 2018 04:23:44)

Ambrik
New Scratcher
3 posts

Скретч-помощь by Marcus-Cactus

Marcus-Cactus wrote:

Ambrik wrote:

Привет! Спасибо за помощь с убегающим спрайтом!. Не подскажите как сделать так чтобы он не только убегал, но и мог отталкиваться от стенок, если преследующий его спрайт не слишком близко. Пытался сделать, так но что-то не идет. Объясните, пожалуйста, в чем я не прав

если <(расстояние до [ спрайт 2]) > [15]> , то 
если на краю, оттолкнуться


иначе
повернуться к [ спрайт 2]
сменить костюм на [ v]
идти (-5) шагов
end

Вроде надо так:

если <(расстояние до [спарйт 2 v]) < [15]> , то
повернуться к [спрайт 2 v]
идти (-10) шагов
если <(расстояние до [спарйт 2 v]) > [15]> , то
если на краю, оттолкнуться
end
end

Просто в твоем варианте он когда не двигается может отскакивать. А это бесполезно, т.к. когда он движется, он не может отскакивать и наоборот. Мой вариант немного по другому устроен… (и может сработать)

Эти операторы с больше-меньше в связке с сенсорами расстояния до спрайта по моему вообще не работают
Marcus-Cactus
Scratcher
100+ posts

Скретч-помощь by Marcus-Cactus

Ambrik wrote:

Marcus-Cactus wrote:

Ambrik wrote:

Привет! Спасибо за помощь с убегающим спрайтом!. Не подскажите как сделать так чтобы он не только убегал, но и мог отталкиваться от стенок, если преследующий его спрайт не слишком близко. Пытался сделать, так но что-то не идет. Объясните, пожалуйста, в чем я не прав

если <(расстояние до [ спрайт 2]) > [15]> , то 
если на краю, оттолкнуться


иначе
повернуться к [ спрайт 2]
сменить костюм на [ v]
идти (-5) шагов
end

Вроде надо так:

если <(расстояние до [спарйт 2 v]) < [15]> , то
повернуться к [спрайт 2 v]
идти (-10) шагов
если <(расстояние до [спарйт 2 v]) > [15]> , то
если на краю, оттолкнуться
end
end

Просто в твоем варианте он когда не двигается может отскакивать. А это бесполезно, т.к. когда он движется, он не может отскакивать и наоборот. Мой вариант немного по другому устроен… (и может сработать)

Эти операторы с больше-меньше в связке с сенсорами расстояния до спрайта по моему вообще не работают
Поэксперементируй с цифрами. Проверяй расстояния. Ну а вообще советую избавится от них в коде
Scratchinko
New Scratcher
2 posts

Скретч-помощь by Marcus-Cactus

Уважаемые друзья. Есть простая вещь: 10 backdrops. Есть 11 спрайтов. Один из них перемещается по этим десяти комнатам. Идея очень простая: приходит он в эту комнату, там собака или кошка или еще кто, и он с ними здоровается. В каждой комнате свой один зверек.

Я вообще программист со стажем в 30 лет, но разобраться не могу. 8-0

Вот по дефолту делаю спрайты, кроме перемещаемого, скрытыми. Вот делаю команду для спрайта собаки:

when backdrop switched to b_dog - пришли на вкладку (backdrop) с собачкой
show
Это все работает. Но перемещаюсь на другой backdrop

И вот тут по идее нужна команда: если backdrop <> b_dog then hide
Не вижу, как это сделать. А без скрытия раз активированный спрайт остается на экране.


Marcus-Cactus
Scratcher
100+ posts

Скретч-помощь by Marcus-Cactus

Scratchinko wrote:

Уважаемые друзья. Есть простая вещь: 10 backdrops. Есть 11 спрайтов. Один из них перемещается по этим десяти комнатам. Идея очень простая: приходит он в эту комнату, там собака или кошка или еще кто, и он с ними здоровается. В каждой комнате свой один зверек.

Я вообще программист со стажем в 30 лет, но разобраться не могу. 8-0

Вот по дефолту делаю спрайты, кроме перемещаемого, скрытыми. Вот делаю команду для спрайта собаки:

when backdrop switched to b_dog - пришли на вкладку (backdrop) с собачкой
show
Это все работает. Но перемещаюсь на другой backdrop

И вот тут по идее нужна команда: если backdrop <> b_dog then hide
Не вижу, как это сделать. А без скрытия раз активированный спрайт остается на экране.
Просто создаешь переменную “костюм фона”, а зверек показывается, если переменная имеет значение его названия(и прячется, если переменная не соответствует его названию). А фон, меняясь задает значение переменной. Вообще можно использовать этот блок, без переменной:

если <(фон #) = [2]> , то
показаться
иначе
спрятаться
end

И кстати, можно было и не создавать такое количество спрайтов. Нужно воспользоваться клонами. Тагда будет всего 2 спрайта (человек и зверки). А как сделать клонов разнозадачными я говорил здесь
Рад был помочь

Last edited by Marcus-Cactus (Jan. 18, 2018 04:42:11)

Scratchinko
New Scratcher
2 posts

Скретч-помощь by Marcus-Cactus

Спасибо. В итоге даже без клонов вышло, просто костюмчик менять.
XXXer
Scratcher
4 posts

Скретч-помощь by Marcus-Cactus

Как сделать блокнот???
Идеи есть но оформлять каждую букву очень сложно!
можно сделать так
когда щёлкнут по зелёному флагу
спросить [] и ждать
сказать (ответ)

хотя придётся оформлять
каждую букву,создать переменную(какая последняя буква)
ЭТО МУТОРНО!!!!!!!!!!!
Marcus-Cactus
Scratcher
100+ posts

Скретч-помощь by Marcus-Cactus

Можно сделать 3 способами:
1 Создай список. Покажи его и расположи на экране нужным образом. Затем вот такой код:
показать список [ Блокнот v]
всегда
спросить [Введите текст] и ждать
добавить (ответ) к [Блокнот v]
end

2 Создай переменные (строка 1), (строка 2) и т.д. Расположи их нужным образом на экране, так чтобы (строка 1) в самом верху, (строка 2) пониже, (строка 3) еще ниже и т.д. Затем определи макс. длинну строки. Сделай так, чторбы программа разделяла текст на отдельные кусочки, длинной в максимальную длинну строки, сохраняла их в список и задавала переменным значение элемента их номера. К примеру (строка 1) будет иметь значение ((((№страницы - 1)*(кол-во строк))) + (1) элемента из списка ) (я добавил №страницы, т.к. одной может не хватить). Добавить в код "спросить "

3 Написать все буквы на форуме и заскринить. Затем вырезать их в каком-нибудь редакторе изображений и вставить в проект. Ну а дальше можно разобраться)

Надеюсь смог помочь
Marcus-Cactus
Scratcher
100+ posts

Скретч-помощь by Marcus-Cactus

Советы

“Догоняющий” спрайт


Этот совет будет совсем небольшим. Раз я создал убегающий спрайт, то и догоняющий я тоже должен сделать. И так… Поехали:

1. Создайте убегающий спрайт (ну нужно же кого-то догонять) и догоняющий спрайт.
2.В код догоняющего написать это:

когда щёлкнут по зелёному флагу
всегда
повернуться к [убегающий спрайт v]
идти (10) шагов
end

Вот и все. Окозалось все просто. Ждите новых советов

Этот вариант кода “убегающего спрайта” by RuMaks.
Он для скретчера среднего уровня:

когда щёлкнут по зелёному флагу
задать [Скорость v] значение [2]//здесь можно поэкспериментировать (прим. автора)
всегда
задать [Старое направление v] значение (направление)
повернуться к [указатель мышки v]
задать [Новое направление v] значение (направление)
повернуть в направлении (Старое направление)
если <(направление) < (Новое направление )> , то
изменить [Старое направление v] на (Скорость)
end
если <(направление) > (Новое направление )> , то
изменить [Скорость поворота v] на ((0) - (Скорость))
end
повернуть вправо на (Скорость поворота) градусов
изменить [Скорость по х v] на (([sin v] от (направление)) * (Скорость))
изменить [Скорость по у v] на (([cos v] от (направление)) * (Скорость))
изменить x на (Скорость по х)
изменить y на (Скорость по у)
задать [Скорость по х v] значение ((Скорость по х) * (0.8)) // Здесь стоит иммено 0.8 -- подоброно опытными скретчерами (прим. ред.)
задать [Скорость по у v] значение ((Скорость по у) * (0.8)) // Тоже самое (прим. ред.)
задать [Скорость поворота v] значение ((Скорость поворота) * (0.8)) // И здесь 0.8 (прим. ред.)
end

Last edited by Marcus-Cactus (Jan. 30, 2018 17:04:30)

Powered by DjangoBB