Как сделать шашки на скретч

Обновлено: 06.07.2024

Ко мне на занятие приходит новый мальчик лет 10 лет, Максим. Перед началом он презрительно осматривает группу ребят 7-9 лет, все младше него. И говорит: Антон, ну а Скретч же уже нигде не используют, сейчас же на более сложных языках детей учат программировать?
Я: есть и другие языки, а ты на Скретче умеешь работать?
Он: Ну да, делал программы.
Я: отлично, садись, посмотрим что ты умеешь.

Программа такая: наверху экрана плавают 5 воздушных шариков, внизу — ракета, которой мы управляем клавишами влево-вправо. По нажатию на пробел ракета должна вылетать наверх и лопать шарики. Когда все шарики лопнули, показать экран победы.

Ребята бросаются в бой — кто-то начинает с расстановки шариков, кто-то с ракеты и ее управления. Через несколько минут показывают свои программы — шарики висят, ракета ездит влево-вправо.
Замечаю, что новенький Максим сидит, в ступоре глядя, как Сережа рядом быстро делает игру.
— Не пойму, с чего начать?
Я подсказываю — выбери шарики, задай им положение на сцене.
— А как это сделать?
Показываю…
— А как стрельбу сделать?
Рассказываю — делаешь отдельный объект-пулю, она невидимо перемещается за ракетой и следит за нажатием пробела — когда нажимаем, она летит наверх.
— Ничего не понял — как невидимо перемещается, как летит?

В итоге намучался я с этим опытным мальчиком. Как делать плавное движение — не знал, с координатами не разобрался, клонирование не понял. Оказалось, что в такой простой штуке, как Скретч, есть вещи, которых парень не знал. И это базовые вещи — движение, управление объектами…

Зато в конце занятия он начал мне рассказывать, что создает сервер для Майнкрафта.

Такую точку зрения среди ребят я встречаю не первый раз. Что визуальное программирование, где нужно блоки перетаскивать — это просто стыд и позор, ясельная группа:

А вот сервера создавать — для GTA или Майнкрафта — это настоящее крутое программирование.

Действительно ли Скретч — бесполезная трата времени и нужно ли переключать детей на более сложные вещи? Давайте смотреть.

Мнимая крутизна

Что означает, что ребенок создает игровые сервера? Говоря простыми словами, он берет готовую игру, копирует ее и меняет настройки. Что меняет:
— Притяжение (гравитацию)
— длительность дня
— силу удара персонажей
— количество жизней у героя

И задача программирования в том, что ребенок в четко оговоренном месте меняет несколько чисел.
/time set day — и в Майнкрафте наступил день.
/summon horse — и уже бежит квадратная лошадь

Вроде бы в этом нет ничего серьезного? Да, серьезного в выполнении простых команд ничего нет. Умственных усилий при таком программировании почти не прикладывается. Но у ребенка перед глазами совсем другая игра, к которой он приложил руку. И ему кажется, что он сам создал весь этот новый мир. Это открывает ребенку новые возможности:
— Можно говорить друзьям “я вчера новый сервер Майнкрафта сделал”
— Можно считать себя настоящим программистом, который пишет код
— Помечтать о том, что в его версию майнкрафта будут играть тысячи человек и на этом можно заработать

Это мнимая крутизна , давайте помнить что ребенок просто написал три команды по инструкции.

Пар из ушей

Теперь подсмотрим за ребенком, который делает игру в Скретче. Игра такая — мы играем за башню, на которую нападают монстры. Монстры лезут с разных сторон, а мы должны стрелять по ним.

С чего начну? Наверное, с башни, которая стоит посередине и просто стреляет. Потом сделаю монстров, чтобы просто бежали. Потом уже все остальное.

Готовой башни нет, надо поискать в интернете. Вот эта подходит. Добавляю в программу, делаю первые скрипты: чтобы была посередине, чуть поменьше размером.

Так, теперь стрельба. Делаю пулю, пусть следит за направлением мышки. Делаю обработчик клавиши пробел — теперь пуля вылетает в сторону курсора мыши. Отлично!

Непорядок, у нас получается только одна пуля, которая все время вылетает при выстреле. Получается, нельзя выстрелить, пока пуля не улетела за край экрана? Придется заморочиться с созданием клонов — пусть летят клоны, настоящая пуля будет скрыта.
А лучше сделать перерыв, чайку попить…

Оставим ребенка, пусть отдохнет. Вы тоже заметили, что у него шестеренки в голове работали на полную мощность?

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

Пар из ушей во время программирования — это нормально, так и должно быть. Когда дети пишут программы на Scratch, то пар идет.

Бесполезное развлечение?

Теперь о том, полезны ли занятия Скретчем с детьми или это баловство?

Давайте начнем с плохого, с минусов Скретча:

👎 Из-за блоков программы получаются громоздкими. Блоки с движениями героя и сменой его внешности сразу занимают много места. Если же мы начинаем добавлять разные штуки вроде переходов по уровням или стрельбы, программа быстро вырастает.
Дети могут потеряться в программе, их нужно специально учить организовывать свой код. Иначе получится свалка из разных блоков.
👎 Перетаскивание блоков утомляет. Чтобы собрать простое движение героя, нужно сбегать за разными блоками — движение, проверки на нажатие клавиши, циклы. Первые программы получаются медленно. Должно пройти время прежде чем ребенок начнет быстро ориентироваться в готовых кирпичиках команд.
👎 Сложно сделать что-то сложное. В Скретче нет готовых игровых блоков — физики игры, управления персонажами, собиранием предметов и так далее — все нужно делать своими руками. Поэтому выйти на новый уровень, создать сложные и интересные игры не так-то просто. Подавляющее большинство детских проектов однообразны и примитивны — догонялки, стрелялки, кликеры. Создавать что-то сложнее детям самим непросто, их нужно этому специально учить.

Теперь поговорим о хороших сторонах Скретча.

⭐ Главная польза в том, что во время занятий ребенок активно думает. Ему приходится. Ничего не делается само собой. Чтобы герой плавно двигался, прыгал с одной стороны карты на другую, выпускал по несколько пуль сразу — все это нужно делать своими руками. Использовать клоны или нет? Как перебрасывать героя по координатам? Масса задач и проблем, которые приходится решать здесь и сейчас. Отличная тренировка для мозгов.

⭐ Дети осваивают простые инструменты компьютерного языка — циклы, условия, алгоритмы. Да, это происходит в визуальном виде, вместо настоящего

Здравствуйте. Почему у меня шашки появляются сверху, а не снизу? Ответьте пожалуйстаааа 🙏🙏!

Tashmamet Orozaliev

Grigor Mkrtchyan

а куда то в небеса

Grigor Mkrtchyan

не получается у меня я пишу (х -180)и (у -150) он не идет туда

ZAKATAKA

Ааа вообще-то шашки не так ходят

банка помидоров

слелай с ботом плиз

Gamer 2.0

Сделайте игру гонки с ботами

Karlen

Ярослав Василенко

Чтобы сделать квадрат в скретч 2.0 то надо сначала удержать клавишу Shift там где стрелка вверх и нарисовать

Дэхольский маппер

То чувство когда ты слушаешь в наушниках.

DEVAR VA MINECRAFT

LegaBrawler

Круто! Очень жду 2 часть.

ITGENIO Молодцы.
ЖДУ 2 ЧАСТЬ, ВЫ ЛУЧШИЕ В СРЕТЧЕ.
КСТАТИ ТЕПЕРЬ ЭТО СКРЕТЧ 3.

Иллка Иллкович

Сделайте симулятор курьера (яндекс еды) чтобы сделать карту, сделайте отдельный спрайт, где один костюм это маленькая точка а другой это карта.
Когда флаг нажат
Установить X 0 Y 0
Изменить костюм на точка
Установить размер 900
Изменить костюм на карта.

Я ищу, чтобы изучить некоторые основы по картезианской геометрии или координированным игровым программам. Платформа не имеет значения, хотя я больше всего разбираюсь в JavaScript, C, Objective-C. В конечном итоге быть в состоянии создать что-то вроде точек или шашек было бы идеально. Идея заключается в том, чтобы узнать, как спрайты работают и как программа работает программно. Мой вопрос к вам, люди, где лучшее место для изучения основ? Что-то, что не является математическим тяжелым, потому что, чтобы быть откровенным, что-то еще более продвинутое, чем исчисление для меня в этот момент, является серой линией и требует обновления моей памяти.

Если есть конкретная книга, сайт или проект с открытым исходным кодом - это, вероятно, поможет мне больше всего.

Спасибо за любые идеи.

ОТВЕТЫ

Ответ 1

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

Вот список руководств и руководств, которые, я думаю, будут очень полезны для вас, как и для меня и других:

  • Это чрезвычайно подробное руководство для Java Game Framework, которое включает полный исходный код и полную прогулку (с исходным кодом) написания печально известной игры "Змея" на Java, в комплекте с панелью управления, счетной доской и звуковыми эффектами!
  • Книга "Начало программирования Java 5 Game" Джонатана С. Харбора представит вам такие понятия, как 2D-векторная графика и растровое изображение, включая sprite animation. Кроме того, вы можете использовать его на Amazon Marketplace за 12 долларов США.
  • Здесь - невероятное учебное пособие по Sprite Animation, которое содержит более 5 частей! Плюс это написал Ричард Болдуин, профессор CompSci и чрезвычайно надежный и знающий источник. Для получения дополнительных уроков от него это его сайт.

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

Ответ 2

У O'Reilly есть отличный учебник по простой разработке игр с использованием Objective-C и Cocoa на Mac. Линии действий.

Ответ 3

othello, и книга, конечно же, известная PAIP by Питер Норвиг

Ответ 4

На сайте перейдите на страницу Статьи и ссылки, в которой содержатся статьи, написанные разработчиками по различным темам игры.

Вы не узнаете об автомобильном двигателе, прочитав руководство Chilton; вам нужно вытащить капюшон и замарать руки!

Надеюсь, что это поможет.

Ответ 5

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

Каждый прямоугольник или квадрат на доске имеет центральную и центральную координаты. Следующая квадратная диагональ слева - centerx - 82, а centery + 82 или следующая диагональ справа - centerx + 82 и centery + 82. Скачок - всего две диагонали. Сделайте функции отдельными для модуляции вашего кода и без большой математики вы получите простую программу шашек. Легко.

Ответ 6

Ну, для Java существует API под названием GridWorld (его использовали в качестве примера для экзамена AP Computer Science, поэтому я знаком с ним). Он использует систему координат, поэтому вы можете чему-то научиться, глядя на нее.

Ответ 7

Вы, вероятно, захотите понять minimax и Alpha Бета-обрезка.

Ответ 8

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

Для игры AI я рекомендую вам проверить Искусственный интеллект: современный подход от Рассела и Норвига. Это выглядит пугающе, и понимание большей части книги будет иметь практическое знание концепций математики высокого уровня. Тем не менее, он привлекателен и хорошо написан, и вы, вероятно, можете пройти его через первые десятки глав или около того, не попав ни в какие математические наземные мины. Алгоритмы и концепции в этой книге будут более чем достаточно, чтобы помочь вам программировать AI для простой игры и даже помочь вам решить одну из них.

Ответ 9

Мое предложение состояло в том, чтобы использовать среду языка/разработки, которая упрощает работу с спрайтами.

Веб-сайт Scratch содержит тысячи проектов, которые вы можете загружать и редактировать прямо в среде разработки.

Кроме того, есть хороший онлайн-форум, заполненный полезными людьми, если вы застряли!

Как только вы сделаете игру с помощью Scratch, вы можете загрузить/поделиться ею прямо из среды разработки или опубликовать ее на своем собственном веб-сайте (хотя это требует некоторых действий).

Надеюсь, что это поможет.

Ответ 10

Это, вероятно, один из самых известных сайтов для игр/графики в сети. Его форумы подчиняются вычислительной геометрии, алгоритмам и всем уровням концепций программирования графического процессора.

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

Ответ 11

Python отлично подходит для начала работы, а также доступные примеры и учебные пособия.

простейшая игра на скрейтч

  • Перемещение вправо-влево (отдельно этот код описан в проекте — Едущая машинка (scratch для детей 6-7 лет))
  • Движение с изменением направления персонажа
  • Прыжок вверх (отдельное описание кода смотрите в статье — Как сделать прыжок в Scratch)
  • Появление и исчезновение спрайтов
  • Взаимодействие нескольких спрайтов (удар мечом, запуск молнии в противника)
  • Запрыгивание на другой объект
  • Преобразование спрайта в другой объект

Теперь поговорим о каждом из приведенных выше алгоритмах scratch по отдельности. Перед прочтением материала по возможности ознакомьтесь со статьями начального уровня — их я помечаю тегом: для детей 6-7 лет в основной рубрике по детскому программированию. Перед прочтением скачайте графическую часть будущей игры (ZIP-архив)

Программируем движение с изменением направления персонажа

Загружаем начальную графику для игры. Для начала загружаем спрайт и подгружаем первые три костюма для объекта. Если вы не знаете как загрузить спрайт и костюмы, то посмотрите начальные уроки по Скрейт на этом сайте. Дело не в том, что мне лень это написать здесь, а в том, что безопытные пользователи не смогу разобраться в следующем коде. Подробного описания не будет, так как материал расчитан на детей уже знакомых со Скрейтч. И так загружаем графику из скаченного архива:

Последовательность костюмов для идущего ниндзя

Последовательность костюмов для идущего ниндзя

ниндзя бьет по противникам в скрейтч

Ниндзя бьет по противникам в Скрейтч

Сразу загрузим костюм для Бомбермена (одного из врагов ниндзя)

bomberman scratch

Загружаем костюмы для первого врага

Переходим к написанию кода для движения нашего героя с разворотом в направлении выбранном нами на контроллере управления (пульт, джойстик, клавиатура или виртуальные кнопки). Для движения вправо готовый код выглядит следующим образом (движение вправо пишите самостоятельно):

направленное движение в скрейтч

  • Блок Показать — добавлен сюда из-за использования параметра Спрятаться в другом месте игры (пока можете написать код без него);
  • Блок Если касается края, оттолкнуться — позволяет персонажу не уходить за края игровой области (попробуйте вначале написать этот код и не добавлять блок Установить способ вращения и посмотрите, что получится);
  • Установить способ вращения вправо-влево — добавление кода позволяет убрать у персонажа эффект переворачивания с ног на голову при отталкивания от края;
  • Повернуть в направлении -90 — этот код является основным в алгоритме движения спрайта с разворотом в нужном направлении и отвечает непосредственно за поворот в нудном направлении;
  • Идти 10 шагов — отвечает за скорость перемещения персонажа. Отвечает за движение спрайта в том направлении, куда он повернут. Те.е герой не всегда будет идти слева на право ! (поиграйтесь с значением данного блока, а так же попробуйте использовать его без блока Повернуть в направлении -90 градусов)
  • Ждать 0,05 секунд — код добавлен для плавной смены костюмов и визуальной видимости тго, что спрайт идет.
  • Следующий костюм — после каждого нажатия на кнопку персонаж будет менять костюм (попробуйте понажимать на кнопку медленно,а затем просто зажмите ее и посмотрите, что из этого выйдет)


В этой части вы самостоятельно пишите код для движения вправо, а так же позиционирование персонажа при нажатии на запуск игры (Зеленый флажок). Не переживайте, в конце игры будет архив с фотографиями всего программного кода.

Алгоритм прыжка вверх в Scratch

Подробное описание смотрите в статье — Как сделать прыжок в Scratch). Код для ниндзя будет иметь следующий вид:

прыжок в скрейтч

Описание запрограммированных блоков:

  • Показать — показывает персонажа, если до этого по какой-то причине он имел параметр Скрыть (в нашем случае именно так);
  • Задать скорость прыжка значение 0 — Заводим переменную с названием: Скорость прыжка и устанавливаем значение: 0
  • Повторять всегда — блок, который позволяет постоянно выполнять указанный внутри код. Простейший цикл.
  • Если … то — простейший алгоритм условия. Выполняется в зависимости от действий на контроллере управления (клавиатуре)
  • Клавиша W нажата — непосредственное указание, пояснение думаю не требуется 🙂
  • Задать Скорость прыжка значение 20 — устанавливаем значение переменной равное 20 (поиграйтесь с этим параметром и посмотрите, что изменится при его корректировки)
  • Повторить 41 раз — цикл с определенным количеством повторений (Как ты думаешь изменив это значение, что изменится в действиях спрайта?)
  • Изменить y на скорость прыжка — меняем визуальное расположение спрайта в зависимости от значений в переменной. Данный алгоритм кода позволяет видеть плавный прыжок спрайта с постоянным изменением высоты прыжка)
  • Изменить скорость прыжка на -1 — блок отвечает за плавное опускание спрайта по y на изначальное место.

Появление и исчезновение спрайта — удар персонажа в игре

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

удар мечом по противнику в скрейтч

Описание блоков:

  • Когда Зеленый флаг нажат — спрятать спрайт
  • Когда клавиша а нажата — спрятать спрайт (Обратите внимание на блоки синего цвета. Попробуйте вначале написать код без них и посмотрите,что изменится после их добавления!)
  • Когда клавиша d нажата — все так же прячем объект (Вопрос: Как ты думаешь почему для клавиш A и D описаны дополнительные синие блоки, а для прыжка вверх и запуска игры нет?)
  • Когда клавиша w нажата — прячем героя во время прыжка

Зачем написан алгоритм синего цвета:

направление удара мечом в scratch

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

Читайте также: