Aprenda Python y Electrónica con Minecraft Pi Edition

Aprenda Python y Electrónica con Minecraft Pi Edition

¿Siempre has querido aprender a codificar pero no sabías por dónde empezar? Aprenda a controlar Minecraft en la Raspberry Pi usando Python y algunos componentes electrónicos simples. Aquí está el resultado final:





Necesitará un Pi 2 o más nuevo para este proyecto, y aunque podría completar la mayoría de estas tareas a través de la línea de comando sobre Secure Shell (SSH), este tutorial se centrará en la codificación directamente en el Pi.





¿Eres nuevo en Minecraft? No se preocupe, aquí está nuestro Guía para principiantes de Minecraft .





Introducción a Minecraft Pi

Minecraft para Raspberry Pi se ha desarrollado para aprender y jugar (y es gratis). Viene con una interfaz de programación de aplicaciones (API) que proporciona una forma de que el código se comunique fácilmente con Minecraft. Es brillante para aprender a codificar en Python, así como para comenzar con la electrónica.

¿Qué es Python?

Pitón es un lenguaje de programación. Está interpretado , lo que significa que cuando ejecuta un archivo o programa Python, la computadora tiene que hacer un pequeño trabajo en el archivo primero. Las desventajas son que puede considerarse lento en comparación con los lenguajes compilados [URL rota eliminada].



Los beneficios de los idiomas interpretados son la velocidad de codificación y su facilidad de uso. No es necesario que le diga a la computadora qué datos que desea almacenar, solo que desea almacenar algo y la computadora averiguará qué hacer. Hay excepciones, por supuesto, y esta es una vista algo simplificada, ¡sin embargo, la programación debería ser divertida! Si comienza a profundizar en los complejos detalles técnicos, puede resultar un poco laborioso.

Python distingue entre mayúsculas y minúsculas. Es importante saber esto, ya que Python no reconocerá objetos. incluso si están escritos correctamente si el caso es incorrecto. 'Dosomething ()' no funcionará si el método se llama realmente 'DoSomething ()'. Python también usa sangría . Es posible que a otros lenguajes de programación no les importe cuántas sangrías tiene su código, mientras que Python lo hace cuidado. Las sangrías se utilizan para decirle a Python a dónde pertenece el código. Otros lenguajes pueden usar 'Curly Braces' ({}) para agrupar el código; Python no los usa. Python usa un hash (#) para los comentarios, y los comentarios se usan para decirles a otros desarrolladores o personas que miran el código qué hace una parte en particular, o por qué es necesaria. Python ignora cualquier cosa después de un hash.





Finalmente, hay dos versiones principales de Python: Python 2.7.xy Python 3.x. Hay algunas diferencias entre los dos ( ¿Cuáles son las diferencias? ). Este tutorial utilizará Python 3.

Configuración inicial

Proporcionar su Pi ya está configurar y ejecutar Raspbian , no se necesita mucha configuración inicial.





Terminal abierta ( Menú> Accesorios> Terminal ) y ejecute este comando. Siempre es una buena práctica mantener actualizada la lista de repositorios, y esto descargará la lista más reciente de programas (no descargará los programas en sí, esto ayuda al Pi a saber cómo se llaman los programas y dónde encontrarlos).

|_+_|

Ahora actualice la Pi (esto puede llevar un tiempo):

|_+_|

Python y Minecraft Pi ya están instalados, sin embargo, si Minecraft Pi no está instalado por algún motivo, es fácil de instalar:

|_+_|

Navegue a documentos y cree una nueva carpeta llamada 'Minecraft':

|_+_|

Puede ver el contenido de esta nueva carpeta:

|_+_|

Aquí hay un consejo: si comienza a escribir y presiona la tecla TAB, la línea de comando intentará autocompletar la declaración por usted.

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

|_+_|

Inicie Minecraft yendo a Menú> Juegos> Minecraft Pi . Necesitará esta ejecución, pero volverá a ella más tarde.

Abra Python 3 desde Menú> Programación> Python 3 (IDLE) . Este programa proporciona una forma de ejecutar comandos de Python y escribir programas.

Ahora puede escribir sus comandos de Python aquí, pero eso no es muy práctico. Ir a Archivo> Nuevo archivo y luego Archivo> Guardar y guárdelo en la carpeta que creó anteriormente. ( Documentos> Minecraft ). Vamos a llamarlo ' hello_world.py '. No es necesario que use la extensión .py, se agregará automáticamente, pero es una buena práctica.

Si regresa a la terminal y navega a la carpeta de Minecraft, debería ver el archivo que acaba de crear:

|_+_|

Puede ejecutar este archivo de esta manera:

|_+_|

Observe cómo 'python' es todo en minúsculas. Esto debe estar antes del nombre del archivo, ya que le dice al Pi que el siguiente archivo es Python, por lo que debe ejecutarse como tal.

Regrese al editor de Python y escriba:

|_+_|

Guarde este archivo y ejecútelo de nuevo; ahora debería ver '¡Hola, mundo!' aparece en la línea de comando - ¡ordenado! El comando de impresión simplemente le dice a Python que muestre el siguiente texto entre comillas dobles. Esto es bueno, pero no muy útil para Minecraft, vamos a vincularlo:

|_+_|

Ahora, si guarda y ejecuta este archivo, debería ver '¡Hola, mundo!' aparecen en el juego de Minecraft. Analicemos el código:

|_+_|

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.

|_+_|

Esta línea crea un objeto llamado 'mc' (Minecraft). Tienes que crear esto para permitir la comunicación con el juego de Minecraft; no es suficiente incluir el archivo.

|_+_|

Finalmente, esta línea le dice a Minecraft que escriba algo de texto en el chat. Intente cambiar '¡Hola, mundo!' a otra cosa y ver qué sucede, pero recuerde incluir ambas comillas dobles. Si tiene problemas de software, estos son algunos errores comunes de Python y Minecraft Pi:

  • AttributeError: este es un error tipográfico, como pint o prnt en lugar de print
  • NameError: el nombre 'Minecraft' no está definido; recuerde importar los módulos que necesita
  • NameError: el nombre 'verdadero' no está definido - Python distingue entre mayúsculas y minúsculas, cambie a 'Verdadero'
  • socket.error: [Errno 111] Conexión rechazada - Asegúrese de que Minecraft se esté ejecutando

Proyectos

Ahora que conoce los conceptos básicos de Python y Minecraft, hagamos algunos proyectos interesantes. Todo el código se puede descargar desde Github.

Constructor de puentes automatizado

Este programa construirá efectivamente un puente sobre el agua. Cuando el jugador se acerca a un cuerpo de agua, el programa convertirá varios bloques en piedra. Como Minecraft usa un sistema de coordenadas, es muy fácil obtener la ubicación del jugador, junto con el tipo de bloques alrededor del jugador. Minecraft Pi es un poco limitado, por lo que no es posible actualizar varios bloques diferentes de forma masiva. Sin embargo, puede codificar fácilmente este comportamiento usted mismo.

Crea un nuevo archivo ( Archivo> Nuevo archivo ) y guárdelo como ' bridge_builder.py '.

|_+_|

Observe cómo el valor de y se ve realmente en y - 1. Este es el nivel del suelo. Si se usara el valor de y, el script buscaría bloques aproximadamente al nivel de la rodilla, ¡no funcionaría muy bien! Mc.getBlock () devuelve el id de un bloque para las coordenadas dadas. Como x, y, z son las coordenadas del jugador, puede sumarlas o restarlas para obtener posiciones alrededor del jugador. No tiene que usar los valores x, y, z, puede usar cualquier número, sin embargo, es posible que no sepa cómo ese bloque en particular se relaciona con el jugador; es mejor usar valores relativos al jugador. Ejecute este archivo desde la línea de comando y vea qué sucede.

Debería ver que una pequeña área del suelo se convierte en piedra una vez que el jugador llega a un cuerpo de agua. No es genial: puedes caminar lo suficientemente rápido como para causar un problema. Puede resolver esto convirtiendo un mayor volumen de agua en tierra. La parte final del método mc.setBlocks () es la identificación del bloque. Uno es la identificación del bloque de piedra. Podrías cambiar esto por madera, pasto o cualquier cosa. Si quisiera, podría convertirlo fácilmente en un diseño complejo, ¡tal vez un puente colgante!

Botón Super Minería

Este ejemplo reducirá el trabajo de la minería. Consiste en un botón físico, que al presionarlo, extraerá 10 bloques al cubo. Empecemos por el botón. Al igual que los botones del Arduino, necesitará una pequeña cantidad de componentes electrónicos, todos los cuales deben encontrarse en un kit de inicio básico:

  • 1 x tablero
  • 1 x interruptor momentáneo
  • 1 x resistencia de 220 ohmios
  • Cables de salto hembra> macho
  • Macho> Cables de salto macho

Aquí está el circuito:

Conexión de botón Pi

Esta resistencia se llama resistencia de 'bajada'. Ayuda a garantizar que lo que Pi piensa que es el botón que se presiona, realmente es el botón que se presiona. No es necesario que lo use, sin embargo, se recomienda, ya que puede encontrar mucho ruido y lecturas falsas sin él.

El botón está conectado al pin 14 de salida de entrada de propósito general (GPIO). Puede usar cualquier pin GPIO, sin embargo, mire el pinout primero, ya que no todos son controlables desde el Pi y varían ligeramente entre modelos.

Ahora que el botón está conectado, es hora de probarlo. Cree un nuevo archivo y guárdelo como ' button_test.py '. Agregue este código, guárdelo y luego ejecútelo en la Terminal.

|_+_|

prensa Control + C para detener el guión. Si todo funciona correctamente, debería ver '¡EL BOTÓN FUNCIONA!' en la Terminal. Observe cómo, al igual que el módulo de Minecraft, esta prueba utiliza los módulos RPi.GPIO y de tiempo. Estos permiten que el Pi acceda a los pines de hardware y proporcione funciones de temporización útiles.

Ahora terminemos el resto del código. Crea un nuevo archivo llamado ' super_mine.py '. Aquí está el código:

|_+_|

mc.player.getPos () devuelve las coordenadas actuales del jugador, que luego se almacenan en x, y y z. los setBlocks () El método le dice a Minecraft que llene todos los bloques entre el inicio y el final con el siguiente bloque. Zero es el ID de bloque para el aire. Puede cambiar esto a otro ID de bloque para rellenar un área de forma sólida. También puede cambiar las coordenadas a +100 o incluso +1000 bloques, sin embargo, el Pi puede comenzar a tener problemas si se vuelve demasiado loco. Observe que y + 10 es igual para ambas líneas. Podrías cambiar esto ay - 10 si quisieras remover bloques bajo tierra.

Teletransportarse

Otro uso simple de este botón podría ser 'teletransportarse'. Minecraft Pi Api proporciona una forma de establecer la posición del jugador. El siguiente código 'teletransportará' al jugador a una ubicación preestablecida:

|_+_|

Tenga en cuenta que su método acepta tres parámetros; x, y, z, por lo que puede configurarlos en cualquier cosa para teletransportar instantáneamente al jugador a esa ubicación.

Cree una copia del archivo super_mine ( Archivo> Guardar copia como ) y modificarlo reemplazando el if por lo siguiente:

|_+_|

Este archivo ahora debería verse así:

|_+_|

Guárdalo como ' teleport.py ' y correr.

Es posible que el jugador se quede atascado dentro de algunos bloques al usar esto, en cuyo caso deberá ajustar las coordenadas a un espacio abierto conocido (la parte superior izquierda de la pantalla muestra su ubicación actual).

Construir una casa

Una última tarea para este botón es construir una casa. Al igual que en el ejemplo de minería rápida anterior, esto simplemente reemplazará los bloques que rodean al jugador para hacer una casa. Se utilizarán diferentes ID de bloque para diferentes materiales (ventanas, paredes, etc.). Para hacer las cosas más fáciles de codificar, se creará un bloque sólido y luego se eliminará el interior (establecer el bloque en el aire), esto creará un caparazón hueco. Puede agregar extras como una cama o una puerta, sin embargo, el proyecto Minecraft Pi está un poco incompleto, y aunque estos objetos funcionan cuando los coloca el jugador, no son brillantes cuando se usa Python.

|_+_|

Guardar esto como ' house.py ' y correr. Si todo va bien, debería ver aparecer una casa pequeña (es posible que deba dar la vuelta para encontrarla). Es muy simple, una abertura y algunas ventanas. En teoría, no hay límite para el tamaño o la complejidad de un edificio que se puede construir.

Hacer un minijuego

A continuación, ¡hagamos un minijuego! Esto será bastante simple, cuando el jugador pise un bloque de arena, se convertirá en lava después de un período de tiempo aleatorio. Este es un buen juego para hacer, ya que podrías diseñar tus propios niveles o modificarlo para hacer las cosas más difíciles. No necesitará el botón para este ejemplo.

Cree un nuevo archivo y guárdelo como ' mini_game.py '. Aquí está el código:

|_+_|

Este código es un buen comienzo en el aleatorio() función: aleatorio.uniforme (0,1, 2,5) generará un número aleatorio entre 0,1 (1/10 de segundo) y 2,5 (2 1/2 segundos). Aumentar estos números facilitará el juego.

¡Pruébalo! Párate sobre un bloque de arena y pronto se convertirá en lava. Esta podría ser la base de un juego más complejo.

Hacer otro minijuego

La premisa de este juego es simple: no te quedes parado en el piso de madera cuando se acabe el tiempo. El jugador es teletransportado a una 'arena'. Se ven obligados a quedarse quietos hasta que comienza el juego. Una vez iniciado, el suelo se convertirá en agua una vez que se acabe el tiempo. El jugador debe estar de pie en la zona segura (bloques de diamantes) para sobrevivir. Cada nivel reduce el temporizador en un segundo. Después de cada nivel exitoso, el área segura se agranda. Consulte el código a continuación:

|_+_|

Guardar esto como ' mini_game_2.py 'y pruébalo.

El Pi 2 tiene algunos problemas de rendimiento al ejecutar Minecraft. El gráfico de uso de la Unidad de procesamiento central (CPU) ( esquina superior derecha ) nunca muestra una carga pesada, por lo que esto debe deberse a un diseño deficiente y optimizaciones por parte de los desarrolladores. Estos problemas no están relacionados con el código en ejecución (ya que continúan cuando Python no se está ejecutando), sin embargo, este minijuego los agrava. Si su Pi está realmente luchando, es posible que desee reducir el tamaño de la arena o overclockear su Pi.

cómo comprobar la tarjeta gráfica de Windows 10

Detector de diamantes

Hagamos otro circuito. Esto usará un diodo emisor de luz (LED) para iluminarse cuando haya diamantes debajo (dentro de los 15 bloques). Esto es lo que necesita:

  • 1 x tablero
  • 1 x LED
  • 1 x resistencia de 220 ohmios
  • Cables de salto hembra> macho
  • Macho> Cables de salto macho

Aquí está el circuito:

Conecte el ánodo (pata larga) al pin GPIO 14. Este pin actúa como + 5v. Conecte el cátodo (pata corta) a tierra.

Usé un juguete de mineral barato y lo modifiqué quitando la cubierta trasera y la electrónica, luego coloqué un LED debajo. Podrías fácilmente hacer esto permanente con pegamento termofusible o algo similar.

Guarde este código como ' diamonds.py ':

|_+_|

Cuando hay un bloque de mineral de diamante debajo del jugador (dentro de los 15 bloques), la luz parpadeará.

Mineral de diamante de piedra azul iluminado de ThinkGeek Minecraft: seguro que mantendrá alejados a los cerdos COMPRE AHORA EN AMAZON

¿Has hecho algo genial con Minecraft Pi? Déjame saber en los comentarios lo que hiciste o qué tan lejos llegaste en los juegos.

¡Esperamos que le gusten los artículos que recomendamos y discutimos! MUO tiene asociaciones afiliadas y patrocinadas, por lo que recibimos una parte de los ingresos de algunas de sus compras. Esto no afectará el precio que paga y nos ayuda a ofrecer las mejores recomendaciones de productos.

Cuota Cuota Pío Correo electrónico ¿Vale la pena actualizar a Windows 11?

Windows ha sido rediseñado. Pero, ¿es eso suficiente para convencerte de cambiar de Windows 10 a Windows 11?

Leer siguiente
Temas relacionados
  • Bricolaje
  • Programación
  • Minecraft
  • Frambuesa pi
  • Electrónica
  • Pitón
Sobre el Autor Joe Coburn(136 Artículos publicados)

Joe es licenciado en Ciencias de la Computación por la Universidad de Lincoln, Reino Unido. Es un desarrollador de software profesional, y cuando no está volando drones o escribiendo música, a menudo se le puede encontrar tomando fotos o produciendo videos.

Más de Joe Coburn

Suscríbete a nuestro boletín

¡Únase a nuestro boletín de noticias para obtener consejos técnicos, reseñas, libros electrónicos gratuitos y ofertas exclusivas!

Haga clic aquí para suscribirse