32.56M
Категория: ИнформатикаИнформатика

Улица – город, работа с функциями и списками. Ч. 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.

Правила зала славы
Когда публикуете проекты или пишите комментарии,
убедитесь, что не нарушаете правила:
English     Русский Правила