Здравствуйте. В предыдущей статье разобрали, как заставить летать черепашку по экрану. Сегодня хочу внести в наш код изменения. Первое это сделать, что бы наша черепашка появлялась в случайном месте. Второе это добавить нашей черепашке еще подобных разных цветов.
Импортируем библиотеку «random». После строки, где мы создали нашу черепашку «star», вставляем команду «hideturtle», которая спрячет нашу черепашку. Это надо что бы перемещение нашей черепашки в случайные координаты не было видно. Далее создаем две переменные «rx» и «ry» в которые будут присваиваться случайные координаты, с помощью функции «randint», диапазон выставим от -230 до 230. Беру меньше экрана, что бы черепашка не появлялась на самой границе. Далее делаем перемещение нашей черепашки в эти координаты, используя функцию «goto». После этого делаем нашу черепашку видимой, команда «showturtles». Теперь наша черепашка появляется в случайной точке экрана.
С первой частью разобрались. Теперь переходим ко второй. Давайте раскрашивать нашу черепашку в случайный цвет. Подробно про цвета было написано в этой статье. Там мы создавали функцию случайного выбора цвета, возьмем ее и применим к нашей черепашке. Изменим, где мы приписывали нашей черепашке желтый цвет, на нашу функцию. Теперь при запуске нашей программы, черепашка раскрашивается в случайный цвет.
Теперь давайте скорость движения черепашки по осям сделаем случайной. Нашим переменным отвечающим за скорость, будем присваивать случайные значения, используя функцию «randint» от -5 до 5. Вот так это выглядит.
Переходим к созданию множества черепашек. Использовать будем цикл «for» ТУТ про него есть статья. И функцию «range» статья ТУТ. Создадим переменную «col» которая будет отвечать за количество наших черепашек. И список «turt» который будет хранить в себе информацию о черепашках. Создаем цикл «for» и весь код который отвечает за создание черепашек, двигаем внутрь цикла. В конце цикла вносим информацию о черепашке, скорости перемещения по оси x и y в список «turt» используя метод «append». Вот что получается.
Теперь самое сложное и запутанное. В нашем цикле «while» который отвечает за движение черепашки, делаем обход нашего списка «turt» с помощью цикла «for» и обращаемся к каждому мячику по индексу «i». За один обход цикла «turt [i]» будет содержать в себе три значения, по позиции «turt [i][0]» - черепашка, «turt [i][1]» - скорость по оси x, а по позиции «turt [i][2]» - скорость по оси y. Теперь заменяем все значения, на соответствующие. Черепашку на «turt [i][0]», переменную «sx» на «turt [i][1]», переменную «sy» на «turt [i][2]». И не забудьте весь код сдвинуть внутрь цикла «for» Должно получиться так.
В этом примере мы использовали вложенные списки это очень не удобно, так как легко можно запутаться и сложно понять, где и что. Такую задачу можно решить другими методами, но об этом не в этой статье.
Ставим количество черепашек = 50, скорость по оси x и y выставляем от -30 до 30 и запускаем нашу программу. Добавим еще один параметр скорость, что бы черепашки появлялись быстрее.
И получаем вот такой результат.
Листинг кода лежит ТУТ.
На сегодня все.
Спасибо за внимание!
До новых встреч!
PS. В эту статью забыл написать самое главное, рецепт для бешенства наших черепашек, без этого они медленные и тормозные. В начале ЭТОЙ статьи выложил рецепт их ускорения.