সুচিপত্র:

Arduino - পিয়ানো টাইলস: 16 টি ধাপ (ছবি সহ)
Arduino - পিয়ানো টাইলস: 16 টি ধাপ (ছবি সহ)

ভিডিও: Arduino - পিয়ানো টাইলস: 16 টি ধাপ (ছবি সহ)

ভিডিও: Arduino - পিয়ানো টাইলস: 16 টি ধাপ (ছবি সহ)
ভিডিও: Обрешетка. Полимерная обрешетка под сайдинг - виды и преимущества. Часть 1 2024, জুলাই
Anonim
Arduino - পিয়ানো টাইলস
Arduino - পিয়ানো টাইলস

হ্যালো ইন্টারনেটের লোকেরা, এটি একটি arduino uno r3 এ একটি মোবাইল গেমকে নিশ্চিতভাবে কী করে না তা কীভাবে তৈরি করা যায় সে সম্পর্কে হবে।

তাই শুরু করার জন্য, আপনার সমস্ত অংশের প্রয়োজন হবে, যা নিম্নরূপ! 1x Arduino Uno r3 ($ 42)

2x এলসিডি কীপ্যাড শিল্ড (প্রতিটি $ 19)

5x বোতাম

5x 220Ω প্রতিরোধক

28x তারের

ঠিক আছে, একবার আপনি সমস্ত অংশ পেয়ে গেলে শুরু করার সময়!

ধাপ 1: তারের

তারের
তারের
তারের
তারের
তারের
তারের

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

ধাপ 2: ঘোষণা বিবৃতি

এখানে সমস্ত কোড আপনার অকার্যকর সেটআপ এবং অকার্যকর লুপের আগে যেতে হবে, কারণ এই সমস্ত ভেরিয়েবল এবং অবজেক্টগুলি আমরা সেট আপ করা বেশ কয়েকটি ফাংশনে ব্যবহৃত হয়।

লাগিয়ে শুরু করুন:

#অন্তর্ভুক্ত

আপনার কোডের শীর্ষে, এটি arduino কে "LiquidCrystal.h" লাইব্রেরি এবং এর একটি অংশ যা ফাংশন ব্যবহার করতে বলছে।

পরবর্তী ধাপ হল এই পিনগুলিকে সংজ্ঞায়িত করা যা আমরা আমাদের বোতামের জন্য ব্যবহার করছি এই কোডটি আমাদের #অন্তর্ভুক্ত নীচে রেখে:

#ডিফাইন বিটিএন এন্টার এ 0 #বিটিএন 1 15 ডিফাইন করুন

আমরা কোড পড়ার জন্য সহজ করতে, অথবা প্রয়োজনে পরিবর্তন করতে btnEnter এবং btn1 থেকে btn 4 শব্দগুলি সংজ্ঞায়িত করি। এর মানে হল যে যখন আমরা btn1 টাইপ করি তখন arduino জানবে আমরা আসলে 15 বাটন মানে এগুলি বিশেষত এনালগ ইনপুটগুলির জন্য ব্যবহৃত পোর্ট, যদিও আমরা সেগুলি শুধুমাত্র ডিজিটাল ইনপুটগুলির জন্য ব্যবহার করছি।

পরবর্তী আমরা এমন বস্তু তৈরি করতে যাচ্ছি যা তরল স্ফটিক প্রদর্শন নিয়ন্ত্রণ করবে। এটি করার জন্য এই কোডটি আমাদের সংজ্ঞার নিচে রাখুন

LiquidCrystal lcdLeft (8, 9, 12, 10, 11, 13); LiquidCrystal lcdRight (2, 3, 4, 5, 6, 7);

এটি কি করে আরডুইনোকে বলে যে যখন আমরা lcdLeft বা lcdRight কল করি তখন আমরা একটি LiquidCrystal অবজেক্টের কথা বলছি। সংযুক্ত বন্ধনীগুলির সংখ্যাগুলি Arduino কে বলে যে বস্তুটি LCD- এ বার্তা পাঠানোর জন্য ব্যবহার করা উচিত যখন আমরা তাদের ফাংশন ব্যবহার করি।

এখন আমাদের বস্তুর ঘোষণার নিচে কোডের পরবর্তী বিট রেখে ভেরিয়েবল ঘোষণা করতে হবে:

// এই ভেরিয়েবলগুলি এমন বিকল্প যা আপনি পরিবর্তন করতে পারেন - উচ্চতর সংখ্যা = দ্রুতগতির গতি বৃদ্ধি intGameSpeedEasy = 10; int intGameSpeedMedium = 25; int intGameSpeedHard = 80;

// gameboolean bolPlay এর জন্য ভেরিয়েবল সেট আপ করুন; // প্লেয়ার int intScore হলে ট্র্যাক; // খেলোয়াড়ের স্কোর int intiff ট্র্যাক করে; // গেমটি কি অসুবিধা তা বলার জন্য শুধু একটি এস্টেটিক জিনিস // ইনপুট intEnter এর জন্য ভেরিয়েবল সেট আপ করুন; // ব্যবহারকারী যদি প্রবেশ বোতামটি intInput চাপেন তবে ট্র্যাক করে; // ব্যবহারকারীরা বুলিয়ান bolTilePressed টিপুন কোন বোতাম; // নিশ্চিত করুন যে প্লেয়ারটি দুর্ঘটনাক্রমে একটি বোতাম 5x টিপুন না এবং // int intTick চালু করার জন্য ভেরিয়েবল সেট আপ করুন; // intDelay int intDelay পর্যন্ত মিলি (প্রতি লুপ) গণনা করে; // সময় মিলিস intGameSpeed পরবর্তী মোড় পর্যন্ত প্রোগ্রাম অপেক্ষা করে; // ডিবাগ অপশন বুলিয়ান bolSerialBoard abit; // যখন সত্য সিরিয়াল মনিটরে বোর্ড মুদ্রণ করবে

আমরা ডাটা টাইপ এবং তারপর ভেরিয়েবলের নাম উল্লেখ করে একটি পরিবর্তনশীল ঘোষণা করি, যেমন। int thisIsAnInteger

বুলিয়ান ভেরিয়েবল, যেমন bolSerialBoard এবং bolPlay- এর মধ্যে দুটি মান হতে পারে, সত্য বা মিথ্যা।

ইন্টিজার ভেরিয়েবল (int) যেমন intScore এবং intInput পুরো সংখ্যাগুলিকে মান হিসাবে নিতে পারে, যেমন 1, 5 বা 100।

কিছু অন্যান্য উল্লেখযোগ্য ডেটা প্রকার যা আমরা এখানে ব্যবহার করছি না তা হল একটি স্ট্রিং, যা পাঠ্যের একটি অংশ এবং একটি ফ্লোট, যা একটি দশমিক সংখ্যা।

এখানে প্রতিটি ভেরিয়েবল প্রোগ্রাম দ্বারা বিভিন্ন জায়গায় ব্যবহার করা হয়, এখানে প্রত্যেকটি কি করে তার একটি সারমর্ম

মেনু প্রদর্শন করা উচিত বা প্রকৃত খেলা চলতে হবে কিনা তা বলপ্লে প্রোগ্রামকে বলে।

intScore খেলোয়াড়দের স্কোর ট্র্যাক করে যখন তারা টাইলস আঘাত করে, intDiff প্রধান মেনুতে ব্যবহার করা হয় LCD- এ কোন প্রিন্ট প্রিন্ট করতে হবে তা প্রোগ্রামকে জানাতে, প্রোগ্রামটি বলার জন্য intEnter ব্যবহার করা হয় যদি এন্টার বাটন (সবচেয়ে দূরে বাম) টিপে থাকে, intInput ব্যবহার করা হয় প্রোগ্রামটিকে বলার জন্য যে অন্য 4 টি বোতাম টিপে আছে।

bolTilePressed ব্যবহার করে নিশ্চিত করা হয় যে প্রোগ্রামটি কেবল তখনই পড়ে যখন বোতাম টিপে থাকে এবং যখন এটি রাখা হয় না।

intGameSpeed, intGameSpeedEasy, intGameSpeedMedium এবং intGameSpeedHard ব্যবহার করা হয় কতটা দ্রুত গতিতে গতি বাড়ানো উচিত তা নির্ভর করে কোন অসুবিধা নির্বাচন করা হয়।

intTick এবং intDelay ব্যবহার করা হয় যাতে প্রোগ্রামটি যতবার লুপ হয় ততবার বোর্ডটি সরানো থেকে বিরত থাকে।

bolSerialBoard ব্যবহার করা হয় যাতে আপনি পরীক্ষার উদ্দেশ্যে arduino এর সিরিয়াল মনিটরে বোর্ড পাঠাতে পারেন।

অবশেষে এই কোডটি ব্যবহার করে আমাদের বোর্ডকে একটি অ্যারে হিসাবে ঘোষণা করার সময় এসেছে:

// গেম অ্যারেইন্ট arrGame সেট আপ করুন [16] [4] = {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}};

একটি অ্যারে হল একটি ম্যাট্রিক্স যা যে কোন বিন্দুতে গণিতের জন্য বলা যেতে পারে বা পরিবর্তন করা যেতে পারে।

আপনার কোড এখন এই মত কিছু দেখতে হবে;

// লাইব্রেরি অন্তর্ভুক্ত#অন্তর্ভুক্ত

// এই ভেরিয়েবলগুলি এমন বিকল্প যা আপনি পরিবর্তন করতে পারেন - উচ্চ সংখ্যা = দ্রুত খেলা গতি

int intGameSpeedEasy = 10; int intGameSpeedMedium = 25; int intGameSpeedHard = 80;

// পিন সংজ্ঞায়িত করুন

#ডিফাইন বিটিএন এন্টার এ 0 #ডিফাইন বিটিএন 15 15

// LCD বস্তু তৈরি করুন (n, ~, n,,, ~, n)

LiquidCrystal lcdLeft (8, 9, 12, 10, 11, 13); LiquidCrystal lcdRight (2, 3, 4, 5, 6, 7);

// গেম অ্যারে সেট আপ করুন

int arrGame [16] [4] = {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}};

// গেমের জন্য ভেরিয়েবল সেট আপ করুন

বুলিয়ান বলপ্লে; // প্লেয়ার int intScore হলে ট্র্যাক; // খেলোয়াড়ের স্কোর int intDiff ট্র্যাক করে; // গেমটি কী অসুবিধা তা বলার জন্য কেবল একটি স্ট্যাটিক জিনিস

// ইনপুটের জন্য ভেরিয়েবল সেট আপ করুন

int intEnter; // ব্যবহারকারী যদি প্রবেশ বোতামটি intInput চাপেন তবে ট্র্যাক করে; // ব্যবহারকারীরা কোন বোতামগুলি বুলিয়ান বোল্টাইলপ্রেস চাপায় তা ট্র্যাক করে; // নিশ্চিত করুন যে প্লেয়ারটি দুর্ঘটনাক্রমে একটি বোতাম 5x টিপুন না এবং হারান

// টার্নের জন্য ভেরিয়েবল সেট আপ করুন

int intTick; // intDelay int intDelay পর্যন্ত মিলি (প্রতি লুপ) গণনা করে; // সময় মিলিস intGameSpeed পরবর্তী মোড় পর্যন্ত প্রোগ্রাম অপেক্ষা;

// ডিবাগ বিকল্পের abit

বুলিয়ান বল সিরিয়ালবোর্ড; // যখন সত্য সিরিয়াল মনিটরে বোর্ড মুদ্রণ করবে

ধাপ 3: সেটআপ ফাংশন

সেটআপ লুপ হল একটি ফাংশন যা আরডুইনো শুধুমাত্র একবার শুরু করে যখন এটি শুরু হয়।

সেটআপ লুপে আমরা কেবল আমাদের কয়েকটি ভেরিয়েবলের মান নির্ধারণ করছি কারণ তাদের ঘোষণা করার সময় তাদের মান নির্ধারণ করার পরিবর্তে আমরা এখানে এটি করছি।

এই কোডটি আপনার অকার্যকর সেটআপের মধ্যে দিয়ে শুরু করুন।

বলপ্লে = মিথ্যা; intScore = 0; intTick = 0; intDelay = 1000; intDiff = 1; intGameSpeed = intGameSpeedMedium;

প্রতিটি লাইন শুধু একটি ভেরিয়েবলকে একটি মান নির্ধারণ করছে।

বলপ্লে মিথ্যাতে সেট করা হয়েছে যাতে গেমটি খেলা শুরু না হয়।

intScore 0 তে সেট করা আছে, কারণ স্বাভাবিকভাবেই আপনার স্কোর 0 থেকে শুরু হয়।

intTick 0 এ শুরু হয় কারণ প্রোগ্রামটি বর্তমানে কিছু গণনা করছে না।

intDelay 1000 এ সেট করা হয়েছে কারণ টাইলগুলি যে হারে শুরু হয়।

intDiff শুধু একটি তপস্বী জিনিস যাতে প্রোগ্রাম জানে যে গেমের অসুবিধার জন্য কি লিখতে হবে।

intGameSpeed যাই হোক না কেন intGameSpeedMedium সেট করা আছে, মানে এটি মাঝারি অসুবিধায় সেট করা আছে।

পরবর্তীতে এই কোডটি Void Setup এ আপনার দেওয়া কোডের নিচে রাখুন।

lcdLeft.begin (16, 2); lcdRight.begin (16, 2);

Serial.begin (9600);

এটি সিরিয়াল মনিটরের মাধ্যমে কম্পিউটারের সাথে যোগাযোগ শুরু করতে বলে

আপনার অকার্যকর সেটআপটি এখন এইরকম কিছু হওয়া উচিত!

অকার্যকর সেটআপ () {Serial.begin (9600); // সিরিয়াল মনিটর শুরু করুন // ভেরিয়েবল সেট আপ করুন bolPlay = false; intScore = 0; intTick = 0; intDelay = 1000; intDiff = 1; intGameSpeed = intGameSpeedMedium; // শুরু lcd এর lcdLeft.begin (16, 2); lcdRight.begin (16, 2); }

ধাপ 4: লুপ ফাংশন

লুপ ফাংশনটি arduino দ্বারা arduino এর প্রতিটি পুনরাবৃত্তি দ্বারা পরিচালিত হয়।

নিচের কোডটি আপনার ভয়েড লুপে কপি করুন।

অকার্যকর লুপ () {ইনপুট (); // ইনপুট খেলার জন্য পরীক্ষা করুন যদি write ); // মুদ্রণ বোর্ড বোঝায় // writeSerial (); // যদি অপশন চালু থাকে তাহলে বোর্ডকে সিরিয়াল বাটনগেম () এ লিখুন; // প্লেয়ার ইনপুট প্লেবোর্ড () জন্য চেক করুন; // বোর্ড সরান এবং একটি নতুন টাইল clearLcd () যোগ করুন; // ড্রবোর্ড () আঁকার আগে এলসিডি পরিষ্কার করুন; // এলসিডির নীচে বোর্ড আঁকুন (); intTick = 0; // রিসেট intTick} অন্য {buttonsGame (); // প্লেয়ার ইনপুট clearLcd () জন্য চেক করুন; // ড্রবোর্ড আঁকার আগে LCD গুলি পরিষ্কার করুন (); // এলসিডির intTick = intTick + intGameSpeed- এ বোর্ড আঁকুন; // টিকে যোগ করুন}} অন্য {clearLcd (); // শিরোনাম আঁকার আগে LCD গুলি পরিষ্কার করুন (); // প্রদর্শন শিরোনাম এবং স্কোর তথ্য বোতাম মেনু (); // প্লেয়ার ইনপুট ক্লিয়ারবোর্ড () পড়ুন; // পুরো বোর্ড নিশ্চিত করুন = 0} বিলম্ব (10); // অল্প সময়ের জন্য আরডুইনো বিলম্ব করুন}

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

এই কোডের অধিকাংশই ফাংশন ব্যবহার করে যা আমরা এখনো করতে পারিনি, এবং আমরা সেগুলো পরবর্তী ধাপে তৈরি করব। এই ফাংশনগুলির উদ্দেশ্য নিম্নরূপ।

ব্যবহারকারী কোন বোতাম টিপেছেন তা ইনপুট পড়ে।

বাটন গেম গেমের সময় বোতামগুলি কী করে তা নিয়ন্ত্রণ করে, এবং মেনুতে নয়

প্লেবোর্ড বোর্ডে একটি নতুন টাইল যুক্ত করে, এবং তারপর বোর্ডের সবকিছুকে এক জায়গার নিচে সরিয়ে দেয়

ক্লিয়ার এলসিডি এলসিডিগুলিকে পরিষ্কার করে যাতে টাইলসের পিছনে কোনও ভূত না থাকে

drawBoard arrGame এর মধ্য দিয়ে যায় এবং LCD গুলিতে প্রিন্ট করে

clearBoard গেমটি না খেলার সময় পুরো ARGame পরিষ্কার করে

নীচে চেক একটি ব্যর্থতার অবস্থার জন্য arrGame এর নীচে পরীক্ষা করে

শিরোনাম খেলার শিরোনাম এবং স্কোর তথ্য প্রদর্শন করে যখন মেনুতে থাকে

বাটন মেনু মেনুতে ব্যবহারকারীর ইনপুট কি করে তা নিয়ন্ত্রণ করে।

গেমওভার আরেকটি ফাংশন, যদিও এখানে বলা হয় না কারণ এটি পরিবর্তে নীচে চেক এবং বোতাম গেম ফাংশনে বলা হয়।

ধাপ 5: ক্লিয়ার এলসিডি ফাংশন

একটি ফাংশন তৈরি করতে আমরা কোডে এটি যোগ করে শুরু করি

void functionName () {

}

"functionName" কিছু হতে পারে, যতক্ষণ না এটি ইতিমধ্যে বিদ্যমান।

আপনার প্রোগ্রামে এই কোডটি অনুলিপি করুন:

void clearLcd () {for (int i = 0; i <= 15; i ++) {for (int ii = 0; ii <= 1; ii ++) {lcdLeft.setCursor (i, ii); lcdLeft.write (""); lcdRight.setCursor (i, ii); lcdRight.write (""); }}}

এটি এলসিডি -তে প্রতিটি বিন্দু দিয়ে যেতে এবং একটি স্থান লিখতে 2 টি গণনা করা লুপ ব্যবহার করে পুরো অ্যারের মধ্য দিয়ে চলে।

কিছুতেই রিসেট না করে LCD এর পূর্বে যা লেখা হয়েছিল তা বজায় রাখবে

ধাপ 6: ড্রবোর্ড ফাংশন

আপনার প্রোগ্রামে এই কোডটি অনুলিপি করুন

void drawBoard () {for (int i = 1; i <= 15; i ++) {// বাম এলসিডি তে কলম 1 এবং 2 আঁকুন // যদি টাইল = 0 কিছু না লিখে, = 1 লিখুন "#", = 2 লিখুন "@" lcdLeft.setCursor (i, 1); // প্রথম পতন (দূরতম বাম) এ সেট করুন যদি (arrGame [0] == 1) {lcdLeft.write ("#");} if (arrGame [0] == 2) {lcdLeft.write ("@");} lcdLeft.setCursor (i, 0); // দ্বিতীয় পতন (মধ্য বাম) এ সেট করুন যদি (arrGame [1] == 1) {lcdLeft.write ("#");} if (arrGame [1] == 2) {lcdLeft.write ("@");} lcdRight.setCursor (i, 1); // তৃতীয় সংঘাতে সেট করুন (মাঝখানে ডানদিকে) যদি (arrGame [2] == 1) {lcdRight.write ("#");} if (arrGame [2] == 2) {lcdRight.write ("@");} lcdRight.setCursor (i, 0); // চতুর্থ সংঘর্ষে সেট করা (দূরতম ডানদিকে) যদি (arrGame [3] == 1) {lcdRight.write ("#");} if (arrGame [3] == 2) {lcdRight.write ("@");}}}

এটি বোর্ডের প্রতিটি সারির মধ্য দিয়ে যাওয়ার জন্য একটি লুপ ব্যবহার করে, তারপর সারিটির কোন কলাম 1 বা 2 এর সমান কিনা তা পরীক্ষা করে, তার উপর ভিত্তি করে এটি LCD- এ একটি হ্যাশট্যাগ প্রিন্ট করে, এখনও একটি টাইল আঘাত, বা একটি হিট টাইল জন্য একটি।

ধাপ 7: প্লেবোর্ড ফাংশন

আপনার প্রোগ্রামে এই কোডটি অনুলিপি করুন।

void playBoard () {for (int i = 0; i <= 3; i ++) {arrGame [0] = 0;} // উপরের সারি arrGame [0] [এলোমেলো (0, 4)] = সাফ করুন 1; // উপরের সারিতে একটি এলোমেলো বিন্দু সেট করুন (int i = 15; i> = 1; i-) {// বোর্ডের নিচ থেকে উপরের দিকে (int ii = 0; ii <= 3; ii ++) {// প্রতিটি কলমের জন্য arrGame [ii] = arrGame [i - 1] [ii]; }}}

এই কোডটি পুরো উপরের সারিকে 0, অথবা কোন টাইল সাফ করে শুরু হয়, এবং তারপর একটি র্যান্ডম টাইলকে 1, এবং আনহিট টাইল সেট করে।

এটি তারপর 15 থেকে 1 পর্যন্ত বিপরীতে একটি গণনা করা লুপের মধ্য দিয়ে যায়, সারিটিকে তার উপরের সারির সমান করে সেট করে, বোর্ডটি LCD এর নিচে চলে যায়

ধাপ 8: ক্লিয়ারবোর্ড ফাংশন

আপনার প্রোগ্রামে এই কোডটি অনুলিপি করুন।

অকার্যকর clearBoard () {// রিসেট টিক এবং বিলম্বের মান intTick = 0; intDelay = 1000; // বোর্ডের মধ্য দিয়ে যান এবং সবকিছুকে 0 তে সেট করুন (int i = 0; i <= 15; i ++) {for (int ii = 0; ii <= 3; ii ++) {arrGame [ii] = 0; }}}

অ্যারের মধ্য দিয়ে যাওয়ার জন্য গণনা করা লুপগুলি ব্যবহার করে পুরো অ্যারগেম 0 এ সেট করা আছে কিনা তা নিশ্চিত করার জন্য এই গেমটি চালানো হয় না, অথবা কোন টাইলস নেই।

কোডটি intDelay এবং intTick এর মানগুলিও পুনরায় সেট করে।

ধাপ 9: শিরোনাম ফাংশন

আপনার প্রোগ্রামে নিম্নলিখিত কোডটি অনুলিপি করুন

অকার্যকর শিরোনাম () {// শিরোনাম লিখুন LCD এবং স্পেস lcdRight.setCursor (0, 0) এর জন্য স্থান; lcdRight.write ("পিয়ানো টাইলস"); lcdRight.setCursor (0, 1); lcdRight.write ("স্কোর:"); // স্কোরকে একটি স্ট্রিং চার strScore [3] এ রূপান্তর করুন; sprintf (strScore, "%d", intScore); // ডিসপ্লে স্কোর এলসিডি lcdRight.write (strScore); // diffictuly lcdRight.setCursor যোগ করুন (10, 1); যদি (intDiff == 0) {lcdRight.write ("Easy"); } যদি (intDiff == 1) {lcdRight.write ("মাধ্যম"); } যদি (intDiff == 2) {lcdRight.write ("Hard"); } // নির্দেশের একটি সামান্য বিট টিপুন lcdLeft.setCursor (0, 0); lcdLeft.write ("এন্টার টিপুন"); lcdLeft.setCursor (0, 1); lcdLeft.write ("শুরু করতে!"); }

এই কোডটি খেলার শিরোনাম এবং এলসিডি -তে স্কোর লিখেছে, এটি এলসিডিকে বলার মাধ্যমে এটি করে যেখানে LCD.setCursor ব্যবহার করে টাইপ করা শুরু করতে হবে এবং তারপর LCD.write এ স্ট্রিং লিখতে হবে।

এখানে একটি নতুন ভেরিয়েবল তৈরি করা হয়েছে, strScore, এটি স্প্রিন্টফ ফাংশন ব্যবহার করে intScore কে স্ট্রিং বা চার ডেটা টাইপ রূপান্তর করতে ব্যবহৃত হয়।

intDiff এখানে ব্যবহার করা হয়, এর মানগুলির উপর ভিত্তি করে এটি বিভিন্ন অসুবিধা বিকল্পগুলি মুদ্রণ করে।

ধাপ 10: বাটন মেনু ফাংশন

আপনার প্রোগ্রামে নিম্নলিখিত কোডটি সন্নিবেশ করান

অকার্যকর বোতামমেনু () {// যখন এন্টার চাপানো হয় তখন গেমটি শুরু করুন এবং স্কোরের মান পুনরায় সেট করুন যদি (intEnter == 1) {bolPlay = true; intScore = 0; প্লেবোর্ড (); ড্র বোর্ড (); } // যখন বোতাম 3 টি চাপানো হয় সিরিয়ালে বোর্ড প্রিন্ট করার ডিবাগ বিকল্প চালু করুন if (intInput == 3) {if (bolSerialBoard == false) {Serial.println ("Serial Board Active"); bolSerialBoard = সত্য; } অন্যথায় {Serial.println ("সিরিয়াল বোর্ড অক্ষম"); bolSerialBoard = মিথ্যা; }} // সহজ গতিতে গেমের গতি সেট করুন যদি (intInput == 0) {Serial.print ("Game set to easy ("); Serial.print (intGameSpeedEasy); Serial.println ("ms acceleration)"); intDiff = 0; intGameSpeed = intGameSpeedEasy; } // গেমের গতি মাঝারি অসুবিধায় সেট করুন যদি (intInput == 1) {Serial.print ("Game set to medium ("); Serial.print (intGameSpeedMedium); Serial.println ("ms acceleration)"); intDiff = 1; intGameSpeed = intGameSpeedMedium; } // গেমের গতি কঠিন কষ্টে সেট করুন যদি (intInput == 2) {Serial.print ("Game set to hard ("); Serial.print (intGameSpeedHard); Serial.println ("ms acceleration" "); intDiff = 2; intGameSpeed = intGameSpeedHard; }}

এই কোডটি তখনই চালানো হয় যখন বলপ্লে ভয়েড লুপে মিথ্যা সমান

যদি intEnter 1 এ সেট করা থাকে তাহলে এর মানে হল যে এন্টার বোতামটি ধাক্কা দেওয়া হয়েছে, যদি এটি টিপে থাকে তাহলে প্রোগ্রামটি বলপ্লেকে সত্যে সেট করে এবং খেলা শুরু হয়।

প্রোগ্রামটি তখন পড়ে যে intInput কি সমান। যদি এটি 0 এর সমান হয় তবে বাম দিক থেকে প্রথম বোতামটি চাপানো হচ্ছে, ডানদিকে 3 পর্যন্ত যেতে হবে।

যদি 0-2 বোতাম টিপানো হয় তবে গেমটি অসুবিধা পরিবর্তন করে, গেমের গতির মানও সামঞ্জস্য করে, যার অর্থ এটি দ্রুততর হবে।

যদি বোতাম 3 টিপানো হয় তবে গেমটি ডিবাগ মোড সক্রিয় বা নিষ্ক্রিয় করবে যেখানে পুরো বোর্ডটি সিরিয়াল মনিটরে মুদ্রিত হয় যাতে প্রোগ্রামে সমস্যাগুলি খুঁজে পাওয়া যায়।

ধাপ 11: বাটনগেম ফাংশন

আপনার প্রোগ্রামে নিম্নলিখিত কোডটি অনুলিপি করুন

void buttonsGame () {if (intInput! = 4) {// যদি একটি বোতাম চাপানো হয় (bolTilePressed == false) {// শুধুমাত্র যদি bolTilePressed একটি বোতাম চেক করার জন্য মিথ্যা ট্রিগার অ্যাকশন থাকে bolTilePressed = true; // তারপর বলটিলেপ্রেসডকে সত্যে সেট করে নিশ্চিত করুন যে এটি অ্যাকসিডেন্টলি আবার int intLowestTile = 0 তে ট্রিগার করা হয়নি; // সর্বনিম্ন টাইল + intCheckedTile = 15 দিয়ে টাইল সেট করতে হবে; // (intLowestTile == 0) {// যতক্ষণ পর্যন্ত এটি কোন কিছুতে সেট না করা আছে (int i = 0; i 100) {// যতক্ষণ পর্যন্ত int বিলম্ব 100 intDelay = intDelay - 20 এর চেয়ে কম নয়; // এটি থেকে একটি মান নিন}} অন্য {Serial.println ("ভুল বোতাম টিপানো"); খেলা শেষ(); // অন্যথায় খেলা শেষ}}}}}

কোডটি তখনই চালানো হয় যখন বলপ্লেটি অকার্যকর লুপে সত্যের সমান।

বোতামগুলির মত মেনু intInput এর মানের উপর ভিত্তি করে এটি পরীক্ষা করে যে প্লেয়ারটি একটি টাইল আঘাত করেছে বা একটি মিস করেছে কিনা।

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

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

ধাপ 12: গেমওভার ফাংশন

আপনার প্রোগ্রামে নিম্নলিখিত কোডটি অনুলিপি করুন

void gameOver () {Serial.println ("Game Over!"); Serial.print ("আপনার স্কোর ছিল:"); Serial.println (intScore); Serial.print ("আপনার গতি ছিল:"); Serial.println (intDelay); বলপ্লে = মিথ্যা; }

এটি চেকবটম বা বাটনগেম ফাংশন দ্বারা ট্রিগার করা হয় এবং বলপ্লেকে মিথ্যা বলে সেট করে এটির খেলা শেষ করে।

এটি ব্যবহারকারীদের স্কোরের জন্য সিরিয়াল মনিটরে একটি বার্তা প্রিন্ট করে এবং মিলিসেকেন্ডে স্পিড টাইল যুক্ত করা হয়।

ধাপ 13: ইনপুট ফাংশন

আপনার প্রোগ্রামে নিম্নলিখিত কোডটি অনুলিপি করুন।

অকার্যকর ইনপুট () {intEnter = digitalRead (btnEnter); // পড়ুন এন্টার করুন // অন্যান্য ইনপুটগুলির মধ্যে কোনটি পড়ুন, অথবা যদি কোনটি 4 এ সেট না হয় (digitalRead (btn1) == HIGH) {intInput = 0;} অন্যথায় {if (digitalRead (btn2) == HIGH) {intInput = 1;} অন্য {যদি (digitalRead (btn3) == উচ্চ) {intInput = 2;} অন্য {যদি (digitalRead (btn4) == উচ্চ) {intInput = 3;} অন্য {intInput = 4; }}}} // সিরিয়াল ইনপুট প্রিন্ট করুন যদি (intEnter == 1) {Serial.println ("Enter pressed!");} if (intInput! = 4) {Serial.print ("Button Press:"); Serial.println (intInput); } অন্যথায় {// যদি কোন বোতাম না চাপলে রিসেট করুন }}

এই কোডটি বোতাম গেম এবং বাটন মেনু ফাংশনগুলির সাথে ব্যবহৃত হয়। ব্যবহারকারী যে বোতাম টিপেছে তার উপর ভিত্তি করে এটি intInput এর মান নির্ধারণ করে, অথবা যদি কোন বোতাম না চাপানো হয় তবে এটি intInput কে সমান 4 সেট করে।

যদি কোন বোতাম চাপানো না হয় তবে এখানেই বোতামগেল ফাংশনের জন্য bolTilePressed পুনরায় সেট করা হয়।

এটি সিরিয়াল মনিটরে একটি বার্তা প্রিন্ট করে যার উপর বোতাম চাপানো হয়।

ধাপ 14: বটম চেক ফাংশন

আপনার প্রোগ্রামে নিম্নলিখিত কোডটি অনুলিপি করুন।

void bottomCheck () {for (int i = 0; i <= 3; i ++) {// 4 টি কলামের জন্য যদি (arrGame [15] == 1) {// যদি একটি টাইল নীচে থাকে সিরিয়াল.println ("নীচে টালি"); arrGame [15] = 2; ড্র বোর্ড (); বিলম্ব (400); arrGame [15] = 1; ড্র বোর্ড (); বিলম্ব (400); arrGame [15] = 2; ড্র বোর্ড (); বিলম্ব (400); arrGame [15] = 1; ড্র বোর্ড (); বিলম্ব (400); খেলা শেষ(); }}}

একটি লুপ ব্যবহার করে এই কোডটি অরগেমের নিচের সারিটি যে কোন আনহিট টাইলসের জন্য পরীক্ষা করে

ধাপ 15: WritSerial ফাংশন

আপনার প্রোগ্রামে নিম্নলিখিত কোডটি অনুলিপি করুন

void writeSerial () {if (bolSerialBoard == true) {for (int i = 0; i <= 15; i ++) {for (int ii = 0; ii <= 3; ii ++) {সিরিয়াল.প্রিন্ট (arrGame [ii]); সিরিয়াল.প্রিন্ট (","); } Serial.println (""); }}}

এই ফাংশনটি ডিবাগ বিকল্প দ্বারা অনুসরণ করা হয় যা বোতাম মেনু ফাংশনে সক্ষম করা যায়। যদি bolSerialBoard এই ফাংশনে true তে সেট করা থাকে তাহলে এটি arrGame এর মাধ্যমে যাবে এবং একটি অ্যারে ব্যবহার করে পরীক্ষার উদ্দেশ্যে সিরিয়াল মনিটরে পুরো বোর্ড প্রিন্ট করবে।

ধাপ 16: সমাপ্তি

সমাপ্তি!
সমাপ্তি!

আপনার সমস্ত কোড সম্পূর্ণ হওয়া উচিত নয় এবং এরকম কিছু দেখতে হবে!

/ * * নাম - পিয়ানো টাইলস; Arduino * দ্বারা - Domenic Marulli * তারিখ - 11/ *

/ লাইব্রেরি অন্তর্ভুক্ত

#অন্তর্ভুক্ত

// এই ভেরিয়েবলগুলি এমন বিকল্প যা আপনি পরিবর্তন করতে পারেন - উচ্চ সংখ্যা = দ্রুত খেলা গতি

int intGameSpeedEasy = 10; int intGameSpeedMedium = 25; int intGameSpeedHard = 80;

// পিন সংজ্ঞায়িত করুন

#ডিফাইন বিটিএন এন্টার এ 0 #ডিফাইন বিটিএন 15 15

// LCD বস্তু তৈরি করুন (n, ~, n,,, ~, n)

LiquidCrystal lcdLeft (8, 9, 12, 10, 11, 13); LiquidCrystal lcdRight (2, 3, 4, 5, 6, 7);

// গেম অ্যারে সেট আপ করুন

int arrGame [16] [4] = {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}};

// গেমের জন্য ভেরিয়েবল সেট আপ করুন

বুলিয়ান বলপ্লে; // প্লেয়ার int intScore হলে ট্র্যাক; // খেলোয়াড়ের স্কোর int intDiff ট্র্যাক করে; // গেমটি কী অসুবিধা তা বলার জন্য কেবল একটি স্ট্যাটিক জিনিস

// ইনপুটের জন্য ভেরিয়েবল সেট আপ করুন

int intEnter; // ব্যবহারকারী যদি প্রবেশ বোতামটি intInput চাপেন তবে ট্র্যাক করে; // ব্যবহারকারীরা কোন বোতামগুলি বুলিয়ান বোল্টাইলপ্রেস চাপায় তা ট্র্যাক করে; // নিশ্চিত করুন যে প্লেয়ারটি দুর্ঘটনাক্রমে একটি বোতাম 5x টিপুন না এবং হারান

// টার্নের জন্য ভেরিয়েবল সেট আপ করুন

int intTick; // intDelay int intDelay পর্যন্ত মিলি (প্রতি লুপ) গণনা করে; // সময় মিলিস intGameSpeed পরবর্তী মোড় পর্যন্ত প্রোগ্রাম অপেক্ষা;

// ডিবাগ বিকল্পের abit

বুলিয়ান বল সিরিয়ালবোর্ড; // যখন সত্য সিরিয়াল মনিটরে বোর্ড মুদ্রণ করবে

// সেটআপ যা একবার চালানো হবে

অকার্যকর সেটআপ () {Serial.begin (9600); // সিরিয়াল মনিটর শুরু করুন // ভেরিয়েবল সেট আপ করুন bolPlay = false; intScore = 0; intTick = 0; intDelay = 1000; intDiff = 1; intGameSpeed = intGameSpeedMedium; // শুরু lcd এর lcdLeft.begin (16, 2); lcdRight.begin (16, 2); }

// লুপ যা প্রতি 10 মিলিসেকন চালানো হবে

অকার্যকর লুপ () {ইনপুট (); // ইনপুট খেলার জন্য পরীক্ষা করুন যদি write ); // মুদ্রণ বোর্ড বোঝায় // writeSerial (); // যদি অপশন চালু থাকে তাহলে বোর্ডকে সিরিয়াল বাটনগেম () এ লিখুন; // প্লেয়ার ইনপুট প্লেবোর্ড () জন্য চেক করুন; // বোর্ড সরান এবং একটি নতুন টাইল clearLcd () যোগ করুন; // ড্রবোর্ড আঁকার আগে LCD গুলি পরিষ্কার করুন (); // এলসিডির নীচে বোর্ড আঁকুন (); intTick = 0; // রিসেট intTick} অন্য {buttonsGame (); // প্লেয়ার ইনপুট clearLcd () জন্য চেক করুন; // ড্রবোর্ড আঁকার আগে LCD গুলি পরিষ্কার করুন (); // এলসিডির intTick = intTick + intGameSpeed- এ বোর্ড আঁকুন; // টিকে যোগ করুন}} অন্য {clearLcd (); // শিরোনাম আঁকার আগে LCD গুলি পরিষ্কার করুন (); // প্রদর্শন শিরোনাম এবং স্কোর তথ্য বোতাম মেনু (); // প্লেয়ার ইনপুট ক্লিয়ারবোর্ড () পড়ুন; // পুরো বোর্ড নিশ্চিত করুন = 0} বিলম্ব (10); // অল্প সময়ের জন্য আরডুইনো বিলম্ব করুন}

// এলসিডি পরিষ্কার করে, তাই কোনও অনিয়ন্ত্রিত কোষ সেখানে ছেড়ে যায় না

void clearLcd () {for (int i = 0; i <= 15; i ++) {for (int ii = 0; ii <= 1; ii ++) {lcdLeft.setCursor (i, ii); lcdLeft.write (""); lcdRight.setCursor (i, ii); lcdRight.write (""); }}}

// এলসিডি এর উপর বোর্ড আঁকে

void drawBoard () {for (int i = 1; i <= 15; i ++) {// বাম এলসিডি তে কলম 1 এবং 2 আঁকুন // যদি টাইল = 0 কিছু না লিখে, = 1 লিখুন "#", = 2 লিখুন "@" lcdLeft.setCursor (i, 1); // প্রথম পতন (দূরতম বাম) এ সেট করুন যদি (arrGame [0] == 1) {lcdLeft.write ("#");} if (arrGame [0] == 2) {lcdLeft.write ("@");} lcdLeft.setCursor (i, 0); // দ্বিতীয় পতন (মধ্য বাম) এ সেট করুন যদি (arrGame [1] == 1) {lcdLeft.write ("#");} if (arrGame [1] == 2) {lcdLeft.write ("@");} lcdRight.setCursor (i, 1); // তৃতীয় সংঘাতে সেট করুন (মাঝখানে ডানদিকে) যদি (arrGame [2] == 1) {lcdRight.write ("#");} if (arrGame [2] == 2) {lcdRight.write ("@");} lcdRight.setCursor (i, 0); // চতুর্থ সংঘর্ষে সেট করা (দূরতম ডানদিকে) যদি (arrGame [3] == 1) {lcdRight.write ("#");} if (arrGame [3] == 2) {lcdRight.write ("@");}}}

// বোর্ডটি নিচে সরিয়ে দেয় এবং একটি এলোমেলো মানকে টালি হিসাবে রাখে

void playBoard () {for (int i = 0; i <= 3; i ++) {arrGame [0] = 0;} // উপরের সারি arrGame [0] [এলোমেলো (0, 4)] = সাফ করুন 1; // উপরের সারিতে একটি এলোমেলো বিন্দু সেট করুন (int i = 15; i> = 1; i-) {// বোর্ডের নিচ থেকে উপরের দিকে (int ii = 0; ii <= 3; ii ++) {// প্রতিটি কলমের জন্য arrGame [ii] = arrGame [i - 1] [ii]; }}}

// পুরো বোর্ডকে 0 এ সেট করে এবং ভেরিয়েবলগুলিকে প্রিগেমে রিসেট করে

অকার্যকর clearBoard () {// রিসেট টিক এবং বিলম্বের মান intTick = 0; intDelay = 1000; // বোর্ডের মধ্য দিয়ে যান এবং সবকিছুকে 0 তে সেট করুন (int i = 0; i <= 15; i ++) {for (int ii = 0; ii <= 3; ii ++) {arrGame [ii] = 0; }}}

// এলসিডি -তে মূল মেনু প্রদর্শন করে

অকার্যকর শিরোনাম () {// শিরোনাম লিখুন LCD এবং স্পেস lcdRight.setCursor (0, 0) এর জন্য স্থান; lcdRight.write ("পিয়ানো টাইলস"); lcdRight.setCursor (0, 1); lcdRight.write ("স্কোর:"); // স্কোরকে একটি স্ট্রিং চার strScore [3] এ রূপান্তর করুন; sprintf (strScore, "%d", intScore); // ডিসপ্লে স্কোর এলসিডি lcdRight.write (strScore); // diffictuly lcdRight.setCursor যোগ করুন (10, 1); যদি (intDiff == 0) {lcdRight.write ("Easy"); } যদি (intDiff == 1) {lcdRight.write ("মাধ্যম"); } যদি (intDiff == 2) {lcdRight.write ("Hard"); } // নির্দেশের একটি সামান্য বিট টিপুন lcdLeft.setCursor (0, 0); lcdLeft.write ("এন্টার টিপুন"); lcdLeft.setCursor (0, 1); lcdLeft.write ("শুরু করতে!"); }

// গেমের বাইরে থাকার সময় বোতামগুলি এবং তাদের জন্য কী করতে হবে তা পরীক্ষা করে

অকার্যকর বোতামমেনু () {// যখন এন্টার চাপানো হয় তখন গেমটি শুরু করুন এবং স্কোরের মান পুনরায় সেট করুন যদি (intEnter == 1) {bolPlay = true; intScore = 0; প্লেবোর্ড (); ড্র বোর্ড (); } // যখন বোতাম 3 টি চাপানো হয় সিরিয়ালে বোর্ড প্রিন্ট করার ডিবাগ বিকল্প চালু করুন if (intInput == 3) {if (bolSerialBoard == false) {Serial.println ("Serial Board Active"); bolSerialBoard = সত্য; } অন্যথায় {Serial.println ("সিরিয়াল বোর্ড অক্ষম"); bolSerialBoard = মিথ্যা; }} // সহজ গতিতে গেমের গতি সেট করুন যদি (intInput == 0) {Serial.print ("Game set to easy ("); Serial.print (intGameSpeedEasy); Serial.println ("ms acceleration)"); intDiff = 0; intGameSpeed = intGameSpeedEasy; } // গেমের গতি মাঝারি অসুবিধায় সেট করুন যদি (intInput == 1) {Serial.print ("Game set to medium ("); Serial.print (intGameSpeedMedium); Serial.println ("ms acceleration)"); intDiff = 1; intGameSpeed = intGameSpeedMedium; } // গেমের গতি কঠিন কষ্টে সেট করুন যদি (intInput == 2) {Serial.print ("Game set to hard ("); Serial.print (intGameSpeedHard); Serial.println ("ms acceleration" "); intDiff = 2; intGameSpeed = intGameSpeedHard; }}

// গেমের সময় বোতামগুলি এবং তাদের জন্য কী করতে হবে তা পরীক্ষা করে

void buttonsGame () {if (intInput! = 4) {// যদি একটি বোতাম চাপানো হয় (bolTilePressed == false) {// শুধুমাত্র যদি bolTilePressed একটি বোতাম চেক করার জন্য মিথ্যা ট্রিগার অ্যাকশন থাকে bolTilePressed = true; // তারপর বলটিলেপ্রেসডকে সত্যে সেট করে নিশ্চিত করুন যে এটি অ্যাকসিডেন্টিলি আবার ট্রিগার হয় না int intLowestTile = 0; // সর্বনিম্ন টাইল + intCheckedTile = 15 দিয়ে টাইল সেট করতে হবে; // (intLowestTile == 0) {// যতক্ষণ পর্যন্ত এটি কোন কিছুতে সেট না করা আছে (int i = 0; i 100) {// যতক্ষণ পর্যন্ত int বিলম্ব 100 intDelay = intDelay - 20 এর চেয়ে কম নয়; // এটি থেকে একটি মান নিন}} অন্য {Serial.println ("ভুল বোতাম টিপানো"); খেলা শেষ(); // অন্যথায় খেলা শেষ}}}}}

অকার্যকর গেমওভার () {

Serial.println ("গেম ওভার!"); Serial.print ("আপনার স্কোর ছিল:"); Serial.println (intScore); Serial.print ("আপনার গতি ছিল:"); Serial.println (intDelay); বলপ্লে = মিথ্যা; }

// প্লেয়ার ইনপুট জন্য চেক

অকার্যকর ইনপুট () {intEnter = digitalRead (btnEnter); // পড়ুন এন্টার করুন // অন্যান্য ইনপুটগুলির মধ্যে কোনটি পড়ুন, অথবা যদি কোনটি 4 তে সেট না হয় (digitalRead (btn1) == HIGH) {intInput = 0;} অন্যথায় {if (digitalRead (btn2) == HIGH) {intInput = 1;} অন্য {যদি (digitalRead (btn3) == উচ্চ) {intInput = 2;} অন্য {যদি (digitalRead (btn4) == উচ্চ) {intInput = 3;} অন্য {intInput = 4; }}}} // সিরিয়াল ইনপুট প্রিন্ট করুন যদি (intEnter == 1) {Serial.println ("Enter pressed!");} if (intInput! = 4) {Serial.print ("Button Press:"); Serial.println (intInput); } অন্যথায় {// যদি কোন বোতাম না চাপলে রিসেট করুন bolTilePressed bolTilePressed = false; }}

// ব্যর্থতার জন্য বোর্ডের নীচে চেক করে

void bottomCheck () {for (int i = 0; i <= 3; i ++) {// 4 টি কলামের জন্য যদি (arrGame [15] == 1) {// যদি একটি টাইল নীচে থাকে সিরিয়াল.println ("নীচে টালি"); arrGame [15] = 2; ড্র বোর্ড (); বিলম্ব (400); arrGame [15] = 1; ড্র বোর্ড (); বিলম্ব (400); arrGame [15] = 2; ড্র বোর্ড (); বিলম্ব (400); arrGame [15] = 1; ড্র বোর্ড (); বিলম্ব (400); খেলা শেষ(); }}}

// bolSerialBoard সত্য হলে সিরিয়াল মনিটরে বোর্ড প্রিন্ট করে

void writeSerial () {if (bolSerialBoard == true) {for (int i = 0; i <= 15; i ++) {for (int ii = 0; ii <= 3; ii ++) {সিরিয়াল.প্রিন্ট (arrGame [ii]); সিরিয়াল.প্রিন্ট (","); } Serial.println (""); }}}

একবার সমস্ত কোড প্রবেশ করলে, আপনার আরডুইনোতে আপলোড করুন এবং উপভোগ করুন!

প্রস্তাবিত: