Similar presentations:
Улица – город, работа с функциями и списками. Ч. 3
1.
Модуль 3. Урок 1.Улица – город, работа с
функциями и списками. Ч. 3
➔ Minecraft и Python
2.
Модуль 3. Урок 1. Улица – город Ч.3Повторение
3.
Продемонстрируй знанияПодтверждение
квалификации
Python Minecraft!
4.
Подтверждениеквалификации
Какую работу мы проделали на
предыдущем занятии?
5.
На предыдущемзанятии, мы
продолжили выполнять
заготовку нашего
огромного проекта:
‘Улица – город с
функциями и списками’
Подтверждение
квалификации
Какую работу мы проделали на
предыдущем занятии?
6.
Цикл в Python - это способ повторения определенного блокакода несколько раз. Он позволяет выполнять одни и те же
действия многократно, пока выполняется определенное
условие.
Повторение
пройденного материала
Что такое Цикл?
7.
Цикл for - это специальный цикл, который используютпрограммисты, чтобы повторить какое-то действие определенное
количество раз
Цикл For, говорит компьютеру: "Повтори это действие для каждого
предмета из списка, пока не закончатся предметы".
Таким образом, мы можем автоматизировать повторяющиеся задачи в
программировании.
Повторение
пройденного материала
Что мы знаем о цикле For?
8.
Новая тема:Знакомство со средой
Roblox Studio
For — Пока
|fɔːr|
9.
Библиотеки в Python - это как набор инструментов,которые другие программисты уже сделали и дали вам
использовать. Эти инструменты помогают вам делать
разные вещи, не создавая всё с нуля.
Для использования библиотеки, вам нужно сначала её
установить, а затем импортировать в свой код с
помощью команды import
Повторение
пройденного материала
Что такое библиотеки в Python?
10.
Какие вы знаете библиотеки?Эта библиотека позволяет вам работать со временем.
Мы можем использовать её, чтобы узнать текущее время,
измерить, сколько времени занимает выполнение вашего кода, и
сделать паузу в программе.
Библиотека Random
Эта библиотека позволяет создавать случайные числа и
данные.
Мы можем использовать её, чтобы получать случайные числа
или выбирать случайные вещи из списка.
Итак, time помогает вам работать с временем, а random - с генерацией
случайных данных в ваших программах на Python.
Повторение
пройденного материала
Библиотека Time
11.
Модуль 3. Урок 1. Улица – город Ч.3Новая тема:
Заготовка проекта
Улица – город.
12.
Улица – город.Улица - город
Наш проект практически готов, но для
того, чтобы начать его строить нам
нужно нарисовать схему и план
улицы.
13.
Улица – город.Чтобы создать улицу как на схеме, нам
необходимо применить списки и
согласно им расставить здания. Коды
зданий мы упакуем в функции, тем
самым сократим программу.
«Мозговой
штурм»
Работать со списками мы умеем и коды
всех сооружений у нас есть
14.
Улица – город.«Мозговой
штурм»
Создадим файл street.py и запишем
давно уже известные наши
стандартна строчки кода
15.
Практическая работа:Street.py
«Street.py!»
16.
«Street.py!»Приступим к написанию нашего города.
Для построения воспользуемся уже имеющимися способами алгоритмов
строительства.
Создадим файл street.py и запишем стандартные 7 строчек кода.
from mcpi.minecraft import Minecraft
from collections.abc import Iterable
import collections
import mcpi.block as block
collections.Iterable = Iterable
mc = Minecraft.create()
pos = mc.player.getTilePos()
17.
«Street.py!»mc.setBlocks(pos.x , pos.y – 1, pos.z, pos.x +
110, pos.y – 1, pos.z + 200, 7)
x = pos.x
y = pos.y
z = pos.z
Теперь мы должны создать однородную поверхность, на которой и разместим
наши сооружения. Пустые обширные области будут считаться дорогой. Для
создания поверхности используем блок BEDROCK под кодом 7.
После этого введём условные обозначения, которые присутствовали в
предыдущих программах, чтобы не создавать путаницу.
18.
«Street.py!»#11 - dom_N
#12 - dom_S
#13 - dom_E
#14 - dom_W
#21 - dom2_N
#22 - dom2_S
#3 - bashny
#4 - most
d11 = [3, 0, 13, 13, 13, 13, 13, 0, 3, 0]
d21 = [22, 0, 14, 14, 14, 14, 14, 0, 21, 0]
d31 = [22, 0, 21, 0, 0, 0, 22, 0, 21, 0]
d41 = [22, 0, 21, 4, 22, 0, 21, 0]
d51 = [3, 0, 14, 14, 14, 14, 14, 0, 3, 0]
d61 = [22, 0, 13, 13, 13, 13, 13, 0, 21, 0]
Настало время создания списков, для начала определимся с какой точки начать
построение. Самым лучшим вариантом будет начать всё с точки 0.
Создадим списки с условными обозначениями.
19.
«Street.py!»#11 - dom_N
#12 - dom_S
#13 - dom_E
#14 - dom_W
#21 - dom2_N
#22 - dom2_S
#3 - bashny
#4 - most
d11 = [3, 0, 13, 13, 13, 13, 13, 0, 3, 0]
d21 = [22, 0, 14, 14, 14, 14, 14, 0, 21, 0]
d31 = [22, 0, 21, 0, 0, 0, 22, 0, 21, 0]
d41 = [22, 0, 21, 4, 22, 0, 21, 0]
d51 = [3, 0, 14, 14, 14, 14, 14, 0, 3, 0]
d61 = [22, 0, 13, 13, 13, 13, 13, 0, 21, 0]
Списки созданы согласно чертежу, теперь впишем по очереди все функции для
построения данных сооружений.
Введём функции четырёх домов по сторонам света.
Важно! Не забудьте сделать отступы под функцию. Для этого в
основном используется клавиша Tab или 4 пробела.
20.
«Street.py!»def dom_N():
sx = pos.x + 2 + 5 / 2 # центр по X
sy = pos.y + 5 / 2 # центр по Y
sz = pos.z + 5 / 2 # центр по Z
mc.setBlocks(pos.x + 1, pos.y, pos.z, pos.x + 6, pos.y + 5, pos.z + 5, block.GOLD_BLOCK.id)
mc.setBlocks(pos.x + 2, pos.y + 1, pos.z + 1, pos.x + 5, pos.y + 4, pos.z + 4, block.AIR.id)
mc.setBlocks(sx - 1, pos.y + 1, pos.z, sx, pos.y + 2, pos.z, block.AIR.id)
mc.setBlocks(sx + 1, sy + 1, pos.z, sx + 1, sy + 2, pos.z, block.GLASS.id)
mc.setBlocks(sx - 2, sy + 1, pos.z, sx - 2, sy + 2, pos.z, block.GLASS.id)
mc.setBlocks(pos.x + 1, sy + 1, sz + 2, pos.x + 1, sy + 2, sz + 2, block.GLASS.id)
mc.setBlocks(pos.x + 1, sy + 1, sz - 1, pos.x + 1, sy + 2, sz - 1, block.GLASS.id)
mc.setBlocks(pos.x + 6, sy + 1, sz + 2, pos.x + 6, sy + 2, sz + 2, block.GLASS.id)
mc.setBlocks(pos.x + 6, sy + 1, sz - 1, pos.x + 6, sy + 2, sz - 1, block.GLASS.id)
mc.setBlocks(pos.x + 1, pos.y + 6, pos.z, pos.x + 6, pos.y + 6, pos.z + 5, block.IRON_BLOCK.id)
mc.setBlocks(pos.x + 2, pos.y + 7, pos.z, pos.x + 5, pos.y + 7, pos.z + 5, block.IRON_BLOCK.id)
mc.setBlocks(pos.x + 3, pos.y + 8, pos.z, pos.x + 4, pos.y + 8, pos.z + 5, block.IRON_BLOCK.id)
Функция для создания дома с фасадом на север.
21.
«Street.py!»def dom_S():
sx = pos.x + 2 + 5 / 2 # центр по X
sy = pos.y + 5 / 2 # центр по Y
sz = pos.z + 5 / 2 # центр по Z
mc.setBlocks(pos.x + 1, pos.y, pos.z, pos.x + 6, pos.y + 5, pos.z + 5, block.GOLD_BLOCK.id)
mc.setBlocks(pos.x + 2, pos.y + 1, pos.z + 1, pos.x + 5, pos.y + 4, pos.z + 4, block.AIR.id)
mc.setBlocks(sx - 1, pos.y + 1, pos.z + 5, sx, pos.y + 2, pos.z + 5, block.AIR.id)
mc.setBlocks(sx + 1, sy + 1, pos.z + 5, sx + 1, sy + 2, pos.z + 5, block.GLASS.id)
mc.setBlocks(sx - 2, sy + 1, pos.z + 5, sx - 2, sy + 2, pos.z + 5, block.GLASS.id)
mc.setBlocks(pos.x + 1, sy + 1, sz + 2, pos.x + 1, sy + 2, sz + 2, block.GLASS.id)
mc.setBlocks(pos.x + 1, sy + 1, sz - 1, pos.x + 1, sy + 2, sz - 1, block.GLASS.id)
mc.setBlocks(pos.x + 6, sy + 1, sz + 2, pos.x + 6, sy + 2, sz + 2, block.GLASS.id)
mc.setBlocks(pos.x + 6, sy + 1, sz - 1, pos.x + 6, sy + 2, sz - 1, block.GLASS.id)
mc.setBlocks(pos.x + 1, pos.y + 6, pos.z, pos.x + 6, pos.y + 6, pos.z + 5, block.IRON_BLOCK.id)
mc.setBlocks(pos.x + 2, pos.y + 7, pos.z, pos.x + 5, pos.y + 7, pos.z + 5, block.IRON_BLOCK.id)
mc.setBlocks(pos.x + 3, pos.y + 8, pos.z, pos.x + 4, pos.y + 8, pos.z + 5, block.IRON_BLOCK.id)
Функция для создания дома с фасадом на юг.
22.
«Street.py!»def dom_E():
sx = pos.x + 2 + 5 / 2 # центр по X
sy = pos.y + 5 / 2 # центр по Y
sz = pos.z + 5 / 2 # центр по Z
mc.setBlocks(pos.x + 1, pos.y, pos.z, pos.x + 6, pos.y + 5, pos.z + 5, block.GOLD_BLOCK.id)
mc.setBlocks(pos.x + 2, pos.y + 1, pos.z + 1, pos.x + 5, pos.y + 4, pos.z + 4, block.AIR.id)
mc.setBlocks(pos.x + 6, pos.y + 1, sz, pos.x + 6, pos.y + 2, sz + 1, block.AIR.id)
mc.setBlocks(pos.x + 6, sy + 1, sz + 2, pos.x + 6, sy + 2, sz + 2, block.GLASS.id)
mc.setBlocks(pos.x + 6, sy + 1, sz - 1, pos.x + 6, sy + 2, sz - 1, block.GLASS.id)
mc.setBlocks(sx - 1, sy + 1, pos.z, sx - 1, sy + 2, pos.z, block.GLASS.id)
mc.setBlocks(sx + 1, sy + 1, pos.z, sx + 1, sy + 2, pos.z, block.GLASS.id)
mc.setBlocks(sx - 1, sy + 1, pos.z + 5, sx - 1, sy + 2, pos.z + 5, block.GLASS.id)
mc.setBlocks(sx + 1, sy + 1, pos.z + 5, sx + 1, sy + 2, pos.z + 5, block.GLASS.id)
mc.setBlocks(pos.x + 1, pos.y + 6, pos.z, pos.x + 6, pos.y + 6, pos.z + 5,
block.IRON_BLOCK.id)
mc.setBlocks(pos.x + 1, pos.y + 7, pos.z + 1, pos.x + 6, pos.y + 7, pos.z + 4,
block.IRON_BLOCK.id)
mc.setBlocks(pos.x + 1, pos.y + 8, pos.z + 2, pos.x + 6, pos.y + 8, pos.z + 3,
block.IRON_BLOCK.id)
Функция для создания дома с фасадом на восток.
23.
«Street.py!»def dom_W ():
sx = pos.x + 2 + 5 / 2 # центр по X
sy = pos.y + 5 / 2 # центр по Y
sz = pos.z + 5 / 2 # центр по Z
mc.setBlocks(pos.x + 1, pos.y, pos.z, pos.x + 6, pos.y + 5, pos.z + 5, block.GOLD_BLOCK.id)
mc.setBlocks(pos.x + 2, pos.y + 1, pos.z + 1, pos.x + 5, pos.y + 4, pos.z + 4,
block.AIR.id)
mc.setBlocks(pos.x + 1, pos.y + 1, sz, pos.x + 1, pos.y + 2, sz + 1, block.AIR.id)
mc.setBlocks(pos.x + 1, sy + 1, sz + 2, pos.x + 1, sy + 2, sz + 2, block.GLASS.id)
mc.setBlocks(pos.x + 1, sy + 1, sz - 1, pos.x + 1, sy + 2, sz - 1, block.GLASS.id)
mc.setBlocks(sx - 1, sy + 1, pos.z, sx - 1, sy + 2, pos.z, block.GLASS.id)
mc.setBlocks(sx + 1, sy + 1, pos.z, sx + 1, sy + 2, pos.z, block.GLASS.id)
mc.setBlocks(sx - 1, sy + 1, pos.z + 5, sx - 1, sy + 2, pos.z + 5, block.GLASS.id)
mc.setBlocks(sx + 1, sy + 1, pos.z + 5, sx + 1, sy + 2, pos.z + 5, block.GLASS.id)
mc.setBlocks(pos.x + 1, pos.y + 6, pos.z, pos.x + 6, pos.y + 6, pos.z + 5,
block.IRON_BLOCK.id)
mc.setBlocks(pos.x + 1, pos.y + 7, pos.z + 1, pos.x + 6, pos.y + 7, pos.z + 4,
block.IRON_BLOCK.id)
mc.setBlocks(pos.x + 1, pos.y + 8, pos.z + 2, pos.x + 6, pos.y + 8, pos.z + 3,
block.IRON_BLOCK.id)
Функция для создания дома с фасадом на запад.
24.
Перерыв25.
«Street.py!»Pastein.ru/t/FQV - Функция для создания двухэтажного дома с
фасадом на север.
Pastein.ru/t/LQV - Функция для создания двухэтажного дома с
фасадом на юг.
Теперь приступим к записи двухэтажного дома, нам достаточно два
поворота.
Функция для создания двухэтажного дома с фасадом на север.
Важно! Двухэтажные дома имеют огромный код который достигает 200
строчек.
Поэтому они будут доступны по ссылкам выше!
26.
«Street.py!»def bashny():
# Создаём первую опору башни
for i in range(5):
mc.setBlock(pos.x + i, pos.y + i, pos.z, block.STONE.id)
# Создаём вторую опору башни
for i in range(5):
mc.setBlock(pos.x + 10 + i, pos.y + 4 - i, pos.z, block.STONE.id)
# Создаём площадку на высоте y+5
mc.setBlocks(pos.x + 5, pos.y + 5, pos.z, pos.x + 10, pos.y + 5, pos.z + 5, block.STONE.id)
Теперь создадим функцию башни.
27.
«Street.py!»# Создаём третью опору
for i in range(5):
mc.setBlock(pos.x + 10 + i, pos.y + 4 - i, pos.z + 5, block.STONE.id)
# Создаём четвёртую опору
for i in range(5):
mc.setBlock(pos.x + i, pos.y + i, pos.z + 5, block.STONE.id)
# Создаём четыре опоры на высоте y+5
for w in range(5):
mc.setBlock(pos.x + 5, pos.y + 5 + w, pos.z, block.STONE.id)
mc.setBlock(pos.x + 10, pos.y + 5 + w, pos.z, block.STONE.id)
mc.setBlock(pos.x + 5, pos.y + 5 + w, pos.z + 5, block.STONE.id)
mc.setBlock(pos.x + 10, pos.y + 5 + w, pos.z + 5, block.STONE.id)
Теперь создадим функцию башни.
28.
«Street.py!»# создаём площадку на высоте y+10
mc.setBlocks(pos.x + 5, pos.y + 10, pos.z, pos.x + 10, pos.y + 10, pos.z + 5, block.STONE.id)
# Создаём две опоры для третьей площадки-крыши
for i in range(3):
mc.setBlock(pos.x + 5 + i, pos.y + 11 + i, pos.z, block.STONE.id)
for i in range(3):
mc.setBlock(pos.x + 8 + i, pos.y + 13 - i, pos.z, block.STONE.id)
# Создание третьей площадки-крыши
mc.setBlocks(pos.x + 7, pos.y + 13, pos.z, pos.x + 8, pos.y + 13, pos.z + 5, block.STONE.id)
# Создание двух оставшихся опор от второй до третьей площадки
for i in range(3):
mc.setBlock(pos.x + 5 + i, pos.y + 11 + i, pos.z + 5, block.STONE.id)
for i in range(3):
mc.setBlock(pos.x + 8 + i, pos.y + 13 - i, pos.z + 5, block.STONE.id)
Теперь создадим функцию башни.
29.
«Street.py!»# Создание в центре башни на второй площадке куба из Золотых и стеклянных блоков с
центральным блоком - лава.
mc.setBlocks(pos.x + 7, pos.y + 6, pos.z + 2, pos.x + 8, pos.y + 6, pos.z + 3,
block.GOLD_BLOCK.id)
mc.setBlocks(pos.x + 6, pos.y + 7, pos.z + 1, pos.x + 9, pos.y + 8, pos.z + 4,
block.GLASS.id)
mc.setBlocks(pos.x + 7, pos.y + 7, pos.z + 2, pos.x + 8, pos.y + 8, pos.z + 3,
block.LAVA_FLOWING.id)
mc.setBlocks(pos.x + 7, pos.y + 9, pos.z + 2, pos.x + 8, pos.y + 9, pos.z + 3,
block.GOLD_BLOCK.id)
Теперь создадим функцию башни.
https://pastein.ru/t/VQV - Финальный код
башни.
30.
«Street.py!»def most():
# Создание четырёх опор моста
mc.setBlocks(x + 1, y, z, x + 1, y + 15, z, 98)
mc.setBlocks(x + 6, y, z, x + 6, y + 15, z, 98)
mc.setBlocks(x + 1, y, z + 30, x + 1, y + 15, z + 30, 98)
mc.setBlocks(x + 6, y, z + 30, x + 6, y + 15, z + 30, 98)
# Создание площадки моста
mc.setBlocks(x + 1, y + 5, z, x + 6, y + 5, z + 30, 98)
Код моста мы уже писали, поэтому он у нас имеется:
Единственное, что нам нужно сделать его функцией с
именем most
31.
«Street.py!»https://pastein.ru/t/iQV
Код моста доступен по данной ссылке!
32.
Единственное, что нам осталось этодобавить циклы которые будет стоить
наши дома по схеме которую
представлена.
«Мозговой
штурм»
Улица – город.
33.
«Street.py!»for k in range(len(d11)):
if d11[k] == 3:
bashny()
elif d11[k] == 0:
mc.setBlocks(pos.x, pos.y, pos.z, pos.x + 5, pos.y + 5, pos.x + 5, 0)
elif d11[k] == 13:
dom_E()
pos.z = pos.z + 20
x = pos.x
y = pos.y
z = pos.z
pos.z = pos.z - 20 * len(d11)
pos.x = pos.x + 15
Код по созданию первого
ряда домов по оси Z.
34.
«Street.py!»for k in range(len(d21)):
if d21[k] == 22:
dom2_S()
pos.z = pos.z - 5
elif d21[k] == 14:
dom_W()
pos.z = pos.z + 20
x = pos.x
y = pos.y
z = pos.z
pos.z = pos.z - 20 * len(d21)
pos.x = pos.x + 15
Код по созданию второго
ряда домов по оси Z.
35.
https://pastein.ru/t/jQVКод по созданию 3 и 4 ряда
домов вместе с мостом.
36.
Осталось построить завершающие триряда.
«Мозговой
штурм»
Улица – город.
37.
«Street.py!»https://pastein.ru/t/sQV
Код по созданию 5 и 6 ряда
домов вместе с мостом.
38.
«Street.py!»pos = mc.player.getTilePos()
pos.x = pos.x + 100
x = pos.x
y = pos.y
z = pos.z
for k in range(len(d51)):
if d51[k] == 3:
bashny()
elif d51[k] == 0:
mc.setBlocks(pos.x, pos.y, pos.z, pos.x + 5, pos.y + 5, pos.x + 5, 0)
elif d51[k] == 13:
dom_E()
pos.z = pos.z + 20
x = pos.x
y = pos.y
z = pos.z
39.
«Street.py!»Последнее что нам потребуется, это поместить все
наши функции в класс.
Важно! Не забывайте, что функции в классе должны
иметь атрибут self
40.
«Street.py!»41.
Запустите код и проверьте, что у васполучилось?
Полный код программы вы можете
найти здесь: https://pastein.ru/t/YQV
42.
Теперь можно гулять по улицам,заходить в любые дома подниматься
на мосту, любуясь изменениями
речной глади. Пока город выглядит
пустынным, но в следующих уроках
мы наполним его движущимися
предметами
«Мозговой
штурм»
Улица – город.
43.
Модуль 3. Урок 1. Улица – город Ч.3Завершение
урока
44.
Что нового высегодня узнали?
Что было
сложным или
непонятным?
Подведение
итогов занятия
Как прошло занятие?
45.
46.
Зал славыДелитесь проектами
с другими учениками
47.
Зал славыПространство, в котором
ребята делятся друг
с другом проектами,
играми, идеям.
В зале славы ребята
общаться и соревнуются
Зал славы
48.
ТрендыБлок с новыми проектами, которые набирают
популярность. Проекты в этом блоке помогают
понять, что происходит в Зале славы.
В трендах отражены проекты, в которых больше
всего лайков и комментариев за день, неделю
или месяц.
Зал славы
49.
Просмотрпроектов
Зал славы
Проекты отображаются по новизне,
популярности и количеству комментариев,
а также можно посмотреть проекты «Селебрити»,
друзей, и проекты по отдельным предметам
50.
СелебритиУченики, которые
делают классные
проекты и побеждают в
конкурсах получают
особый статус:
«Селебрити».
Студент получивший
статус селебрити
получает синий значок
Зал славы
51.
ПроектыСмотрите работы других
учеников, играйте в игры.
Ставьте реакции,
делитесь комментариями
и обсуждайте проекты.
Зал славы
52.
Правила зала славыКогда публикуете проекты или пишите комментарии,
убедитесь, что не нарушаете правила:
informatics