first commit
This commit is contained in:
commit
a5a0434432
1126 changed files with 439481 additions and 0 deletions
150
Projects/MineControls/GrovePi-MineControllers.py
Normal file
150
Projects/MineControls/GrovePi-MineControllers.py
Normal file
|
|
@ -0,0 +1,150 @@
|
|||
# GrovePi Minecraft Controller
|
||||
# This is a custom controller for Minecraft, made using the GrovePi.
|
||||
# In this example, we show you how to build your own custom Minecraft controller
|
||||
# with the GrovePi.
|
||||
# See more about the GrovePi at http://dexterindustries.com/grovepi
|
||||
# A great reference we used is the MagPi's Essentials Minecraft Guide: https://www.raspberrypi.org/magpi-issues/Essentials_Minecraft_v1.pdf
|
||||
'''
|
||||
Software Setup:
|
||||
Before we begin, run the following commands to setup:
|
||||
sudo apt-get install minecraft-pi
|
||||
sudo pip3 install python3-xlib
|
||||
sudo pip3 install pyautogui
|
||||
|
||||
Hardware Setup:
|
||||
Setup the GrovePi on the Raspberry Pi.
|
||||
Connect a touch Sensor to port A0.
|
||||
Connect a Joystick to port A2.
|
||||
Connect a touch sensor to Port D3.
|
||||
Connect a touch sensor to Port D4.
|
||||
|
||||
To run:
|
||||
1. Start Minecraft on the Pi.
|
||||
2. Start a world.
|
||||
3. Start Python3 (IDLE).
|
||||
4. Open this file (GrovePi-Controller.py)
|
||||
5. Click "Run" --> "Run Module"
|
||||
6. Click back into Minecraft.
|
||||
'''
|
||||
|
||||
import mcpi.minecraft as minecraft
|
||||
import grovepi
|
||||
import time
|
||||
import mcpi.block as block
|
||||
import pyautogui as pag
|
||||
|
||||
# Setup the four sensors.
|
||||
touch_sensor1 = 4 # This will be the Build Key
|
||||
touch_sensor2 = 3 # This will be the Destroy Key
|
||||
touch_sensor3 = 14 # This will be the Fly Key.
|
||||
|
||||
# This will be the joystick.
|
||||
xPin = 16 # Port A2
|
||||
yPin = 17 # Port A2
|
||||
|
||||
grovepi.pinMode(xPin, "INPUT")
|
||||
grovepi.pinMode(yPin, "INPUT")
|
||||
|
||||
grovepi.pinMode(touch_sensor1, "INPUT")
|
||||
grovepi.pinMode(touch_sensor2, "INPUT")
|
||||
grovepi.pinMode(touch_sensor3, "INPUT")
|
||||
|
||||
flying = 0;
|
||||
|
||||
# Creat a minecraft entity. We'll reference this through the entire program.
|
||||
mc = minecraft.Minecraft.create()
|
||||
|
||||
# unpress() - This function unpresses all keys.
|
||||
def unpress():
|
||||
for key in ['s','w','a','d',' ']:
|
||||
pag.keyUp(key)
|
||||
|
||||
# move() - This function presses the key "direction"
|
||||
def move(direction):
|
||||
unpress()
|
||||
pag.keyDown(direction)
|
||||
|
||||
#build - This function builds a square block of "size" size.
|
||||
def build(p):
|
||||
size = 5
|
||||
mc.setBlocks(p.x+1, p.y+1, p.z+1, (p.x + size), (p.y + size), (p.z + size), block.STONE.id)
|
||||
print("Build!")
|
||||
|
||||
#destroy - This function destroys a square block of "size" size.
|
||||
def destroy(p):
|
||||
size = 5
|
||||
mc.setBlocks(p.x+1, p.y+1, p.z+1, (p.x + size), (p.y + size), (p.z + size), block.AIR.id)
|
||||
print("Destroy!")
|
||||
|
||||
# fly - This starts and stops the flying mode.
|
||||
def fly():
|
||||
pag.keyDown(' ')
|
||||
pag.keyUp(' ')
|
||||
pag.keyDown(' ')
|
||||
pag.keyUp(' ')
|
||||
print("Flying!")
|
||||
|
||||
# We do the following loop over and over.
|
||||
while True:
|
||||
|
||||
p = mc.player.getTilePos() # Get the position of our person in Minecraft.
|
||||
|
||||
try:
|
||||
|
||||
# Read the three keys.
|
||||
# Touch Sensor 1: Build something if it's touched.
|
||||
if(grovepi.digitalRead(touch_sensor1)):
|
||||
build(p)
|
||||
# Touch Sensor 2: Destroy something if it's touched.
|
||||
if(grovepi.digitalRead(touch_sensor2)):
|
||||
destroy(p)
|
||||
# Touch Sensor 3: Start or stop flying if it's been touched.
|
||||
if(grovepi.digitalRead(touch_sensor3)):
|
||||
#The variable flying is whether we're flying or not.
|
||||
if(flying == 0):
|
||||
flying = 1
|
||||
fly()
|
||||
else:
|
||||
flying = 0
|
||||
|
||||
|
||||
# Read the joystick. We do that with the two pins x and y.
|
||||
x = grovepi.analogRead(xPin)
|
||||
y = grovepi.analogRead(yPin)
|
||||
|
||||
# Check to see if the joystick has been pressed down.
|
||||
click = 1 if x >= 1020 else 0
|
||||
print(str(x) + ", " + str(y))
|
||||
|
||||
# Check to see if we've been put into flying mode. If we have, we can teleport ourselves!
|
||||
if(flying):
|
||||
jump = 5 # This is the jump size, how far we're going to jump in each direction.
|
||||
playerPosition = mc.player.getPos() # Get our persons position in Minecraft.
|
||||
|
||||
# Now we'll take the joystick values and jump in the direction it tells us to.
|
||||
if(x < 400):
|
||||
mc.player.setPos(playerPosition.x+jump, playerPosition.y, playerPosition.z)
|
||||
|
||||
# Here we will make sure that the click and the x-axis reading are not confused.
|
||||
elif(x > 600 and (click == 0)):
|
||||
mc.player.setPos(playerPosition.x-jump, playerPosition.y, playerPosition.z)
|
||||
|
||||
elif(y > 600):
|
||||
mc.player.setPos(playerPosition.x, playerPosition.y+jump, playerPosition.z)
|
||||
|
||||
elif(y < 400):
|
||||
mc.player.setPos(playerPosition.x, playerPosition.y-jump, playerPosition.z)
|
||||
|
||||
# If we didn't read anything, unpress the buttons.
|
||||
else:
|
||||
unpress()
|
||||
|
||||
# If the joystick is clicked, we fly up one spot.
|
||||
if(click):
|
||||
pag.keyUp(' ')
|
||||
pag.keyDown(' ')
|
||||
|
||||
|
||||
except IOError:
|
||||
print("Error")
|
||||
|
||||
BIN
Projects/MineControls/Minecraft-dexter-industries.jpg
Normal file
BIN
Projects/MineControls/Minecraft-dexter-industries.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 56 KiB |
37
Projects/MineControls/README.md
Normal file
37
Projects/MineControls/README.md
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
## **Mine Controls.**
|
||||
|
||||

|
||||
|
||||
### What is it?
|
||||
Mine Controls are custom hardware controls for Minecraft and the Raspberry Pi! In this project we show you how to build a custom controller for Minecraft using the Raspberry Pi and the GrovePi. You can get [all the hardware for this project from the Dexter Industries website.](http://dexterindustries.com/grovepi)
|
||||
|
||||
|
||||
### Setup
|
||||
See the [full project description for making a custom Minecraft controller for your Raspberry Pi here](http://www.dexterindustries.com/projects/custom-minecraft-controller/).
|
||||
|
||||
Software Setup:
|
||||
Before we begin, run the following commands to setup:
|
||||
`sudo apt-get install minecraft-pi `
|
||||
|
||||
`sudo pip3 install python3-xlib`
|
||||
|
||||
`sudo pip3 install pyautogui`
|
||||
|
||||
|
||||
Hardware Setup:
|
||||
Setup the GrovePi on the Raspberry Pi.
|
||||
Connect a touch Sensor to port A0.
|
||||
Connect a Joystick to port A2.
|
||||
Connect a touch sensor to Port D3.
|
||||
Connect a touch sensor to Port D4.
|
||||
|
||||
To run:
|
||||
1. Start Minecraft on the Pi.
|
||||
2. Start a world.
|
||||
3. Start Python3 (IDLE).
|
||||
4. Open this file (GrovePi-Controller.py)
|
||||
5. Click "Run" --> "Run Module"
|
||||
6. Click back into Minecraft.
|
||||
|
||||
|
||||
See more at the [Dexter Industries](http://dexterindustries.com/).
|
||||
Loading…
Add table
Add a link
Reference in a new issue