সুচিপত্র:

একটি শারীরিক খেলা নিয়ামক তৈরি করা হচ্ছে: 10 টি ধাপ (ছবি সহ)
একটি শারীরিক খেলা নিয়ামক তৈরি করা হচ্ছে: 10 টি ধাপ (ছবি সহ)

ভিডিও: একটি শারীরিক খেলা নিয়ামক তৈরি করা হচ্ছে: 10 টি ধাপ (ছবি সহ)

ভিডিও: একটি শারীরিক খেলা নিয়ামক তৈরি করা হচ্ছে: 10 টি ধাপ (ছবি সহ)
ভিডিও: মেয়েদের আর্মি মেডিক্যাল চেকআপ এত নোংরা ভাবে করা হয়। Female Army Medical Test Bangla।#army 2024, নভেম্বর
Anonim
একটি ফিজিক্যাল গেম কন্ট্রোলার তৈরি করা
একটি ফিজিক্যাল গেম কন্ট্রোলার তৈরি করা
একটি ফিজিক্যাল গেম কন্ট্রোলার তৈরি করা
একটি ফিজিক্যাল গেম কন্ট্রোলার তৈরি করা

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

এই নির্দেশযোগ্য দেখায় যে আমি কিভাবে 'স্পেস বাউন্স' গেমটি খাপ খাইয়েছি (https://marquisdegeek.com/spacebounce/ এ https://github.com/MarquisdeGeek/SpaceBounce- এ উৎস সহ) একটি শারীরিক নিয়ামক ব্যবহার করতে।

সরবরাহ

  • আরডুইনো
  • দুটি চাপ ম্যাট (আমার ম্যাপলিন থেকে ছিল
  • চাপের মাদুরের জন্য দুটি প্রতিরোধক (100 কে, কিন্তু বেশিরভাগই ঠিক আছে)
  • দুটি LEDs (alচ্ছিক)
  • এলইডির জন্য দুটি প্রতিরোধক (100 কে, কিন্তু বেশিরভাগই ঠিক আছে। এছাড়াও alচ্ছিক)
  • ল্যাপটপ

ধাপ 1: প্রায় লাফ

প্রায় তিড়িং লাফ!
প্রায় তিড়িং লাফ!

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

ধাপ 2: প্যাড সংযুক্ত করা

প্যাড সংযুক্ত করা হচ্ছে
প্যাড সংযুক্ত করা হচ্ছে
প্যাড সংযুক্ত করা হচ্ছে
প্যাড সংযুক্ত করা হচ্ছে

তাই আমি দুটি ম্যাট কিনলাম, এবং কাজে লেগে গেলাম। এখানে দেখানো প্রেসার ম্যাটগুলি সবচেয়ে সহজ (এবং সবচেয়ে সস্তা!) আমি, 10 টিতে পেয়েছি। তাদের চারটি তার রয়েছে, যার মধ্যে দুটি একটি সাধারণ সুইচের মতো কাজ করে: যখন আপনি মাদুরে দাঁড়ান, একটি সংযোগ তৈরি হয় এবং যখন আপনি লাফ দেন তখন এটি ভেঙে যায়। আমি এই মৌলিক সার্কিট দিয়ে একটি Arduino মধ্যে খাওয়ানো।

ধাপ 3: হালকা চমত্কার ট্রিপিং

ট্রিপিং দ্য লাইট ফ্যান্টাস্টিক
ট্রিপিং দ্য লাইট ফ্যান্টাস্টিক

এটি কাজ করেছে, কিন্তু খুব অনুপ্রেরণামূলক ছিল না। সুতরাং, আমি প্রতিটি চাপ মাদুরের অবস্থা নির্দেশ করার জন্য কিছু LEDs যোগ করেছি।

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

ধাপ 4: কোড শুরু

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

প্রথমে, আপনার আরডুইনোতে স্ট্যান্ডার্ড ফিরমাটা ইনস্টল করুন যাতে আমরা পিসিতে একটি নোড সার্ভার চালাতে পারি এবং জন্ডি ফাইভ লাইব্রেরি ব্যবহার করে আরডুইনো থেকে রাষ্ট্রীয় পরিবর্তনগুলি শুনতে পারি। তারপরে গেমের সামগ্রী পরিবেশন করতে এক্সপ্রেস যুক্ত করুন।

সম্পূর্ণ সার্ভার কোড এই মত দেখাচ্ছে:

const এক্সপ্রেস = প্রয়োজন ('এক্সপ্রেস');

const app = express (); const http = প্রয়োজন ('http'); const সার্ভার = http.createServer (app); const io = প্রয়োজন ('socket.io')। শুনুন (সার্ভার); const arduino = প্রয়োজন ('arduino-controller'); server.listen (3000, function () {console.log ('এক্সপ্রেস সার্ভার শোনা …');}); app.use ('/', express.static ('app')); const পাঁচ = প্রয়োজন ("জনি-ফাইভ"); const বোর্ড = নতুন পাঁচ। বোর্ড ({repl: false}); বোর্ড।. Pin (3); err, val) => {if (val) {green.on ();} else {green.off ();} if (val! == lastLeft) {lastLeft = val; let state = {side: 'left', রাজ্য: ভাল?, (err, val) => {if (val) {red.on ();} else {red.off ();} // if (val! == lastRight) {lastRight = val; let state = {side: 'right', state: val? 'down': 'up'} socket.emit ('arduino:: state', JSON.stringify (state), {for: 'everyone'});}})}); });

এবং এর সাথে চালানো হয়:

নোড server.js

ধাপ 5: খেলা মানিয়ে নেওয়া

প্রথম সমস্যা ছিল ইন্টারফেস; যখন আপনি যা করতে পারেন তা হ'ল প্লে বাটনে আপনি কীভাবে 'ক্লিক' করেন? আমি অন্যান্য সমস্ত বোতামগুলি বাদ দিয়ে এটি সমাধান করেছি! খেলোয়াড় যখনই লাফ দেয়, তখন আমি 'আপ' ইভেন্টের কথা শুনে বাকি বোতামটি ট্রিগার করতে পারি।

সকেট = io (); socket.on ('arduino:: state', function (msg) {let data = JSON.parse (msg); if (data.state === 'up') {// we jumping!}});

এখান থেকে আমি গেমটিতে toুকতে পেরেছিলাম, এবং প্যাডগুলি আরও মজার জন্য ব্যবহার করতে পেরেছিলাম - গেমটি নিজেই।

ধাপ 6: প্লেয়ার জাম্প কোড পরিবর্তন করা

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

সকেট = io ();

socket.on ('arduino:: state', function (msg) {

let data = JSON.parse (msg); যদি (data.side === 'left' && data.state === 'up') {// আমরা বাম দিক থেকে লাফ দিচ্ছি}});

ধাপ 7: আউটপুট পরিবর্তন

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

দুর্ভাগ্যক্রমে, সমস্ত গ্রাফিকাল সম্পদ বড় করা একটি খুব সময় সাপেক্ষ কাজ। তাই, আমি প্রতারণা করেছি! যেহেতু গেমটি মাউস ক্লিকের X, Y অবস্থান বা স্পর্শ ইভেন্ট বোঝার দরকার নেই, তাই আমি পুরো ক্যানভাসকে সহজভাবে পুনরায় স্কেল করতে পারি!

এটি CSS এবং জাভাস্ক্রিপ্ট উভয় ক্ষেত্রেই একটি হ্যাক জড়িত যাতে বিদ্যমান HTML5 ক্যানভাস বস্তুটি পূর্ণ-স্ক্রিনে চলে।

তদুপরি, গেমটি পোর্ট্রেট মোডে খেলা হয় যার অর্থ ক্যানভাসকে 90 ডিগ্রি ঘোরানোর জন্য আমাদের প্রয়োজনীয় স্ক্রিন রিয়েল এস্টেটের সর্বোচ্চ ব্যবহার করা।

#SGXCanvas {

অবস্থান: পরম; z- সূচক: 0; রূপান্তর: ঘোরান (-90 ডিগ্রি); রূপান্তর-মূল: উপরের ডানদিকে; প্রস্থ: স্বয়ংক্রিয়; }

ধাপ 8: এটি কাজ করে

এটা কাজ করে!
এটা কাজ করে!

আমার প্রথম গেমের জন্য আমি আমার ল্যাপটপটি তার পাশে কাত করেছি, এবং এইভাবে খেলেছি।

ধাপ 9: রুম প্রস্তুত করা

রুম প্রস্তুত করা হচ্ছে
রুম প্রস্তুত করা হচ্ছে

একটি শারীরিক নিয়ামক তৈরি করা কেবল যাত্রার শুরু, শেষ নয়। বাকি শারীরিক স্থান বিবেচনা করা প্রয়োজন।

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

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

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

ধাপ 10: এটি সম্পূর্ণ

এবং সেখানে আপনি এটা আছে। একটি সহজ দিনের প্রকল্প যা মূল গেমটিকে উন্নত করে এবং এটি খেলার সময় আপনাকে ফিট রাখে!

আপনি একটি Makey Makey ব্যবহার করতে পারেন যা মূল গেমটিতে ব্যবহৃত কী প্রেসগুলিকে সরাসরি সিমুলেট করে, যাতে এই কাজের কিছুটা কমানো যায়। তবে এটি পাঠকের জন্য একটি অনুশীলন হিসাবে রেখে দেওয়া হয়েছে:)

সমস্ত কোড স্পেস বাউন্স রেপোর একটি বিশেষ শাখায় রয়েছে:

প্রস্তাবিত: