Minecraft Pi संस्करण के साथ पायथन और इलेक्ट्रॉनिक्स सीखें

Minecraft Pi संस्करण के साथ पायथन और इलेक्ट्रॉनिक्स सीखें

क्या आप हमेशा कोड करना सीखना चाहते हैं लेकिन यह नहीं जानते कि कहां से शुरू करें? पायथन और कुछ सरल इलेक्ट्रॉनिक्स का उपयोग करके रास्पबेरी पाई पर Minecraft को नियंत्रित करना सीखें। यहाँ अंतिम परिणाम है:





इस प्रोजेक्ट के लिए आपको एक Pi 2 या नए की आवश्यकता होगी, और जब आप इनमें से अधिकांश कार्यों को सिक्योर शेल (SSH) पर कमांड लाइन के माध्यम से पूरा कर सकते हैं, तो यह ट्यूटोरियल सीधे Pi पर कोडिंग पर ध्यान केंद्रित करेगा।





Minecraft के लिए नया? चिंता न करें - ये रहा हमारा Minecraft शुरुआती गाइड .





Minecraft Pi . का परिचय

रास्पबेरी पाई के लिए Minecraft को सीखने और छेड़छाड़ करने के लिए विकसित किया गया है (और यह मुफ़्त है)। यह एक एप्लिकेशन प्रोग्रामिंग इंटरफेस (एपीआई) के साथ आता है जो कोड को आसानी से Minecraft से बात करने का एक तरीका प्रदान करता है। यह पाइथन में कोड करना सीखने के साथ-साथ इलेक्ट्रॉनिक्स के साथ शुरुआत करने के लिए शानदार है।

पायथन क्या है?

अजगर एक प्रोग्रामिंग भाषा है। यह है व्याख्या की , जिसका अर्थ है कि जब आप एक पायथन फ़ाइल या प्रोग्राम चलाते हैं, तो कंप्यूटर को पहले फ़ाइल में एक छोटा सा काम करना होता है। डाउनसाइड्स यह है कि संकलित भाषाओं की तुलना में इसे धीमा माना जा सकता है [टूटा हुआ यूआरएल हटाया गया]।



व्याख्या की गई भाषाओं के लाभ कोडिंग की गति और उनकी मित्रता हैं। आपको कंप्यूटर को बताने की जरूरत नहीं है क्या डेटा आप स्टोर करना चाहते हैं, बस आप कुछ स्टोर करना चाहते हैं और कंप्यूटर यह पता लगाएगा कि क्या करना है। बेशक, अपवाद हैं, और यह कुछ हद तक सरलीकृत दृश्य है, हालांकि प्रोग्रामिंग मजेदार होनी चाहिए! यदि आप जटिल तकनीकी विवरणों में खुदाई करना शुरू करते हैं तो यह थोड़ा श्रमसाध्य हो सकता है।

पायथन केस सेंसिटिव है। यह जानना महत्वपूर्ण है, क्योंकि पायथन वस्तुओं को नहीं पहचान पाएगा भले ही उनकी वर्तनी सही हो अगर मामला गलत है। यदि विधि को वास्तव में 'DoSomething ()' कहा जाता है, तो 'Dosomething ()' काम नहीं करेगा। पायथन भी इंडेंटेशन का उपयोग करता है . अन्य प्रोग्रामिंग भाषाओं को परवाह नहीं है कि आपके कोड में कितने इंडेंट हैं, जबकि पायथन करता है देखभाल। इंडेंट का उपयोग पायथन को यह बताने के लिए किया जाता है कि कोड कहां है। अन्य भाषाएं समूह कोड के लिए 'कर्ली ब्रेसेस' ({}) का उपयोग कर सकती हैं - पायथन इनका उपयोग नहीं करता है। पायथन टिप्पणियों के लिए हैश (#) का उपयोग करता है, और टिप्पणियों का उपयोग अन्य डेवलपर्स या कोड को देखने वाले लोगों को यह बताने के लिए किया जाता है कि कोई विशेष भाग क्या करता है, या इसकी आवश्यकता क्यों है। हैश के बाद पाइथन कुछ भी अनदेखा करता है।





अंत में, पायथन के दो मुख्य संस्करण हैं - पायथन 2.7.x और पायथन 3.x। दोनों के बीच कुछ अंतर हैं ( क्या अंतर हैं? ) यह ट्यूटोरियल पायथन 3 का उपयोग करेगा।

प्रारंभिक व्यवस्था

आपका पाई प्रदान करना पहले से ही है रास्पियन सेटअप और चलाना , बहुत अधिक प्रारंभिक सेटअप की आवश्यकता नहीं है।





टर्मिनल खोलें ( मेनू > सहायक उपकरण > टर्मिनल ) और इस कमांड को रन करें। भंडार सूची को अद्यतित रखना हमेशा अच्छा अभ्यास है, और यह कार्यक्रमों की नवीनतम सूची डाउनलोड करेगा (यह स्वयं प्रोग्राम डाउनलोड नहीं करेगा, इससे पीआई को यह जानने में मदद मिलती है कि कौन से प्रोग्राम कहलाते हैं और उन्हें कहां ढूंढना है)।

sudo apt-get update

अब पाई को अपडेट करें (इसमें कुछ समय लग सकता है):

sudo apt-get upgrade

पायथन और माइनक्राफ्ट पाई पहले से ही स्थापित हैं, हालांकि यदि किसी भी कारण से Minecraft Pi स्थापित नहीं है, तो इसे स्थापित करना आसान है:

sudo apt-get install minecraft-pi

दस्तावेज़ों पर नेविगेट करें और 'Minecraft' नामक एक नया फ़ोल्डर बनाएँ:

cd Documents/
mkdir Minecraft

आप इस नए फ़ोल्डर की सामग्री देख सकते हैं:

ls

यहां एक टिप दी गई है - यदि आप टाइप करना शुरू करते हैं और TAB कुंजी दबाते हैं, तो कमांड लाइन आपके लिए स्टेटमेंट को स्वतः पूर्ण करने का प्रयास करेगी।

आप pwd का उपयोग करके वर्तमान निर्देशिका के पथ की जांच कर सकते हैं, जो प्रिंट वर्किंग डायरेक्टरी के लिए है:

pwd

पर जाकर Minecraft प्रारंभ करें मेनू > गेम्स > Minecraft Pi . आपको इसे चलाने की आवश्यकता होगी, लेकिन बाद में इस पर वापस आएंगे।

से पायथन ३ खोलें मेनू> प्रोग्रामिंग> पायथन 3 (आईडीएलई) . यह प्रोग्राम आपको Python कमांड चलाने और प्रोग्राम लिखने का एक तरीका प्रदान करता है।

अब आप यहां अपने पायथन कमांड टाइप कर सकते हैं, लेकिन यह बहुत व्यावहारिक नहीं है। के लिए जाओ फ़ाइल > नई फ़ाइल और फिर फ़ाइल> सहेजें और इसे आपके द्वारा पहले बनाए गए फोल्डर में सेव करें। ( दस्तावेज़ > Minecraft ) चलो इसे कहते हैं' hello_world.py '। आपको .py एक्सटेंशन का उपयोग करने की आवश्यकता नहीं है, यह अपने आप जुड़ जाएगा, लेकिन यह अच्छा अभ्यास है।

यदि आप टर्मिनल पर वापस जाते हैं, और Minecraft फ़ोल्डर में नेविगेट करते हैं, तो आपको वह फ़ाइल देखनी चाहिए जिसे आपने अभी बनाया है:

cd Minecraft/
ls

आप इस फाइल को इस तरह चला सकते हैं:

python hello_world

ध्यान दें कि कैसे 'पायथन' सभी लोअर-केस है। यह फ़ाइल नाम से पहले होना चाहिए, क्योंकि यह पाई को बताता है कि निम्न फ़ाइल पायथन है, इसलिए इसे इस तरह निष्पादित किया जाना चाहिए।

पायथन संपादक पर वापस जाएँ और टाइप करें:

print 'Hello, World!'

इस फ़ाइल को सहेजें और इसे फिर से चलाएँ - अब आपको 'हैलो, वर्ल्ड' देखना चाहिए! कमांड लाइन में दिखाई दें - साफ-सुथरा! प्रिंट कमांड केवल पायथन को निम्नलिखित पाठ को दोहरे उद्धरण चिह्नों में आउटपुट करने के लिए कहता है। यह अच्छा है, लेकिन Minecraft के लिए बहुत उपयोगी नहीं है, आइए इसे लिंक करें:

from mcpi.minecraft import Minecraft
mc = Minecraft.create()
mc.postToChat('Hello, World!')

अब अगर आप इस फाइल को सेव और रन करते हैं, तो आपको 'हैलो, वर्ल्ड!' देखना चाहिए। Minecraft खेल में दिखाई देते हैं। आइए कोड को तोड़ें:

from mcpi.minecraft import Minecraft

यह पंक्ति पायथन को बताती है कि आप किसी अन्य फ़ाइल के कोड का उपयोग करना चाहते हैं। यह mcpi.minecraft फ़ाइल Minecraft के आसान नियंत्रण की अनुमति देने के लिए विकसित की गई थी।

mc = Minecraft.create()

यह रेखा 'mc' (Minecraft) नामक वस्तु बनाती है। आपको इसे Minecraft गेम में संचार की अनुमति देने के लिए बनाना होगा - यह केवल फ़ाइल को शामिल करने के लिए पर्याप्त नहीं है।

mc.postToChat('Hello, World!')

अंत में, यह लाइन Minecraft को चैट में कुछ टेक्स्ट लिखने के लिए कहती है। 'नमस्ते, विश्व' को बदलने का प्रयास करें! किसी और चीज़ के लिए और देखें कि क्या होता है, लेकिन दोनों दोहरे उद्धरणों को शामिल करना याद रखें। यदि आपको सॉफ़्टवेयर समस्याएँ आ रही हैं, तो ये कुछ सामान्य Python और Minecraft Pi त्रुटियाँ हैं:

  • AttributeError - यह एक टाइपो है, जैसे कि प्रिंट के बजाय पिंट या प्रिंट
  • NameError: नाम 'Minecraft' परिभाषित नहीं है - उन मॉड्यूल को आयात करना याद रखें जिनकी आपको आवश्यकता है
  • नाम त्रुटि: नाम 'सत्य' परिभाषित नहीं है - पायथन केस संवेदनशील है, 'सत्य' में बदलें
  • socket.error: [Errno 111] कनेक्शन अस्वीकृत - सुनिश्चित करें कि Minecraft चल रहा है

परियोजनाओं

अब जब आप पायथन और माइनक्राफ्ट की मूल बातें जानते हैं, तो आइए कुछ अच्छे प्रोजेक्ट बनाते हैं। सभी कोड को जीथब से डाउनलोड किया जा सकता है।

स्वचालित ब्रिज बिल्डर

यह कार्यक्रम प्रभावी रूप से पानी पर एक पुल का निर्माण करेगा। जब खिलाड़ी पानी के शरीर के पास पहुंच जाता है, तो कार्यक्रम कई ब्लॉकों को पत्थर में बदल देगा। जैसा कि Minecraft एक समन्वय प्रणाली का उपयोग करता है, खिलाड़ी का स्थान प्राप्त करना बहुत आसान है, साथ ही खिलाड़ी के चारों ओर के ब्लॉक के प्रकार भी। Minecraft Pi थोड़ा सीमित है, इसलिए बल्क में कई अलग-अलग ब्लॉक को अपडेट करना संभव नहीं है। हालाँकि, आप इस व्यवहार को आसानी से स्वयं कोड कर सकते हैं।

एक नई फ़ाइल बनाएँ ( फ़ाइल > नई फ़ाइल ) और इसे 'के रूप में सहेजें ब्रिज_बिल्डर.py '।

from mcpi.minecraft import Minecraft
mc = Minecraft.create() # create Minecraft Object
while True:
x, y, z = mc.player.getPos() # store player position

# store the surrounding blocks
a = mc.getBlock(x, y - 1, z + 1)
b = mc.getBlock(x, y - 1, z - 1)
c = mc.getBlock(x - 1, y - 1, z)
d = mc.getBlock(x + 1, y - 1, z)
if a == 8 or a == 9 or b == 8 or b == 9 or c == 8 or c == 9 or d == 8 or d == 9:
# 8 or 9 is water. Set surrounding blocks on floor to a solid (stone) if water is found
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)
mc.setBlocks(x, y - 1, z, x + 1, y - 1, z - 1, 1)

ध्यान दें कि y मान वास्तव में y - 1 को कैसे देख रहा है। यह तल स्तर है। यदि y के मान का उपयोग किया गया था, तो स्क्रिप्ट घुटने के स्तर पर ब्लॉक की तलाश करेगी - यह बहुत अच्छी तरह से काम नहीं करेगी! मैक.गेटब्लॉक () दिए गए निर्देशांक के लिए एक ब्लॉक की आईडी देता है। जैसा कि x, y, और z खिलाड़ी के निर्देशांक हैं, आप खिलाड़ी के चारों ओर स्थिति प्राप्त करने के लिए उनमें से जोड़ या घटा सकते हैं। आपको x, y, और z मानों का उपयोग करने की आवश्यकता नहीं है, आप किसी भी संख्या का उपयोग कर सकते हैं, हालाँकि आप यह नहीं जानते होंगे कि वह विशेष ब्लॉक खिलाड़ी से कैसे संबंधित है - खिलाड़ी के सापेक्ष मूल्यों का उपयोग करना बेहतर है। इस फ़ाइल को कमांड लाइन से चलाएँ और देखें कि क्या होता है।

आपको देखना चाहिए कि खिलाड़ी के पानी के शरीर तक पहुँचने पर मैदान का एक छोटा सा क्षेत्र पत्थर में बदल जाता है। यह बहुत अच्छा नहीं है -- आप इतनी तेजी से चलने में सक्षम हैं कि समस्या उत्पन्न हो जाए। आप पानी की एक बड़ी मात्रा को भूमि में परिवर्तित करके इसे हल कर सकते हैं। mc.setBlocks() विधि का अंतिम भाग ब्लॉक आईडी है। एक पत्थर के लिए ब्लॉक आईडी है। आप इसे लकड़ी, घास या किसी भी चीज़ में बदल सकते हैं। यदि आप चाहें, तो आप इसे आसानी से एक जटिल डिजाइन में बदल सकते हैं - शायद एक निलंबन पुल!

सुपर माइनिंग बटन

यह उदाहरण खनन का छोटा काम करेगा। इसमें एक भौतिक बटन होता है, जिसे दबाए जाने पर, 10 ब्लॉकों को क्यूब किया जाएगा। आइए बटन से शुरू करते हैं। Arduino के बटनों के समान, आपको थोड़ी मात्रा में इलेक्ट्रॉनिक्स की आवश्यकता होगी, जो सभी एक मूल स्टार्टर किट में पाए जाने चाहिए:

  • 1 एक्स ब्रेडबोर्ड
  • 1 एक्स क्षणिक स्विच
  • 1 x 220 ओम रोकनेवाला
  • महिला > पुरुष कूद केबल
  • पुरुष > पुरुष कूद केबल

यहाँ सर्किट है:

पाई-बटन-कनेक्शन

इस रोकनेवाला को 'पुल डाउन' रोकनेवाला कहा जाता है। यह सुनिश्चित करने में मदद करता है कि पीआई क्या सोचता है कि बटन दबाया जा रहा है, वास्तव में बटन दबाया जा रहा है। आपको इसका उपयोग करने की आवश्यकता नहीं है, हालांकि इसकी अनुशंसा की जाती है, क्योंकि इसके बिना आपको बहुत अधिक शोर और गलत रीडिंग मिल सकती है।

बटन सामान्य प्रयोजन इनपुट आउटपुट (जीपीआईओ) पिन 14 से जुड़ा है। आप किसी भी जीपीआईओ पिन का उपयोग कर सकते हैं, हालांकि देखें बाहर पिन सबसे पहले, क्योंकि वे सभी पाई से नियंत्रित नहीं होते हैं, और मॉडल के बीच थोड़ा भिन्न होते हैं।

अब जब बटन जुड़ा हुआ है, तो इसका परीक्षण करने का समय आ गया है। एक नई फाइल बनाएं और इसे 'के रूप में सहेजें button_test.py '। इस कोड को जोड़ें, इसे सेव करें और फिर इसे Terminal.

import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM) # tell the Pi what headers to use
GPIO.setup(14, GPIO.IN) # tell the Pi this pin is an input
while True:
if GPIO.input(14) == True: # look for button press
print 'BUTTON WORKS!' # log result
time.sleep(0.5) # wait 0.5 seconds

दबाएँ नियंत्रण + सी स्क्रिप्ट को रोकने के लिए। अगर सब कुछ सही ढंग से काम कर रहा है, तो आपको 'बटन वर्क्स' देखना चाहिए! टर्मिनल में। ध्यान दें कि कैसे, Minecraft मॉड्यूल की तरह, यह परीक्षण RPi.GPIO और समय मॉड्यूल का उपयोग कर रहा है। ये पीआई को हार्डवेयर पिन तक पहुंचने और उपयोगी समय कार्य प्रदान करने की अनुमति देते हैं।

अब बाकी कोड को खत्म करते हैं। एक नई फाइल बनाएं जिसे 'कहा जाता है super_mine.py '। यहाँ कोड है:

import RPi.GPIO as GPIO
import time
from mcpi.minecraft import Minecraft
mc = Minecraft.create() # create Minecraft Object
GPIO.setmode(GPIO.BCM) # tell the Pi what headers to use
GPIO.setup(14, GPIO.IN) # tell the Pi this pin is an input
while True:
if GPIO.input(14) == True: # look for button press
x, y, z = mc.player.getPos() # read the player position
mc.setBlocks(x, y, z, x + 10, y + 10, z + 10, 0) # mine 10 blocks
mc.setBlocks(x, y, z, x - 10, y + 10, z - 10, 0) # mine 10 blocks
time.sleep(0.5) # wait 0.5 seconds

mc.player.getPos () खिलाड़ियों को वर्तमान निर्देशांक लौटाता है, जो तब x, y और z में संग्रहीत होते हैं। NS सेटब्लॉक () विधि निम्नलिखित ब्लॉक के साथ शुरुआत और अंत के बीच सभी ब्लॉकों को भरने के लिए Minecraft को बताती है। शून्य हवा के लिए ब्लॉक-आईडी है। किसी क्षेत्र को ठोस भरने के लिए आप इसे किसी अन्य ब्लॉक-आईडी में बदल सकते हैं। आप निर्देशांक को +100 या यहां तक ​​​​कि +1000 ब्लॉक में भी बदल सकते हैं, हालांकि यदि आप बहुत अधिक पागल हो जाते हैं तो पाई संघर्ष करना शुरू कर सकती है। ध्यान दें कि कैसे y + 10 दोनों पंक्तियों के लिए समान है। यदि आप भूमिगत ब्लॉकों को हटाना चाहते हैं तो आप इसे y-10 में बदल सकते हैं।

टेलीपोर्टिंग

इस बटन का एक और सरल उपयोग 'टेलीपोर्ट' करना हो सकता है। Minecraft Pi Api खिलाड़ी की स्थिति निर्धारित करने का एक तरीका प्रदान करता है। निम्नलिखित कोड खिलाड़ी को पूर्व निर्धारित स्थान पर 'टेलीपोर्ट' करेगा:

mc.player.setPos(0, 0, 0)

ध्यान दें कि उसकी विधि तीन मापदंडों को स्वीकार करती है; x, y, और z - ताकि आप खिलाड़ी को तुरंत उस स्थान पर टेलीपोर्ट करने के लिए इन्हें किसी भी चीज़ पर सेट कर सकें।

सुपर_माइन फ़ाइल की एक प्रति बनाएँ ( फ़ाइल> कॉपी को इस रूप में सहेजें ) और अगर को निम्नलिखित के साथ बदलकर इसे संशोधित करें:

if GPIO.input(14) == True: # look for button press
mc.player.setPos(0, 0, 0) # teleport player
time.sleep(0.5) # wait 0.5 seconds

यह फ़ाइल अब इस तरह दिखनी चाहिए:

import RPi.GPIO as GPIO
from mcpi.minecraft import Minecraft
import time
mc = Minecraft.create() # create Minecraft Object
GPIO.setmode(GPIO.BCM) # tell the Pi what headers to use
GPIO.setup(14, GPIO.IN) # tell the Pi this pin is an input
while True:
if GPIO.input(14) == True: # look for button press
mc.player.setPos(0, 0, 0) # teleport player
time.sleep(0.5) # wait 0.5 seconds

इसे 'के रूप में सहेजें teleport.py ' और भाग खड़ा हुआ।

इसका उपयोग करते समय आप पा सकते हैं कि खिलाड़ी कुछ ब्लॉकों के अंदर फंस गया है, इस स्थिति में आपको निर्देशांक को एक ज्ञात खुली जगह में समायोजित करने की आवश्यकता होगी (स्क्रीन के ऊपर बाईं ओर आपका वर्तमान स्थान दिखाता है)।

एक घर का निर्माण करना

इस बटन का एक आखिरी काम है घर बनाना। ऊपर दिए गए त्वरित-खनन उदाहरण की तरह, यह घर बनाने के लिए खिलाड़ी के आस-पास के ब्लॉक को आसानी से बदल देगा। विभिन्न सामग्रियों (खिड़की, दीवारों आदि) के लिए अलग-अलग ब्लॉक-आईडी का उपयोग किया जाएगा। चीजों को कोड करना आसान बनाने के लिए, एक ठोस ब्लॉक बनाया जाएगा, और फिर अंदर हटा दिया जाएगा (ब्लॉक को हवा में सेट करें), यह एक खोखला खोल बनाएगा। आप बिस्तर या दरवाजे की तरह अतिरिक्त जोड़ सकते हैं, हालांकि Minecraft Pi प्रोजेक्ट थोड़ा अधूरा है, और जब ये ऑब्जेक्ट खिलाड़ी द्वारा रखे जाने पर काम करते हैं, तो वे पायथन का उपयोग करते समय शानदार नहीं होते हैं।

from mcpi.minecraft import Minecraft
import RPi.GPIO as GPIO
import time
mc = Minecraft.create() # create Minecraft Object
GPIO.setmode(GPIO.BCM) # tell the Pi what headers to use
GPIO.setup(14, GPIO.IN) # tell the Pi this pin is an input
while True:
if GPIO.input(14) == True:
x, y, z = mc.player.getPos()
mc.setBlocks(x + 2, y - 1, z + 2, x + 7, y + 3, z + 8, 5) # make shell
mc.setBlocks(x + 3, y, z + 3, x + 6, y + 2, z + 7, 0) # remove inside
mc.setBlocks(x + 2, y, z + 5, x + 2, y + 1, z + 5, 0) # make doorway
mc.setBlocks(x + 4, y + 1, z + 8, x + 5, y + 1, z + 8, 102) # make window 1
mc.setBlocks(x + 4, y + 1, z + 2, x + 5, y + 1, z + 2, 102) # make window 2
mc.setBlocks(x + 7, y + 1, z + 4, x + 7, y + 1, z + 6, 102) # make window 3

इसे 'के रूप में सहेजें' house.py ' और भाग खड़ा हुआ। सब कुछ ठीक है, आपको एक छोटा सा घर दिखाई देना चाहिए (इसे खोजने के लिए आपको मुड़ना पड़ सकता है)। यह बहुत आसान है, एक उद्घाटन और कुछ खिड़कियां। सिद्धांत रूप में, इस बात की कोई सीमा नहीं है कि आप कितनी बड़ी या जटिल इमारत का निर्माण कर सकते हैं।

एक मिनी गेम बनाएं

अगला, चलिए एक मिनी-गेम बनाते हैं! यह काफी सरल होगा, जब खिलाड़ी रेत के एक ब्लॉक पर कदम रखता है, तो यह यादृच्छिक समय के बाद लावा में बदल जाएगा। यह बनाने के लिए एक अच्छा खेल है, क्योंकि आप अपने स्तर को डिजाइन कर सकते हैं या चीजों को कठिन बनाने के लिए इसे संशोधित कर सकते हैं। इस उदाहरण के लिए आपको बटन की आवश्यकता नहीं होगी।

एक नई फाइल बनाएं और इसे 'के रूप में सहेजें mini_game.py '। यहाँ कोड है:

from mcpi.minecraft import Minecraft
import random
import time
mc = Minecraft.create() # create Minecraft Object
while True:
x, y, z = mc.player.getPos()
block_under_player = mc.getBlock(x, y - 1, z)

if block_under_player == 12:
# player standing on sand, start the timer
random_time = random.uniform(0.1, 2.5) # generate random number
time.sleep(random_time); # wait
mc.setBlock(x, y - 1, z, 11) # turn it into lava

यह कोड इस पर एक अच्छा स्टार्टर है यादृच्छिक रूप से() समारोह: random.uniform (0.1, 2.5) 0.1 (1/10 सेकंड) और 2.5 (2 1/2 सेकंड) के बीच एक यादृच्छिक संख्या उत्पन्न करेगा। इन नंबरों को बढ़ाने से खेल आसान हो जाएगा।

कोशिश करके देखो! रेत के एक ब्लॉक पर खड़े हो जाओ, और यह जल्द ही लावा में बदल जाएगा। यह एक अधिक जटिल खेल का आधार हो सकता है।

एक और मिनी गेम बनाएं

इस खेल का आधार सरल है - समय समाप्त होने पर लकड़ी के फर्श पर खड़े न हों। खिलाड़ी को एक 'क्षेत्र' में टेलीपोर्ट किया जाता है। उन्हें खेल शुरू होने तक स्थिर रहने के लिए मजबूर किया जाता है। एक बार शुरू करने के बाद, टाइमर खत्म होते ही फर्श पानी में बदल जाएगा। जीवित रहने के लिए खिलाड़ी को सुरक्षित क्षेत्र (डायमंड ब्लॉक) में खड़ा होना चाहिए। प्रत्येक स्तर टाइमर को एक सेकंड से कम कर देता है। प्रत्येक सफल स्तर के बाद सुरक्षित क्षेत्र बड़ा हो जाता है। नीचे दिए गए कोड की जाँच करें:

import time
import random
from mcpi.minecraft import Minecraft
mc = Minecraft.create() # create Minecraft Object
# clear area
mc.setBlocks(-10, 1, -10, 25, 5, 25, 0)
# create arena shell
mc.setBlocks(0, 0, 0, 25, 10, 25, 17)
# hollow out arena
mc.setBlocks(1, 1, 1, 24, 10, 24, 0)
# move player to arena
mc.player.setPos(14, 25, 20) # teleport player
# make them stay put
# teleport player to start position every 1/10th second.
# do this for 5 seconds then start the game
time.sleep(2)
total_wait = 0
mc.postToChat('Waiting to Start')
while total_wait <5:
mc.player.setPos(14, 1, 20) # teleport player
time.sleep(0.1)
total_wait += 0.1
mc.postToChat('BEGIN!')
# 10 levels
for level in range(10):
x, y, z = mc.player.getPos()
level_time = 10 - level # reduce time by 1 second for each level
mc.postToChat('Level - ' + str(level + 1) + ' start')
# build floor
mc.setBlocks(0, 0, 0, 25, 0, 25, 17)
# make safe area
safe_area_start = random.uniform(0, 22)
safe_area_end = random.uniform(0, 22)
mc.setBlocks(safe_area_start, 0, safe_area_end, safe_area_start + level, 0, safe_area_end + level, 57)
elapsed_time = 0
while elapsed_time <10:
x, y, z = mc.player.getPos()
time.sleep(0.25)
elapsed_time += 0.25
# check player is still on floor
if y <0.75:
mc.postToChat('Game Over')
break;
else:
# remove floor
mc.setBlocks(-10, 0, -10, 25, 0, 25, 8)
# put safe area back
mc.setBlocks(safe_area_start, 0, safe_area_end, safe_area_start + level, 0, safe_area_end + level, 57)
time.sleep(2.5)
continue
break

इसे 'के रूप में सहेजें' mini_game_2.py ' और इसे एक रन दें।

Minecraft चलाते समय Pi 2 में कुछ प्रदर्शन समस्याएँ हैं। सेंट्रल प्रोसेसिंग यूनिट (सीपीयू) उपयोग ग्राफ ( शीर्ष दायां कोना ) कभी भी कोई भारी भार नहीं दिखाता है, इसलिए यह डेवलपर्स द्वारा खराब डिजाइन और अनुकूलन के लिए होना चाहिए। ये मुद्दे रनिंग कोड से असंबंधित हैं (जैसा कि वे तब भी जारी रहते हैं जब पायथन नहीं चल रहा होता है), हालाँकि वे इस मिनी गेम से जुड़े होते हैं। यदि आपका पाई वास्तव में संघर्ष कर रहा है तो आप अखाड़े के आकार को कम करना या अपने पाई को ओवरक्लॉक करना चाह सकते हैं।

मौत की काली स्क्रीन को कैसे ठीक करें

डायमंड डिटेक्टर

चलो एक और सर्किट बनाते हैं। यह एक प्रकाश उत्सर्जक डायोड (एलईडी) का उपयोग करेगा जब नीचे हीरे (15 ब्लॉक के भीतर) होंगे। यहाँ आपको क्या चाहिए:

  • 1 एक्स ब्रेडबोर्ड
  • 1 एक्स एलईडी
  • 1 x 220 ओम रोकनेवाला
  • महिला > पुरुष कूद केबल
  • पुरुष > पुरुष कूद केबल

यहाँ सर्किट है:

एनोड (लॉन्ग लेग) को GPIO पिन 14 से कनेक्ट करें। यह पिन +5v की तरह काम करता है। कैथोड (छोटा पैर) को जमीन से कनेक्ट करें।

मैंने एक सस्ते अयस्क के खिलौने का उपयोग किया है और पीछे के कवर और इलेक्ट्रॉनिक्स को हटाकर इसे संशोधित किया है, फिर मैंने इसके नीचे एक एलईडी लगाई। आप इसे गर्म गोंद या कुछ इसी तरह से आसानी से स्थायी बना सकते हैं।

इस कोड को 'के रूप में सहेजें Diamonds.py ':

import RPi.GPIO as GPIO
import time
from mcpi.minecraft import Minecraft
mc = Minecraft.create() # create Minecraft Object
led_pin = 14 # store the GPIO pin number
GPIO.setmode(GPIO.BCM) # tell the Pi what headers to use
GPIO.setup(14, GPIO.OUT) # tell the Pi this pin is an output
while True:
# repeat indefinitely
x, y, z = mc.player.getPos()
for i in range(15):
# look at every block until block 15
if mc.getBlock(x, y - i, z) == 56:
GPIO.output(led_pin, True) # turn LED on
time.sleep(0.25) # wait
GPIO.output(led_pin, False) # turn LED off
time.sleep(0.25) # wait

जब प्लेयर के नीचे (१५ ब्लॉकों के भीतर) डायमंड अयस्क ब्लॉक होता है, तो लाइट फ्लैश होगी।

थिंक गीक माइनक्राफ्ट लाइट-अप ब्लू स्टोन डायमंड अयस्क - पिगमेन को दूर रखना सुनिश्चित करें अमेज़न पर अभी खरीदें

क्या आपने Minecraft Pi के साथ कुछ अच्छा बनाया है? मुझे टिप्पणियों में बताएं कि आपने खेलों में क्या बनाया या आपने इसे कितना दूर किया।

हमें उम्मीद है कि आपको हमारे द्वारा सुझाई गई और चर्चा की गई चीजें पसंद आएंगी! MUO में संबद्ध और प्रायोजित साझेदारियाँ हैं, इसलिए हमें आपकी कुछ खरीदारी से होने वाली आय का एक हिस्सा प्राप्त होता है। यह आपके द्वारा भुगतान की जाने वाली कीमत को प्रभावित नहीं करेगा और सर्वोत्तम उत्पाद अनुशंसाओं की पेशकश करने में हमारी सहायता करता है।

साझा करना साझा करना कलरव ईमेल क्या यह विंडोज 11 में अपग्रेड करने लायक है?

विंडोज़ को नया रूप दिया गया है। लेकिन क्या यह आपको विंडोज 10 से विंडोज 11 में शिफ्ट होने के लिए मनाने के लिए काफी है?

आगे पढ़िए
संबंधित विषय
  • DIY
  • प्रोग्रामिंग
  • Minecraft
  • रास्पबेरी पाई
  • इलेक्ट्रानिक्स
  • अजगर
लेखक के बारे में जो कोबर्न(136 लेख प्रकाशित)

जो ब्रिटेन के लिंकन विश्वविद्यालय से कंप्यूटर विज्ञान में स्नातक हैं। वह एक पेशेवर सॉफ्टवेयर डेवलपर है, और जब वह ड्रोन नहीं उड़ा रहा है या संगीत नहीं लिख रहा है, तो उसे अक्सर तस्वीरें लेते या वीडियो बनाते हुए पाया जा सकता है।

जो कोबर्न . की अन्य फ़िल्में-टीवी शो

हमारे न्यूज़लेटर की सदस्यता लें

तकनीकी युक्तियों, समीक्षाओं, निःशुल्क ई-पुस्तकों और अनन्य सौदों के लिए हमारे न्यूज़लेटर से जुड़ें!

सब्सक्राइब करने के लिए यहां क्लिक करें
श्रेणी Diy