Aprender python y electrónica con minecraft edición pi

¿Siempre has querido aprender a código, pero no sabía por dónde empezar? Aprender a controlar Minecraft en el Pi de frambuesa usando Python y algo de electrónica simples. Aquí está el resultado final:

Usted necesitará un Pi 2 o más reciente para este proyecto, y al mismo tiempo se podría completar la mayor parte de estas tareas a través de línea de comandos a través de Secure Shell (SSH), este tutorial se centrará en la codificación directamente en el Pi.

Frambuesa PI 3 Modelo B A1.2GHz 64-bit de cuatro núcleos ARMv8 CPU, 1 GB de RAMFrambuesa PI 3 Modelo B A1.2GHz 64-bit de cuatro núcleos ARMv8 CPU, 1 GB de RAM1,2 GHz 64-bit CPU ARMv8 de cuatro núcleos, 1 GB de RAM Ahora comprar en Amazon $ 30.39

Nuevo en Minecraft? No se preocupe - aquí está nuestra Guía de Minecraft Principiante.

Introducción a Minecraft Pi

Minecraft-Pi-Menú

Minecraft para la Frambuesa Pi se ha desarrollado para el aprendizaje y retoques (y es gratis). Viene con una interfaz de programación de aplicaciones (API) que proporciona una manera para que el código para hablar fácilmente a Minecraft. Es brillante para el aprendizaje de cómo el código en Python, así como empezar con la electrónica.Electrónica para principiantes: 10 Habilidades que usted necesita saberElectrónica para principiantes: 10 Habilidades que usted necesita saberMuchos de nosotros ni siquiera han tocado un soldador - pero haciendo las cosas pueden muy gratificante. He aquí diez de las habilidades más básicas de electrónica de bricolaje para ayudarle a empezar.Lee mas

¿Qué es Python?

Python es un lenguaje de programación. Es interpretado, lo que significa que cuando se ejecuta un archivo o programa Python, el equipo tiene que hacer un poco de trabajo para el archivo primero. Las desventajas son que puede ser considerado lento en comparación con los lenguajes compilados.

Los beneficios de los lenguajes interpretados son la velocidad de codificación y su amabilidad. No es necesario decirle a la computadora qué datos que desea guardar, sólo que desea almacenar algo y el equipo va a averiguar qué hacer. Hay excepciones, por supuesto, y esto es una visión algo simplificada, sin embargo, la programación debe ser divertido! Si usted comienza a cavar en los complejos detalles técnicos que puede llegar a ser un poco laborioso.

Python mayúsculas y minúsculas. Esto es importante saber, como Python no reconocerá los objetos incluso si están escritas correctamente Si el caso es erróneo. “DoSomething ()” no funcionará si el método se llama en realidad “HacerAlgo ()”. Python también utiliza la sangría. Otros lenguajes de programación pueden no importa cuántas guiones su código de cuenta, mientras que Python hace cuidado. Guiones se utilizan para contar Python donde pertenece código. Otros idiomas pueden utilizar “Curly” Los apoyos ({}) a código de grupo - Python no utiliza estos. Python usa una almohadilla (#) para los comentarios, y los comentarios se utiliza contar a otros desarrolladores o personas mirando el código lo hace una parte en particular, o por qué se necesita. Python ignora nada después de un hash.

Por último, hay dos versiones principales de Python - 2.7.x Python y Python 3.x Existen algunas diferencias entre los dos (¿Cuáles son las diferencias?). Este tutorial se utilizará Python 3.

Configuración inicial

Proporcionar a sus Pi ya está la configuración y funcionamiento Raspbian, no hay un montón de configuración inicial necesaria.Cómo instalar un sistema operativo para su Frambuesa PiCómo instalar un sistema operativo para su Frambuesa PiAquí es cómo conseguir un nuevo sistema operativo instalado y funcionando en su pi - y cómo clonar su configuración perfecta para una recuperación rápida.Lee mas

Abrir terminal (Menú gt; Accesorios gt; Terminal) Y ejecutar este comando. Siempre es una buena práctica para mantener la lista de repositorios hasta la fecha, y esto va a descargar la última lista de programas (que no descargará los programas en sí mismos, esto ayuda a la Pi sabe qué programas se llaman y dónde encontrarlos).

sudo apt-get actualizar

Ahora actualizar el Pi (esto puede tomar un tiempo):

sudo apt-get mejorar

Python y Minecraft Pi ya están instalados, sin embargo, si Minecraft Pi no está instalado por alguna razón, que es fácil de instalar:5 maneras de instalar software en Frambuesa Pi5 maneras de instalar software en Frambuesa PiPara hacer cualquier cosa con una Raspberry Pi, usted necesita saber cómo instalar un sistema operativo, y software para ejecutar en él. Si eres nuevo en Linux, esto puede ser desalentador.Lee mas

sudo apt-get instalar Minecraft-pi

Navegar a los documentos y crear una nueva carpeta llamada “Minecraft”:

discos compactos Documentos/mkdir Minecraft

Puede ver el contenido de esta nueva carpeta:

ls

He aquí un consejo - si comienza a escribir y pulsa la tecla TAB, la línea de comando intentará autocompletar la declaración para usted.

Puede examinar la ruta de acceso al directorio actual con pwd, que significa Imprimir directorio de trabajo:

pwd

Minecraft empezar por ir a Menú gt; Juegos gt; Minecraft Pi. Necesitará esta carrera, pero va a volver a ella más tarde.

Python abierta de 3 Menú gt; Programación gt; Python 3 (IDLE). Este programa proporciona una manera para que pueda ejecutar comandos de Python y para escribir programas.

Ahora puede escribir comandos de Python aquí, pero eso no es muy práctico. Ir Archivo gt; Archivo nuevo y entonces Archivo gt; Salvar y guardar esto en la carpeta que creó anteriormente. (Documentos gt; Minecraft). Digamos que es “hello_world.py“. Usted no tiene que utilizar la extensión .py, este se añadirá automáticamente, pero es una buena práctica.

Si se cambia de nuevo a la terminal, y navegar a la carpeta de Minecraft debería ver el archivo que acaba de crear:

discos compactos Minecraft/ls

Puede ejecutar este archivo de la siguiente manera:

hola_mundo pitón

Note como “pitón” es todo en minúsculas. Esto tiene que ser antes de que el nombre del archivo, ya que cuenta la Pi que el archivo siguiente está Python, por lo que debe ser ejecutado como tal.

Volver al editor de Python y escriba:

impresión "¡Hola Mundo!"

Guarde este archivo y ejecutarlo de nuevo - ahora debería ver “Hola, mundo!” Aparecerá en la línea de comandos - limpio! El comando de impresión simplemente le dice a Python para emitir el siguiente texto entre comillas dobles. Esto es bueno, pero no es terriblemente útil para Minecraft, vamos a vincularlo:

de MCPi.Minecraft importar Minecraftmc = Minecraft.crear()mc.postToChat("¡Hola Mundo!")

Ahora si guarda y ejecuta este archivo, debería ver “Hola, mundo!” Aparecerá en el juego Minecraft. desglose de dejar que el código:

de MCPi.Minecraft importar Minecraft

Esta línea le dice a Python que desea usar código de otro archivo. Este archivo mcpi.minecraft fue desarrollado para permitir un fácil control de Minecraft.

mc = Minecraft.crear()

Esta línea crea un objeto llamado “MC” (Minecraft). Hay que crear esto para permitir la comunicación con el juego Minecraft - no basta con incluir el archivo.

mc.postToChat("¡Hola Mundo!")

Por último, esta línea dice Minecraft para escribir un texto para el chat. Prueba a cambiar “Hola, mundo!” A otra cosa y ver qué pasa, pero recuerde que debe incluir tanto las comillas dobles. Si usted está teniendo problemas de software, estos son algunos de los errores comunes de Python y Minecraft Pi:

  • AttributeError - se trata de un error tipográfico, como pinta o Prnt en lugar de impresión
  • NameError: nombre de ‘Minecraft` no está definido - recuerde que debe importar los módulos que necesite
  • NameError: nombre ‘verdadero` no está definido - Python mayúsculas y minúsculas, el cambio a‘True’
  • socket.error: [Errno 111] Conexión rechazada - Asegúrese de que se está ejecutando Minecraft

proyectos

Ahora que ya conoce los conceptos básicos de Python y Minecraft, vamos a hacer algunos proyectos interesantes. Todo el codecan descargar desde Github.

Automatizado Constructor de puentes

Minecraft-Pi-constructor de puentes

Este programa va a construir efectivamente un puente sobre el agua. Cuando el jugador se acerca a un cuerpo de agua, el programa convertirá varios bloques de piedra. Como Minecraft utiliza un sistema de coordenadas, es muy fácil de obtener la ubicación del jugador, junto con el tipo de bloques alrededor del jugador. Minecraft Pi es un poco limitado, así que no es posible actualizar varios bloques diferentes a granel. Puede codificar fácilmente este comportamiento a sí mismo, sin embargo.

Crear un nuevo archivo (Archivo gt; Archivo nuevo) Y guardarlo como “bridge_builder.py“.

de MCPi.Minecraft importar Minecraftmc = Minecraft.crear() # Crear objetos Minecraftmientras Cierto:x, y, z = mc.jugador.getPos() # Tienda de la posición del jugador# Almacenar los bloques circundantesun = mc.getBlock(x, y - 1, z + 1)segundo = mc.getBlock(x, y - 1, z - 1)do = mc.getBlock(x - 1, y - 1, z)re = mc.getBlock(x + 1, y - 1, z)Si un == 8 o un == 9 o segundo == 8 o segundo == 9 o do == 8 o do == 9 o re == 8 o re == 9:# 8 o 9 es el agua. Establecer rodea bloques en el piso de un sólido (piedra) si se encuentra aguamc.setBlocks(x, y - 1, z, x + 1, y - 1, z + 1, 1)mc.setBlocks(x, y - 1, z, x - 1, y - 1, z - 1, 1)mc.setBlocks(x, y - 1, z, x - 1, y - 1, z + 1, 1)mc.setBlocks(x, y - 1, z, x + 1, y - 1, z - 1, 1)

Observe cómo el valor de y está buscando realmente en y - 1. Este es el nivel del suelo. Si se utiliza el valor de y, el guión buscaría bloques a la altura de la rodilla - que no funcionaría muy bien! Mc.getBlock () Devuelve el ID de un bloque de las coordenadas dadas. Como x, y, z son las coordenadas del jugador, se puede sumar o restar de ellos para obtener posiciones alrededor del jugador. Usted no tiene que utilizar las x, y, z y valores, se puede usar cualquier número, sin embargo puede que no sepa cómo ese bloque en particular se relaciona con el jugador - que es mejor utilizar valores relativos al jugador. Ejecutar este archivo desde la línea de comandos y ver qué pasa.

Usted debe ver que una pequeña área de terreno se convierte en la piedra una vez que el jugador llega a un cuerpo de agua. No está muy bien - que son capaces de caminar lo suficientemente rápido como para causar un problema. Se podría solucionar esto mediante la conversión de un mayor volumen de agua a la tierra. La parte final del método mc.setBlocks () es el ID de bloque. Uno de ellos es el identificador de bloque de piedra. Se podría cambiar esta situación a la madera, hierba, ni nada. Si quisiera, podría fácilmente convertir esto en un diseño complejo - tal vez un puente colgante!

Botón súper Minería

Minecraft-Pi-Super-Mina

En este ejemplo se va a hacer el trabajo por debajo de la minería. Se compone de un botón físico, que cuando se pulsa, la mía 10 bloques cúbicos. Vamos a empezar con el botón. Similar a los botones en el Arduino, se necesita una pequeña cantidad de la electrónica, todo lo cual debe encontrarse en una kit básico de arranque:Qué hay en tu Arduino Starter Kit? [Arduino principiantes]Qué hay en tu Arduino Starter Kit? [Arduino principiantes]Frente a una caja llena de componentes electrónicos, es fácil sentirse abrumado. He aquí una guía para exactamente lo que encontrará en su kit.Lee mas

  • 1 x Breadboard
  • 1 x interruptor momentáneo
  • 1 x 220 ohm resistor
  • Hembra gt; cables de ayuda de sexo masculino
  • Masculino gt; cables de ayuda de sexo masculino

Aquí está el circuito:

Pi-Button-Conexión

Esta resistencia se llama una resistencia “pull down”. Esto ayuda a asegurar que lo que el piensa Pi es el pulsar una tecla, en realidad es el pulsar una tecla. Usted no tiene que usar esto, sin embargo se recomienda, ya que puede encontrar gran cantidad de ruido y los falsos positivos sin ella.

El botón está conectado al General Purpose Input Output (GPIO) pin 14. Se puede utilizar cualquier pin GPIO, sin embargo mirar el pinout en primer lugar, ya que no son todos controlables desde la Pi, y varían ligeramente entre los modelos.

Ahora que el botón está conectado, es el momento de probarlo. Crear un nuevo archivo y guardarlo como “button_test.py“. Añadir este código, salvo que se ejecute en el terminal.

importar RP _.GPIO como GPIOimportar timeGPIO.modo de ajuste(GPIO.BCM) # Decirle al Pi lo cabeceras de usarGPIO.preparar(14, GPIO.EN) # Decirle al Pi de este pin es una entradamientras Cierto:Si GPIO.entrada(14) == Cierto: # Aspecto para el botón de prensaimpresión "OBRAS botón!" # Consecuencia de registrohora.dormir(0.5) # Esperar 0.5 segundos

prensa Control + C para detener la secuencia de comandos. Si todo funciona correctamente debería ver “funciona el botón!” En el Terminal. Observe cómo, al igual que el módulo de Minecraft, esta prueba está utilizando los módulos RPi.GPIO y hora. Éstos permiten que el Pi para acceder a los pasadores de hardware y proporciona funciones de temporización útiles.

Ahora vamos a terminar el resto del código. Crear un nuevo filecalled “super_mine.py“. Aquí está el código:

importar RP _.GPIO como GPIOimportar horade MCPi.Minecraft importar Minecraftmc = Minecraft.crear() # Crear objetos MinecraftGPIO.modo de ajuste(GPIO.BCM) # Decirle al Pi lo cabeceras de usarGPIO.preparar(14, GPIO.EN) # Decirle al Pi de este pin es una entradamientras Cierto:Si GPIO.entrada(14) == Cierto: # Aspecto para el botón de prensax, y, z = mc.jugador.getPos() # Leer la posición del jugadormc.setBlocks(x, y, z, x + 10, y + 10, z + 10, 0) # 10 bloques de minas mc.setBlocks(x, y, z, x - 10, y + 10, z - 10, 0) # 10 bloques de minashora.dormir(0.5) # Esperar 0.5 segundos

mc.player.getPos () devuelve las coordenadas actuales jugadores, que se almacenan entonces en x, y, z. los setBlocks () Método dice Minecraft para llenar todos los bloques entre el inicio y el final con el siguiente bloque. Cero es el bloque-id para el aire. Se podría cambiar esto a otro bloque-id para relleno sólido de un área. También podría cambiar las coordenadas a +100 o incluso 1.000 bloques, sin embargo, el Pi puede empezar a luchar si se acerca demasiado loco. Observe cómo y + 10 es la misma para ambas líneas. Se podría cambiar esto a Y - 10 si desea eliminar los bloques subterráneo.

teleporting

Minecraft-Pi-Teleporting

Otro uso sencillo para este botón podría ser la de “teletransportarse”. El Minecraft Pi API proporciona una manera de ajustar la posición del jugador. El siguiente código “teletransportarse” al jugador a una posición de memoria:

mc.jugador.setPos(0, 0, 0)

Tenga en cuenta que su método acepta tres Parámetros- x, y, z - por lo que podría configurar estos para nada de teletransportarse instantáneamente al jugador a esa ubicación.

Crear una copia del archivo super_mine (Archivo gt; Guardar copia como) Y modificarla mediante la sustitución de la si con lo siguiente:

Si GPIO.entrada(14) == Cierto: # Aspecto para el botón de prensamc.jugador.setPos(0, 0, 0) # Reproductor de teletransportehora.dormir(0.5) # Esperar 0.5 segundos

Este archivo debería parecerse a esto:

importar RP _.GPIO como GPIOde MCPi.Minecraft importar Minecraftimportar timemc = Minecraft.crear() # Crear objetos MinecraftGPIO.modo de ajuste(GPIO.BCM) # Decirle al Pi lo cabeceras de usarGPIO.preparar(14, GPIO.EN) # Decirle al Pi de este pin es una entradamientras Cierto:Si GPIO.entrada(14) == Cierto: # Aspecto para el botón de prensamc.jugador.setPos(0, 0, 0) # Reproductor de teletransportehora.dormir(0.5) # Esperar 0.5 segundos

Guardarlo como “teleport.py" y correr.

Es posible que el jugador se queda atascado en el interior de algunos bloques cuando se utiliza esta, en cuyo caso se tendrá que ajustar las coordenadas de un espacio abierto conocido (la parte superior izquierda de la pantalla muestra la ubicación actual).

Construir una casa

Minecraft-Pi-Casa

Una última tarea para este botón es para construir una casa. Al igual que el ejemplo de minas rápida arriba, esto simplemente reemplazar los bloques que rodean al jugador para hacer una casa. Diferentes bloques-ids se pueden utilizar para diferentes materiales (ventanas, paredes, etc). Para hacer las cosas más fácil de código, se creará un bloque sólido, y luego el interior eliminado (conjunto de bloques al aire), esto creará una cáscara hueca. Se podría añadir extras como una cama o una puerta, sin embargo, el proyecto de Minecraft Pi es un poco incompleta, y si bien estos objetos funcionan cuando se coloca por el jugador, no son brillantes cuando se utiliza Python.

de MCPi.Minecraft importar Minecraftimportar RP _.GPIO como GPIOimportar timemc = Minecraft.crear() # Crear objetos MinecraftGPIO.modo de ajuste(GPIO.BCM) # Decirle al Pi lo cabeceras de usarGPIO.preparar(14, GPIO.EN) # Decirle al Pi de este pin es una entradamientras Cierto:Si GPIO.entrada(14) == Cierto:x, y, z = mc.jugador.getPos()mc.setBlocks(x + 2, y - 1, z + 2, x + 7, y + 3, z + 8, 5) # Make cáscaramc.setBlocks(x + 3, y, z + 3, x + 6, y + 2, z + 7, 0) # Quitar el interiormc.setBlocks(x + 2, y, z + 5, x + 2, y + 1, z + 5, 0) # Hacer umbralmc.setBlocks(x + 4, y + 1, z + 8, x + 5, y + 1, z + 8, 102) # 1 ventana de maquillajemc.setBlocks(x + 4, y + 1, z + 2, x + 5, y + 1, z + 2, 102) # 2 ventana de maquillajemc.setBlocks(x + 7, y + 1, z + 4, x + 7, y + 1, z + 6, 102) # 3 ventana de maquillaje

Guardar como “house.py" y correr. Si todo va bien, debería ver una pequeña casa aparece (puede que tenga que dar la vuelta para encontrarlo). Es muy simple, una apertura y algunas ventanas. En teoría, no hay límite a cuán grande o complejo de un edificio se podía construir.

Hacer un mini juego

Minecraft-Pi-lava-Juego

A continuación, vamos a hacer un mini-juego! Esto será muy sencillo, cuando el jugador pisa un bloque de arena, que se convertirán en la lava después de un periodo de tiempo aleatorio. Este es un buen juego para hacer, como se puede diseñar sus propios niveles o modificarlo para hacer las cosas más difíciles. No necesitará el botón para este ejemplo.

Crear un nuevo archivo y guardarlo como “mini_game.py“. Aquí está el código:

de MCPi.Minecraft importar Minecraftimportar aleatorioimportar timemc = Minecraft.crear() # Crear objetos Minecraftmientras Cierto:x, y, z = mc.jugador.getPos()block_under_player = mc.getBlock(x, y - 1, z)Si block_under_player == 12:# Reproductor de pie sobre la arena, se inicia el temporizadorrandom_time = aleatorio.uniforme(0.1, 2.5) # Generar números aleatorioshora.dormir(random_time)- # Esperemc.setBlock(x, y - 1, z, 11) # Convertirlo en la lava

Este código es un buen arranque en el aleatorio() función: random.uniform (0.1, 2.5) generará un número aleatorio entre 0,1 (1 / 10a segundos) y 2,5 (2 1/2 segundos). El aumento de estas cifras hará que el juego sea más fácil.

¡Pruébalo! De pie en un bloque de arena, y en breve se convertirá en la lava. Esta podría ser la base de un juego más complejo.

Otro hacer una mini juego

Minecraft-Pi-Mini-Juego

La premisa de este juego es simple - no estar de pie en el suelo de madera cuando se acabe el tiempo. El jugador es teletransportado en una “arena”. Se ven obligados a detenerse hasta que se inicia el juego. Una vez iniciado, el suelo se convertirá en el agua una vez que se acabe el tiempo. El jugador debe estar de pie en la zona de seguridad (bloques de diamante) para sobrevivir. Cada nivel se reduce el contador de tiempo por un segundo. Después de cada nivel con éxito la zona segura se hace más grande. Echa un vistazo al siguiente código:

importar horaimportar aleatoriode MCPi.Minecraft importar Minecraftmc = Minecraft.crear() # Crear objetos Minecraft# área despejadamc.setBlocks(-10, 1, -10, 25, 5, 25, 0)# Crear concha Arenamc.setBlocks(0, 0, 0, 25, 10, 25, 17)# Ahuecar Arenamc.setBlocks(1, 1, 1, 24, 10, 24, 0)# Moverse al jugador Arenamc.jugador.setPos(14, 25, 20) # Reproductor de teletransporte # Hacer que se queden puso# Reproductor de teletransporte para iniciar posición cada 1/10 de segundo.# Hacer esto durante 5 segundos y luego iniciar el juegohora.dormir(2)total_wait = 0mc.postToChat("Esperando para empezar")mientras total_wait lt; 5:mc.jugador.setPos(14, 1, 20) # Reproductor de teletransportehora.dormir(0.1)total_wait += 0.1mc.postToChat("¡EMPEZAR!")# 10 nivelespara nivel en distancia(10):x, y, z = mc.jugador.getPos()level_time = 10 - nivel # Reducir el tiempo de 1 segundo para cada nivelmc.postToChat("Nivel - " + str(nivel + 1) + " comienzo")# Acumulación bajamc.setBlocks(0, 0, 0, 25, 0, 25, 17)# Make zona segurasafe_area_start = aleatorio.uniforme(0, 22)safe_area_end = aleatorio.uniforme(0, 22)mc.setBlocks(safe_area_start, 0, safe_area_end, safe_area_start + nivel, 0, safe_area_end + nivel, 57)tiempo transcurrido = 0mientras tiempo transcurrido lt; 10:x, y, z = mc.jugador.getPos()hora.dormir(0.25)tiempo transcurrido += 0.25el jugador # cheque es todavía en el pisoSi y lt; 0.75:mc.postToChat("Juego terminado")descanso-más:# Elimina pisomc.setBlocks(-10, 0, -10, 25, 0, 25, 8)# Poner zona segura de vueltamc.setBlocks(safe_area_start, 0, safe_area_end, safe_area_start + nivel, 0, safe_area_end + nivel, 57)hora.dormir(2.5)continuardescanso

Guardar como “mini_game_2.py”Y darle un plazo.

El Pi 2 tiene algunos problemas de rendimiento durante el funcionamiento de Minecraft. La unidad central de procesamiento (CPU) gráfico de uso (esquina superior derecha) Nunca muestra ninguna carga pesada, por lo que este debe ser a un mal diseño y optimizaciones por los desarrolladores. Estos problemas están relacionados con la ejecución de código (a medida que continúan cuando Python no se está ejecutando), sin embargo, se ven agravados por este mini juego. Si su Pi está luchando realmente es posible que desee reducir el tamaño de la arena o overclock Pi.No jugo suficiente? Su exprimir Frambuesa Pi Por OverclockingNo jugo suficiente? Su exprimir Frambuesa Pi Por OverclockingSi no hay ningún hardware lanzado en 2012, que es muy probable que se enamore de, es el dulce de azúcar-como-Frambuesa Pi, un mini ordenador diseñado y construido en el Reino Unido que ha enviado en todo el ...Lee mas

Detector de diamante

Minecraft-pi-Diamantes

Vamos a hacer otro circuito. Esto utilizará un diodo emisor de luz (LED) para iluminar cuando hay diamantes debajo (dentro de los 15 bloques). Esto es lo que necesita:

  • 1 x Breadboard
  • 1 x LED
  • 1 x 220 ohm resistor
  • Hembra gt; cables de ayuda de sexo masculino
  • Masculino gt; cables de ayuda de sexo masculino

Aquí está el circuito:

Artículos Relacionados