মাইনক্রাফ্ট পাই সংস্করণের সাথে পাইথন এবং ইলেকট্রনিক্স শিখুন

মাইনক্রাফ্ট পাই সংস্করণের সাথে পাইথন এবং ইলেকট্রনিক্স শিখুন

আপনি কি সবসময় কোড শিখতে চেয়েছিলেন কিন্তু কোথায় শুরু করবেন তা জানেন না? পাইথন এবং কিছু সাধারণ ইলেকট্রনিক্স ব্যবহার করে রাস্পবেরি পাইতে কিভাবে মাইনক্রাফ্ট নিয়ন্ত্রণ করতে হয় তা শিখুন। এখানে শেষ ফলাফল:





এই প্রকল্পের জন্য আপনার একটি Pi 2 বা নতুন প্রয়োজন হবে, এবং যখন আপনি সিকিউর শেল (SSH) এর মাধ্যমে কমান্ড লাইনের মাধ্যমে এই কাজগুলির অধিকাংশই সম্পন্ন করতে পারবেন, এই টিউটোরিয়ালটি সরাসরি Pi- এ কোডিংয়ের উপর ফোকাস করবে।





Minecraft এ নতুন? চিন্তা করবেন না - এখানে আমাদের Minecraft শিক্ষানবিস গাইড





Minecraft Pi এর ভূমিকা

রাস্পবেরি পাই এর জন্য মাইনক্রাফ্ট শেখার এবং টিঙ্কার করার জন্য তৈরি করা হয়েছে (এবং এটি বিনামূল্যে)। এটি একটি অ্যাপ্লিকেশন প্রোগ্রামিং ইন্টারফেস (এপিআই) নিয়ে আসে যা কোডের জন্য সহজেই মাইনক্রাফ্টের সাথে কথা বলার উপায় প্রদান করে। পাইথনে কীভাবে কোড শিখতে হয়, সেইসাথে ইলেকট্রনিক্স দিয়ে শুরু করার জন্য এটি উজ্জ্বল।

পাইথন কি?

পাইথন একটি প্রোগ্রামিং ভাষা। এটাই ব্যাখ্যা করা হয়েছে , যার মানে যখন আপনি একটি পাইথন ফাইল বা প্রোগ্রাম চালান, কম্পিউটারকে প্রথমে ফাইলটিতে সামান্য কাজ করতে হবে। নেতিবাচক দিক হল সংকলিত ভাষার তুলনায় এটি ধীর বলে বিবেচিত হতে পারে [ভাঙ্গা ইউআরএল সরানো]।



ব্যাখ্যা করা ভাষার সুবিধা হল কোডিংয়ের গতি এবং তাদের বন্ধুত্ব। আপনার কম্পিউটারকে বলার দরকার নেই কি আপনি যে ডেটা সঞ্চয় করতে চান, শুধু তাই যে আপনি কিছু সঞ্চয় করতে চান এবং কম্পিউটার কি করবে তা বের করবে। ব্যতিক্রম আছে, অবশ্যই, এবং এটি কিছুটা সরলীকৃত দৃশ্য, তবে প্রোগ্রামিং মজাদার হওয়া উচিত! আপনি যদি জটিল প্রযুক্তিগত বিবরণ খনন শুরু করেন তবে এটি কিছুটা শ্রমসাধ্য হয়ে উঠতে পারে।

পাইথন কেস সংবেদনশীল। এটি জানা গুরুত্বপূর্ণ, কারণ পাইথন বস্তুগুলিকে চিনতে পারবে না এমনকি যদি তাদের বানান সঠিক হয় যদি মামলা ভুল হয় 'ডোসোমেথিং ()' কাজ করবে না যদি পদ্ধতিটি আসলে 'ডোসোমেথিং ()' বলা হয়। পাইথন ইন্ডেন্টেশন ব্যবহার করে । অন্যান্য প্রোগ্রামিং ল্যাঙ্গুয়েজ হয়তো আপনার কোডের কতগুলি ইন্ডেন্ট আছে তা পাত্তা দেয় না, যেখানে পাইথন করে যত্ন কোডগুলি কোথায় রয়েছে তা পাইথনকে বলতে ইন্ডেন্ট ব্যবহার করা হয়। অন্যান্য ভাষা গ্রুপ কোডে 'কার্লি ব্রেসেস' ({}) ব্যবহার করতে পারে - পাইথন এগুলি ব্যবহার করে না। পাইথন মন্তব্যের জন্য একটি হ্যাশ (#) ব্যবহার করে, এবং মন্তব্যগুলি অন্য ডেভেলপারদের বা কোডের দিকে তাকিয়ে থাকা লোকেদের একটি নির্দিষ্ট অংশ কী করে, বা কেন এটি প্রয়োজন তা বলতে ব্যবহৃত হয়। একটি হ্যাশের পরে পাইথন কিছু উপেক্ষা করে।





অবশেষে, পাইথনের দুটি প্রধান সংস্করণ রয়েছে - পাইথন 2.7.x এবং পাইথন 3.x। উভয়ের মধ্যে কিছু পার্থক্য রয়েছে ( পার্থক্য কি? )। এই টিউটোরিয়ালে পাইথন 3 ব্যবহার করা হবে।

প্রাথমিক সেটআপ

আপনার পাই প্রদান করা ইতিমধ্যে সেটআপ এবং রাস্পবিয়ান চলমান , প্রাথমিক সেটআপের প্রয়োজন নেই।





টার্মিনাল খুলুন ( মেনু> আনুষাঙ্গিক> টার্মিনাল ) এবং এই কমান্ডটি চালান। সংগ্রহস্থল তালিকা আপ টু ডেট রাখা সর্বদা ভাল অনুশীলন, এবং এটি সর্বশেষ প্রোগ্রামগুলির তালিকা ডাউনলোড করবে (এটি প্রোগ্রামগুলি নিজেরাই ডাউনলোড করবে না, এটি Pi কে কোন প্রোগ্রামগুলি বলা হয় এবং কোথায় খুঁজে পেতে হবে তা জানতে সাহায্য করে)।

sudo apt-get update

এখন পাই আপডেট করুন (এটি কিছু সময় নিতে পারে):

sudo apt-get upgrade

পাইথন এবং মাইনক্রাফ্ট পাই ইতিমধ্যেই ইনস্টল করা আছে, তবে যদি কোন কারণে মাইনক্রাফ্ট পাই ইনস্টল করা না থাকে তবে এটি ইনস্টল করা সহজ:

sudo apt-get install minecraft-pi

নথিতে নেভিগেট করুন এবং 'মাইনক্রাফ্ট' নামে একটি নতুন ফোল্ডার তৈরি করুন:

cd Documents/
mkdir Minecraft

আপনি এই নতুন ফোল্ডারের বিষয়বস্তু দেখতে পারেন:

ls

এখানে একটি টিপ - যদি আপনি টাইপ করা শুরু করেন এবং TAB কী টিপেন, কমান্ড লাইন আপনার জন্য বিবৃতিটি স্বয়ংক্রিয়ভাবে সম্পন্ন করার চেষ্টা করবে।

আপনি pwd ব্যবহার করে বর্তমান ডিরেক্টরিটির পথ পরীক্ষা করতে পারেন, যার অর্থ প্রিন্ট ওয়ার্কিং ডিরেক্টরি:

pwd

গিয়ে Minecraft শুরু করুন মেনু> গেম> মাইনক্রাফ্ট পাই । আপনি এই চলমান প্রয়োজন হবে, কিন্তু পরে এটি ফিরে আসবে।

থেকে পাইথন 3 খুলুন মেনু> প্রোগ্রামিং> পাইথন 3 (IDLE) । এই প্রোগ্রামটি আপনাকে পাইথন কমান্ড চালানোর এবং প্রোগ্রাম লেখার একটি উপায় প্রদান করে।

এখন আপনি এখানে আপনার পাইথন কমান্ড টাইপ করতে পারেন, কিন্তু এটি খুব ব্যবহারিক নয়। যাও ফাইল> নতুন ফাইল এবং তারপর ফাইল> সংরক্ষণ করুন এবং এটি আপনার আগে তৈরি করা ফোল্ডারে সংরক্ষণ করুন। ( নথি> Minecraft )। আসুন এটাকে ডাকি ' hello_world.py '। আপনাকে .py এক্সটেনশন ব্যবহার করতে হবে না, এটি স্বয়ংক্রিয়ভাবে যোগ হবে, কিন্তু এটি ভাল অভ্যাস।

যদি আপনি টার্মিনালে ফিরে যান এবং মাইনক্রাফ্ট ফোল্ডারে নেভিগেট করেন তবে আপনার তৈরি ফাইলটি দেখতে হবে:

cd Minecraft/
ls

আপনি এই ফাইলটি এভাবে চালাতে পারেন:

python hello_world

লক্ষ্য করুন কিভাবে 'পাইথন' সব লোয়ার-কেস। এটি ফাইলের নামের আগে হতে হবে, যেহেতু এটি Pi কে বলে যে নিম্নলিখিত ফাইলটি পাইথন, তাই এটিকে যেমন চালানো উচিত।

পাইথন সম্পাদকের কাছে ফিরে যান এবং টাইপ করুন:

print 'Hello, World!'

এই ফাইলটি সংরক্ষণ করুন এবং এটি আবার চালান - আপনার এখন 'হ্যালো, ওয়ার্ল্ড!' কমান্ড লাইনে হাজির - ঝরঝরে! প্রিন্ট কমান্ড কেবল পাইথনকে ডাবল কোটে নিচের লেখাটি আউটপুট করতে বলে। এটি ভাল, কিন্তু মাইনক্রাফ্টের জন্য ভয়ঙ্করভাবে দরকারী নয়, আসুন এটি লিঙ্ক করা যাক:

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

এখন যদি আপনি এই ফাইলটি সংরক্ষণ এবং চালান, তাহলে আপনার 'হ্যালো, ওয়ার্ল্ড!' মাইনক্রাফ্ট গেমটিতে উপস্থিত হয়। আসুন কোডটি ভাঙি:

from mcpi.minecraft import Minecraft

এই লাইনটি পাইথনকে বলে যে আপনি অন্য ফাইল থেকে কোড ব্যবহার করতে চান। এই mcpi.minecraft ফাইলটি মাইনক্রাফ্টের সহজ নিয়ন্ত্রণের জন্য তৈরি করা হয়েছিল।

mc = Minecraft.create()

এই লাইন 'mc' (Minecraft) নামে একটি বস্তু তৈরি করে। মাইনক্রাফ্ট গেমের সাথে যোগাযোগের জন্য আপনাকে এটি তৈরি করতে হবে - এটি কেবল ফাইল অন্তর্ভুক্ত করার জন্য যথেষ্ট নয়।

mc.postToChat('Hello, World!')

অবশেষে, এই লাইনটি মাইনক্রাফ্টকে চ্যাটে কিছু লেখা লিখতে বলে। 'হ্যালো, ওয়ার্ল্ড!' অন্য কিছু এবং দেখুন কি হয়, কিন্তু ডবল উদ্ধৃতি উভয় অন্তর্ভুক্ত মনে রাখবেন। যদি আপনার সফ্টওয়্যার সমস্যা হয়, তবে এটি কিছু সাধারণ পাইথন এবং মাইনক্রাফ্ট পাই ত্রুটি:

  • AttributeError - এটি একটি টাইপো, যেমন প্রিন্টের পরিবর্তে pint বা prnt
  • NameError: নাম 'Minecraft' সংজ্ঞায়িত করা হয়নি - আপনার প্রয়োজনীয় মডিউল আমদানি করতে ভুলবেন না
  • নাম ত্রুটি: 'সত্য' নামটি সংজ্ঞায়িত করা হয়নি - পাইথন কেস সংবেদনশীল, 'সত্য' তে পরিবর্তন করুন
  • socket.error: [Errno 111] সংযোগ প্রত্যাখ্যান - নিশ্চিত করুন যে Minecraft চলছে

প্রকল্প

এখন যেহেতু আপনি পাইথন এবং মাইনক্রাফ্টের মূল বিষয়গুলি জানেন, আসুন কিছু দুর্দান্ত প্রকল্প তৈরি করি। সমস্ত কোডকেন গিথুব থেকে ডাউনলোড করা যাবে।

স্বয়ংক্রিয় সেতু নির্মাতা

এই প্রোগ্রামটি কার্যকরভাবে পানির উপর একটি সেতু তৈরি করবে। যখন খেলোয়াড় জলের কাছাকাছি আসে, প্রোগ্রামটি বেশ কয়েকটি ব্লককে পাথরে রূপান্তরিত করবে। যেহেতু মাইনক্রাফ্ট একটি সমন্বয় ব্যবস্থা ব্যবহার করে, প্লেয়ারের চারপাশের ব্লকের ধরন সহ প্লেয়ারের অবস্থান পাওয়া খুব সহজ। Minecraft Pi সামান্য সীমিত, তাই প্রচুর পরিমাণে বিভিন্ন ব্লক আপডেট করা সম্ভব নয়। তবে আপনি সহজেই এই আচরণটি নিজেই কোড করতে পারেন।

একটি নতুন ফাইল তৈরি করুন ( ফাইল> নতুন ফাইল ) এবং এটি 'হিসাবে সংরক্ষণ করুন bridge_builder.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 এর মান ব্যবহার করা হত, স্ক্রিপ্টটি প্রায় হাঁটু স্তরে ব্লক খুঁজত - এটি খুব ভাল কাজ করবে না! Mc.getBlock () প্রদত্ত স্থানাঙ্কগুলির জন্য একটি ব্লকের আইডি প্রদান করে। যেহেতু x, y, এবং z প্লেয়ারের স্থানাঙ্ক, আপনি প্লেয়ারের চারপাশে অবস্থান পেতে তাদের থেকে যোগ বা বিয়োগ করতে পারেন। আপনাকে x, y, এবং z মান ব্যবহার করতে হবে না, আপনি যে কোন সংখ্যা ব্যবহার করতে পারেন, তবে আপনি জানেন না যে সেই বিশেষ ব্লকটি প্লেয়ারের সাথে কীভাবে সম্পর্কিত - প্লেয়ারের সাথে সম্পর্কিত মানগুলি ব্যবহার করা ভাল। কমান্ড লাইন থেকে এই ফাইলটি চালান এবং দেখুন কি হয়।

আপনার দেখা উচিত যে একবার খেলোয়াড় জলের শরীরে পৌঁছলে মাটির একটি ছোট অংশ পাথরে পরিণত হয়। এটি দুর্দান্ত নয় - আপনি একটি সমস্যা সৃষ্টির জন্য যথেষ্ট দ্রুত হাঁটতে সক্ষম। আপনি বৃহত্তর পরিমাণে জলকে ভূমিতে রূপান্তর করে এটি সমাধান করতে পারেন। Mc.setBlocks () পদ্ধতির চূড়ান্ত অংশ হল ব্লক আইডি। একটি হল পাথরের জন্য ব্লক আইডি। আপনি এটি কাঠ, ঘাস বা যেকোনো কিছুতে পরিবর্তন করতে পারেন। আপনি যদি চান, আপনি খুব সহজেই এটিকে একটি জটিল নকশায় রূপান্তর করতে পারেন - হয়তো একটি ঝুলন্ত সেতু!

সুপার মাইনিং বোতাম

এই উদাহরণটি খনির ছোট কাজ করবে। এটি একটি ফিজিক্যাল বাটন নিয়ে গঠিত, যেটি টিপলে 10 ব্লক কিউব হবে। বাটন দিয়ে শুরু করা যাক। আরডুইনোতে বোতামগুলির মতো, আপনার অল্প পরিমাণে ইলেকট্রনিক্সের প্রয়োজন হবে, যার সবগুলি একটি প্রাথমিক স্টার্টার কিটে পাওয়া উচিত:

  • 1 x ব্রেডবোর্ড
  • 1 x ক্ষণস্থায়ী সুইচ
  • 1 x 220 ওহম প্রতিরোধক
  • মহিলা> পুরুষ জাম্প ক্যাবল
  • পুরুষ> পুরুষ লাফ তারের

এখানে সার্কিট:

পাই-বোতাম-সংযোগ

এই প্রতিরোধককে 'পুল ডাউন' রোধকারী বলা হয়। এটি নিশ্চিত করতে সাহায্য করে যে পাই কী মনে করে বোতামটি চাপানো হচ্ছে, আসলেই বোতামটি চাপানো হচ্ছে। আপনাকে এটি ব্যবহার করতে হবে না, তবে এটি সুপারিশ করা হয়েছে, কারণ আপনি এটি ছাড়া প্রচুর শব্দ এবং মিথ্যা রিডিং খুঁজে পেতে পারেন।

বোতামটি সাধারণ উদ্দেশ্য ইনপুট আউটপুট (GPIO) পিন 14 এর সাথে সংযুক্ত। আপনি যেকোনো GPIO পিন ব্যবহার করতে পারেন, তবে এটি দেখুন পিনআউট প্রথমত, যেহেতু তারা সব পাই থেকে নিয়ন্ত্রণযোগ্য নয়, এবং মডেলের মধ্যে কিছুটা পরিবর্তিত হয়।

এখন যে বোতামটি সংযুক্ত, এটি পরীক্ষা করার সময়। একটি নতুন ফাইল তৈরি করুন এবং এটি 'হিসাবে সংরক্ষণ করুন button_test.py '। এই কোডটি যোগ করুন, এটি সংরক্ষণ করুন তারপর এটি টার্মিনালে চালান।

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- এ সংরক্ষণ করা হয়। দ্য setBlocks () পদ্ধতিটি মাইনক্রাফ্টকে নিম্নলিখিত ব্লকের সাথে শুরু এবং শেষের মধ্যে সমস্ত ব্লক পূরণ করতে বলে। শূন্য হল বায়ুর জন্য ব্লক-আইডি। আপনি এটিকে অন্য একটি ব্লক-আইডিতে পরিবর্তন করতে পারেন যাতে একটি এলাকা কঠিন হয়ে যায়। আপনি কোঅর্ডিনেটগুলি +100 বা এমনকি +1000 ব্লকেও পরিবর্তন করতে পারেন, তবে আপনি যদি খুব বেশি পাগল হয়ে যান তবে Pi সংগ্রাম শুরু করতে পারে। লক্ষ্য করুন কিভাবে y + 10 উভয় লাইনের জন্য একই। যদি আপনি ভূগর্ভস্থ ব্লকগুলি অপসারণ করতে চান তবে আপনি এটিকে y - 10 এ পরিবর্তন করতে পারেন।

টেলিপোর্টিং

এই বোতামের আরেকটি সহজ ব্যবহার হতে পারে 'টেলিপোর্ট'। মাইনক্রাফ্ট পাই এপিআই প্লেয়ারের অবস্থান নির্ধারণের একটি উপায় সরবরাহ করে। নিম্নলিখিত কোড প্লেয়ারকে একটি পূর্বনির্ধারিত স্থানে 'টেলিপোর্ট' করবে:

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

লক্ষ্য করুন যে তার পদ্ধতি তিনটি পরামিতি গ্রহণ করে; x, y, এবং z - তাই আপনি প্লেয়ারটিকে সেই স্থানে টেলিপোর্ট করার জন্য যেকোনো কিছুতে সেট করতে পারেন।

Super_mine ফাইলের একটি অনুলিপি তৈরি করুন ( ফাইল> কপি হিসাবে সংরক্ষণ করুন ) এবং নিচেরটির সাথে if প্রতিস্থাপন করে এটি সংশোধন করুন:

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 'এবং দৌড়।

আপনি এটি ব্যবহার করার সময় প্লেয়ার কিছু ব্লকের ভিতরে আটকে যেতে পারেন, সেক্ষেত্রে আপনাকে একটি পরিচিত খোলা জায়গায় স্থানাঙ্ক সমন্বয় করতে হবে (পর্দার উপরের বাম আপনার বর্তমান অবস্থান দেখায়)।

একটি ঘর তৈরি করুন

এই বোতামের জন্য একটি শেষ কাজ হল একটি ঘর তৈরি করা। উপরের কুইক-মাইনিং উদাহরণের মতো, এটি কেবল একটি ঘর তৈরির জন্য খেলোয়াড়ের চারপাশের ব্লকগুলি প্রতিস্থাপন করবে। বিভিন্ন উপকরণ (জানালা, দেয়াল ইত্যাদি) জন্য বিভিন্ন ব্লক-আইডি ব্যবহার করা হবে। জিনিসগুলিকে কোডে আরও সহজ করার জন্য, একটি কঠিন ব্লক তৈরি করা হবে এবং তারপরে ভিতর থেকে সরানো হবে (সেট ব্লক এয়ার), এটি একটি ফাঁপা শেল তৈরি করবে। আপনি একটি বিছানা বা দরজার মতো অতিরিক্ত যোগ করতে পারেন, তবে মাইনক্রাফ্ট পাই প্রকল্পটি কিছুটা অসম্পূর্ণ, এবং যখন এই বস্তুগুলি প্লেয়ার দ্বারা স্থাপন করা হয় তখন পাইথন ব্যবহার করার সময় তারা উজ্জ্বল নয়।

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 এবং এটি একটি রান দিন।

মাইনক্রাফ্ট চালানোর সময় পাই 2 এর কিছু পারফরম্যান্স সমস্যা রয়েছে। সেন্ট্রাল প্রসেসিং ইউনিট (CPU) ব্যবহারের গ্রাফ ( উপরের ডান কোণায় ) কোন ভারী লোড দেখায় না, তাই এটি অবশ্যই ডেভেলপারদের দ্বারা দুর্বল নকশা এবং অপ্টিমাইজেশনের উপর নির্ভর করে। এই সমস্যাগুলি চলমান কোডের সাথে সম্পর্কযুক্ত নয় (যেমন পাইথন চলমান না থাকলে তারা অব্যাহত থাকে), তবে তারা এই মিনি গেম দ্বারা আরও জটিল। যদি আপনার Pi সত্যিই সংগ্রাম করে থাকে আপনি হয়ত মাঠের আকার কমাতে বা আপনার Pi কে ওভারক্লক করতে চাইতে পারেন।

কিভাবে জিআইএফ ওয়ালপেপার উইন্ডোজ 10 তৈরি করবেন

ডায়মন্ড ডিটেক্টর

আরেকটি সার্কিট করা যাক। এটি একটি হালকা এমিটিং ডায়োড (LED) ব্যবহার করবে যখন নিচে হীরা থাকবে (15 টি ব্লকের মধ্যে)। আপনার যা প্রয়োজন তা এখানে:

  • 1 x ব্রেডবোর্ড
  • 1 x LED
  • 1 x 220 ওহম প্রতিরোধক
  • মহিলা> পুরুষ জাম্প ক্যাবল
  • পুরুষ> পুরুষ লাফ তারের

এখানে সার্কিট:

জিপিআইও পিন 14 এর সাথে অ্যানোড (লম্বা পা) সংযুক্ত করুন। এই পিন +5v এর মত কাজ করে। মাটিতে ক্যাথোড (ছোট পা) সংযুক্ত করুন।

আমি একটি সস্তা আকরিক খেলনা ব্যবহার করেছি এবং পিছনের কভার এবং ইলেকট্রনিক্স সরিয়ে এটিকে সংশোধন করেছি, তারপরে আমি এর নীচে একটি LED স্থাপন করেছি। আপনি সহজেই গরম আঠালো বা অনুরূপ কিছু দিয়ে এটি স্থায়ী করতে পারেন।

এই কোডটি 'হিসাবে সংরক্ষণ করুন 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

যখন প্লেয়ারের নীচে একটি হীরা আকরিক ব্লক থাকে (15 টি ব্লকের মধ্যে) আলো জ্বলবে।

থিংকগিক মাইনক্রাফ্ট লাইট -আপ ব্লু স্টোন ডায়মন্ড ওরে - শূকরকে দূরে রাখতে নিশ্চিত এখনই আমাজনে কিনুন

আপনি কি মাইনক্রাফ্ট পাই দিয়ে শীতল কিছু তৈরি করেছেন? আপনি কি করেছেন বা গেমগুলিতে আপনি কতটা করেছেন তা মন্তব্যগুলিতে আমাকে জানান।

আমরা আশা করি আপনি আমাদের প্রস্তাবিত আইটেমগুলি পছন্দ করবেন এবং আলোচনা করবেন! MUO এর অধিভুক্ত এবং পৃষ্ঠপোষক অংশীদারিত্ব রয়েছে, তাই আমরা আপনার কিছু ক্রয় থেকে রাজস্বের একটি অংশ গ্রহণ করি। এটি আপনার প্রদত্ত মূল্যকে প্রভাবিত করবে না এবং আমাদের সেরা পণ্যের সুপারিশ দিতে সাহায্য করবে।

শেয়ার করুন শেয়ার করুন টুইট ইমেইল এটি কি উইন্ডোজ 11 এ আপগ্রেড করার যোগ্য?

উইন্ডোজ নতুন করে ডিজাইন করা হয়েছে। কিন্তু এটি কি আপনাকে উইন্ডোজ 10 থেকে উইন্ডোজ 11 এ স্থানান্তরিত করার জন্য যথেষ্ট?

পরবর্তী পড়ুন
সম্পর্কিত বিষয়
  • DIY
  • প্রোগ্রামিং
  • মাইনক্রাফ্ট
  • রাস্পবেরি পাই
  • ইলেকট্রনিক্স
  • পাইথন
লেখক সম্পর্কে জো কোবার্ন(136 নিবন্ধ প্রকাশিত)

জো যুক্তরাজ্যের লিংকন বিশ্ববিদ্যালয় থেকে কম্পিউটার বিজ্ঞানে স্নাতক। তিনি একজন পেশাদার সফটওয়্যার ডেভেলপার, এবং যখন তিনি ড্রোন উড়াচ্ছেন না বা সঙ্গীত লিখছেন না, তখন তাকে প্রায়ই ফটো তুলতে বা ভিডিও তৈরি করতে দেখা যায়।

জো কোবার্ন থেকে আরো

আমাদের নিউজলেটার সদস্যতা

প্রযুক্তি টিপস, রিভিউ, ফ্রি ইবুক এবং এক্সক্লুসিভ ডিলের জন্য আমাদের নিউজলেটারে যোগ দিন!

সাবস্ক্রাইব করতে এখানে ক্লিক করুন
বিভাগ Diy