ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 27.04.2024
Просмотров: 57
Скачиваний: 0
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
1 урок: Введение и подготовка.
2 урок: Вывод сообщений, бесконечный цикл и координаты.
3 урок: Переменная и условия. «Истина» и «Ложь».
4 урок: Установка блоков с помощью Python. Ограниченныйцикл.
5 урок: Функция. Постройкасооружений.
7 урок: Постройка 3 D фигур, простейших и сложных.
8 урок: Конструкция else, elif.
Ответ запишите в тетрадку.
4 урок: Установка блоков с помощью Python. Ограниченныйцикл.
from mcpi.minecraft import Minecraft
import mcpi.block as block
mc = Minecraft.create()
pos = mc.player.getTilePos()
for y in range(5):
for z in range(5):
for x in range(5):
mc.setBlock(pos.x+3+x, pos.y+y, pos.z+z, block.TNT.id)
Для этого обратимся к библиотеке, которую мы импортировали. Нажимаем File-Open module.
Далее пишем mcpi.block.
И вам откроются все блоки, которые мы можем использовать. И вместо id прописываем цифру блока
Например, блоку шерсти соответствует цифра 35, тогда вместо задания блока старым способом пишем – 35.
y – показатель цикла. То есть, он будет с каждым циклом меняться, выведем y в чат, мы получим что действительно он меняет значение.
Но давайте создадим стенку, ведь в данном случае мы просто строим блоки в высоту, тогда воспользуемся циклом в цикле.
Задание
-
Создайте объект из блоков с помощью языка Python на ваше усмотрение (Картинка, машинка….). -
поменять блок под ногами игрока на блок «текущая лава», используя функции getTilePos() и setBlock(). -
Теперь вы знаете, как менять блоки под игроком. А сможете создать их над игроком? Поэкспериментируйте и разместите вокруг игрока сразу несколько блоков. -
Сделайте так, чтобы игрок поднялся в воздух, а под ним тут же возник блок, остановив падение. -
Можете написать код, который поднимет игрока высоко над землей, а тем временем под ним появится озеро лавы.
5 урок: Функция. Постройкасооружений.
From mcpi.mincraft import Minecraft
Import mcpi.block as block
mc = Mincraft.create()
pos= mc.player.getTilePos()
mc.setBlocks(pos.x,pos.y,pos.z, pos.x+10,pos.y+10,pos.z+10, block.TNT.id)
Мы указываем начальные и конечные координаты и указываем id блока. В результате работы программы мы получим 10*10*10 блоков tnt
Попробуем с помощью функции построить следующий дом.
from mcpi.minecraft import Minеcraft
import mcpi.block as block
mc = Minecraft.create ()
рos = mc.player.getTilePoоs ()
s = 10 # размер дома
х = pos.x + 2 # упрощенный ввод координат
y = рos.y
z = pos.z
def builHouse(x,y,z,s):
# две координаты для середины дома
mx = x+s/2
my = y+s/2
# фасад дома
mc.setBlocks (x, y, z, x + s, y + s, z + s, block.COVBLESTONE. id)
# делаемкуб-домаполнымвнутри
mc.setBlocks (x + 1 , y, z + 1, x + s-2, y + s - 1, z + s-2, block.AIR.id)
# окна
mc.setBlocks (x + 3, y + s-3, z mx-3 , my + 3, z, block.GLASS.id)
mc.setBlocks (mx + 3, y + s-3, z, x + h-3, my + 3, z, blоck.GLASS.id)
# пол внутри дома из щерсти
mc. setBlocks (x, y-1, z, x + s, ү-1, z + s, block. WOOL.id)
# деревянная крыша
mc.setBlocks(x,y+s-1, z, x+s, y+s, z+s, block.WOOD.id)
# дверной проём
mc.setBlocks (mx1, ү, z, mx, y+2, z, block.AIR..id)
Давайте создадим функцию чтобы бы могли определять количество домов, сколько хотим построить, которая будем вызывать предыдущую.
def buildSomeHouses(n):
pos = mc.player.getTilePos()
s = 10 # Размер дома
x = pos.x+2
y = pos.y
z = pos.z
for a in range(n):
buildHouse(x, y, z, s)
x = x+s+5
buildSomeHouses(12)
Задание:
Создайте с помощью функции отрисовку шпиля, где также будет вызов размеров и количества (пример постройки снизу).
Создайте с помощью функции бассейн, наполненный водой, имеющий стенки, а также чтобы мы могли вызывать функцию с указанием размеров и количеством их отображения.
Ответ в тетрадь
6 урок: Создание 2D фигур.
Перед началом урока зайдем в командную строку и вводим следующую команду:
pip install minecraftstuff
В зависимости от версий маинкрафта вам нужно ввести либо pip, либо pip3, но иногда придется в прямую прописывать pip для запуска установки модуля, в данном случае на версии 3.8 он лежит рядом с idle, тогда наша установка будет иметь следующий вид:
C:\Users\Имя пользователя\AppData\Local\Programs\Python\Python38-32\Scripts
Переходим к папке с помощью команды cd перед указанием пути:
Cd C:\Users\Имя пользователя\AppData\Local\Programs\Python\Python3832\Scripts
И прописываем команду pip install minecraftstuff.
После успешной установки запускаем также наш сервер, нашу IDLE, Minecraft.
Подключаемся к серверу. Попробуем воспользоваться только что установленным модулем, для этого к нашему классическому подключению к minecraft используем дополнительно импорт нашей библиотеки.
from mcpi.minecraft import Minecraft
from minecraftstuff import MinecraftDrawing
import mcpi.block as block
mc = Minecraft.create()
Mcdraw = MinecraftDrawing(mc)
pos = mc.player.getTilePos()
mcdraw.drawLine(pos.x, pos.y, pos.z, pos.x, pos.y+5, pos.z, block.TNT.id)
mcdraw.drawLine(pos.x, pos.y, pos.z, pos.x+5, pos.y, pos.z, block.TNT.id)
Запустите модуль, как можете заметить теперь у вас получилось две таких линии у одной меняется координата x, у другой y от начального положения.
А давайте одновременно изменим координату как x, так и y. Что получится? mcdraw.drawLine(pos.x, pos.y, pos.z, pos.x+5, pos.y+5, pos.z, block.TNT.id
Мы получим диагональ – (линия от одного угла к другому).)
Давайте попробуем рисовать не линию, а окружность. Для этого нам потребуется функция drawCircle, в ней мы укажем начальные координаты, то есть нашего центра, радиус, а также материал из которого построим окружность.
mcdraw.drawCircle(pos.x, pos.y, pos.z, 20, block.TNT.id)
В данном случае мы построили окружность относительно нас с радиусом в 20 блоков
Задание: Нарисуйте с помощью кода 2 разных рисунка и запишите ответ в тетрадь
7 урок: Постройка 3 D фигур, простейших и сложных.
Воспользуемся сценарием с прошлого урока, там мы при помощи функции setblocks выделяли область по начальным и конечным коориднатам и заполняли блоком, в данном случае TNT.
from mcpi.minecraft import Minecraft
import time import mcpi.block as block
mc = Minecraft.create()
pos = mc.player.getTilePos()
mc.draw.setBlocks(pos.x, pos.y, pos.z+5,pos.x+5,pos.y + 20, pos.z+10, block.TNT.id)
mcdraw.drawSphere(pos.x+20,pos.y,pos.z,15,block.TNT.id)
Внутри сфера не пустая, правильнее полученную фигуру назвать шаром. Давайте напишем функцию, в которой используем вместо блока TNT, блок воздуха – Air. Встанем на твердую землю и посмотрим, что произойдет.
mcdraw.drawSphere(pos.x+20,pos.y,pos.z,15,block.AIR.id)
У нас получилась яма.
Давайте приступим к созданию более сложных 3d объектов и начнем с многоугольников.
Итак, что такое многоугольник? Это плоская фигура образованная несколькими соединенными отрезками, многоугольники могут иметь от 3 до бесконечности сторон. Точки, которые соединяют эти стороны- вершины, в 3 мерном же пространстве с помощью объединения нескольких многоугольников мы можем создать различные фигуры.
Например, пирамида, у которой каждая её грань является треугольником.
Давайте попробуем построить пирамиду в minecraft. Продолжая использовать нашу minecraftstuff. Для построения пирамиды, воспользуемся drawFace. Но в нашем случае функция принимает все координаты каждой вершины и координаты должны быть записаны в виде векторов.
Дело в том, что в программировании некоторые функции могут принимать на вход только определенный тип данных, в нашем случае – вектор. Вектор – переменная, у которой записаны координаты одного блока по всем 3 координатам. Мы уже работали с вектором в строчке pos = mc.player.gettilepos. Pos в нашем случае это вектор.
8 урок: Конструкция else, elif.
А теперь рассмотрим более сложную конструкцию, которая запускает выполнение другого фрагмента кода, если условие возвращает False.