Файл: 1 урок Введение и подготовка.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 27.04.2024

Просмотров: 57

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Ответ запишите в тетрадку.

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 в чат, мы получим что действительно он меняет значение. 

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

Задание

  1. Создайте объект из блоков с помощью языка Python на ваше усмотрение (Картинка, машинка….).

  2. поменять блок под ногами игрока на блок «текущая лава», используя функции getTilePos() и setBlock().

  3. Теперь вы знаете, как менять блоки под игроком. А сможете создать их над игроком? Поэкспериментируйте и разместите вокруг игрока сразу несколько блоков. 

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

  5. Можете написать код, который поднимет игрока высоко над землей, а тем временем под ним появится озеро лавы.





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.