সুচিপত্র:

Arduino Touch Tic Tac Toe Game: 6 ধাপ (ছবি সহ)
Arduino Touch Tic Tac Toe Game: 6 ধাপ (ছবি সহ)

ভিডিও: Arduino Touch Tic Tac Toe Game: 6 ধাপ (ছবি সহ)

ভিডিও: Arduino Touch Tic Tac Toe Game: 6 ধাপ (ছবি সহ)
ভিডিও: Arduino Game Project: Tic Tac Toe Game with a touch screen and an Arduino from Banggood.com 2024, জুন
Anonim
Image
Image
Arduino Touch Tic Tac Toe Game
Arduino Touch Tic Tac Toe Game
Arduino Touch Tic Tac Toe Game
Arduino Touch Tic Tac Toe Game
Arduino Touch Tic Tac Toe Game
Arduino Touch Tic Tac Toe Game

প্রিয় বন্ধুরা আরেকটি Arduino টিউটোরিয়ালে স্বাগতম! এই বিস্তারিত টিউটোরিয়ালে আমরা একটি Arduino Tic Tac Toe গেম তৈরি করতে যাচ্ছি। আপনি দেখতে পাচ্ছেন, আমরা একটি টাচ স্ক্রিন ব্যবহার করছি এবং আমরা কম্পিউটারের বিরুদ্ধে খেলছি। Tic Tac Toe এর মতো একটি সাধারণ গেম হল গেম প্রোগ্রামিং এবং আর্টিফিশিয়াল ইন্টেলিজেন্সের দারুণ পরিচিতি। যদিও আমরা এই গেমটিতে কোন আর্টিফিশিয়াল ইন্টেলিজেন্স অ্যালগরিদম ব্যবহার করবো না, আমরা বুঝতে পারব কেন আরো জটিল গেমসে কৃত্রিম বুদ্ধিমত্তা অ্যালগরিদম প্রয়োজন।

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

আসুন এখন এই প্রকল্পটি তৈরি করি।

ধাপ 1: সমস্ত যন্ত্রাংশ পান

Image
Image
2.8
2.8

এই প্রকল্পটি নির্মাণের জন্য প্রয়োজনীয় অংশগুলি নিম্নরূপ:

একটি Arduino Uno ▶

একটি 2.8”টাচ স্ক্রিন ▶

প্রকল্পের খরচ খুবই কম। এটা মাত্র 15 ডলার।

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

ধাপ 2: Arduino এর জন্য 2.8 "টাচ কালার ডিসপ্লে।

Image
Image
2.8
2.8
2.8
2.8

আমি banggood.com এ এই টাচ স্ক্রিনটি আবিষ্কার করেছি এবং এটি আমার কিছু প্রকল্পে ব্যবহার করার চেষ্টা করার জন্য এটি কেনার সিদ্ধান্ত নিয়েছি। আপনি দেখতে পাচ্ছেন ডিসপ্লেটি সস্তা, এর দাম প্রায় 11 ডলার।

এখানে পান ▶

ডিসপ্লেটি 320x240 পিক্সেলের রেজোলিউশন অফার করে এবং এটি একটি ieldাল হিসাবে আসে যা Arduino এর সাথে সংযোগকে অত্যন্ত সহজ করে তোলে। আপনি দেখতে পাচ্ছেন, ডিসপ্লেটি Arduino Uno এর প্রায় সব ডিজিটাল এবং এনালগ পিন ব্যবহার করে। এই ieldাল ব্যবহার করার সময় আমাদের প্রকল্পের জন্য মাত্র 2 টি ডিজিটাল পিন এবং 1 টি এনালগ পিন বাকি আছে। সৌভাগ্যবশত, ডিসপ্লেটি আরডুইনো মেগাতেও ভাল কাজ করে, তাই যখন আমাদের আরও পিনের প্রয়োজন হয় তখন আমরা আরডুইনো ইউনো এর পরিবর্তে আরডুইনো মেগা ব্যবহার করতে পারি। দুর্ভাগ্যবশত এই ডিসপ্লেটি Arduino Due বা Wemos D1 ESP8266 বোর্ডের সাথে কাজ করে না। Ieldালের আরেকটি সুবিধা হল এটি একটি মাইক্রো এসডি স্লট প্রদান করে যা ব্যবহার করা খুবই সহজ।

ধাপ 3: প্রকল্পটি তৈরি করা এবং এটি পরীক্ষা করা।

প্রকল্পটি তৈরি করা এবং এটি পরীক্ষা করা।
প্রকল্পটি তৈরি করা এবং এটি পরীক্ষা করা।
প্রকল্পটি তৈরি করা এবং এটি পরীক্ষা করা।
প্রকল্পটি তৈরি করা এবং এটি পরীক্ষা করা।
প্রকল্পটি তৈরি করা এবং এটি পরীক্ষা করা।
প্রকল্পটি তৈরি করা এবং এটি পরীক্ষা করা।

Arduino Uno এর সাথে স্ক্রিন সংযুক্ত করার পর, আমরা কোডটি লোড করতে পারি এবং আমরা খেলতে প্রস্তুত।

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

আরডুইনো এই খেলায় খুব ভালো। এটি বেশিরভাগ গেম জিতবে, অথবা আপনি যদি খুব ভাল খেলোয়াড় হন তবে খেলাটি ড্রয়ে শেষ হবে। আমি ইচ্ছাকৃতভাবে এই অ্যালগরিদমটি কিছু ভুল করার জন্য ডিজাইন করেছি যাতে মানব খেলোয়াড়কে জেতার সুযোগ দেওয়া যায়। গেমের কোডে আরও দুটি লাইন যুক্ত করে, আমরা আরডুইনোকে খেলা হারানো অসম্ভব করে তুলতে পারি। কিন্তু কিভাবে একটি 2 $ চিপ, Arduino CPU, মানুষের মস্তিষ্ককে পরাজিত করতে পারে? আমরা যে প্রোগ্রামটি তৈরি করেছি তা কি মানুষের মস্তিষ্কের চেয়ে স্মার্ট?

ধাপ 4: গেম অ্যালগরিদম

গেম অ্যালগরিদম
গেম অ্যালগরিদম
গেম অ্যালগরিদম
গেম অ্যালগরিদম

এই প্রশ্নের উত্তর দিতে, আসুন আমি যে অ্যালগরিদমটি প্রয়োগ করেছি তা দেখি।

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

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

ধাপ 5: প্রকল্পের কোড

প্রকল্পের কোড
প্রকল্পের কোড

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

  1. Adafruit TFTLCD: https://github.com/adafruit/TFTLCD- লাইব্রেরি
  2. Adafruit GFX:
  3. টাচস্ক্রিন:

যেমন আপনি দেখতে পাচ্ছেন, এমনকি এইরকম একটি সাধারণ গেমের জন্য 600 টিরও বেশি কোডের প্রয়োজন। কোডটি জটিল, তাই আমি এটি সংক্ষিপ্ত টিউটোরিয়ালে ব্যাখ্যা করার চেষ্টা করব না। যদিও আমি আপনাকে Arduino চালনার জন্য অ্যালগরিদমের বাস্তবায়ন দেখাব।

প্রথমে, আমরা দুটি এলোমেলো কোণ খেলি।

<int firstMoves = {0, 2, 6, 8}; // এই অবস্থানের জন্য প্রথমে ব্যবহার করবে }} করুন {যদি (চাল <= 2) {int randomMove = random (4); int c = firstMoves [randomMove]; যদি (বোর্ড [c] == 0) {বিলম্ব (1000); বোর্ড [c] = 2; Serial.print (firstMoves [randomMove]); Serial.println (); drawCpuMove (firstMoves [randomMove]); b = 1; }}

পরবর্তী, প্রতিটি রাউন্ডে আমরা চেক করি যে খেলোয়াড় পরবর্তী পদক্ষেপে জিততে পারে কিনা।

int checkOpponent ()

{if (board [0] == 1 && board [1] == 1 && board [2] == 0) return 2; অন্যথায় যদি (বোর্ড [0] == 1 && বোর্ড [1] == 0 && বোর্ড [2] == 1) রিটার্ন 1; অন্যথায় যদি (বোর্ড [1] == 1 && বোর্ড [2] == 1 && বোর্ড [0] == 0) 0 রিটার্ন করুন; অন্যথায় যদি (বোর্ড [3] == 1 && বোর্ড [4] == 1 && বোর্ড [5] == 0) রিটার্ন 5; অন্যথায় যদি (বোর্ড [4] == 1 && বোর্ড [5] == 1 && বোর্ড [3] == 0) রিটার্ন 3; অন্যথায় যদি (বোর্ড [3] == 1 && বোর্ড [4] == 0 && বোর্ড [5] == 1) রিটার্ন 4; অন্যথায় যদি (বোর্ড [1] == 0 && বোর্ড [4] == 1 && বোর্ড [7] == 1) রিটার্ন 1; অন্যথায় 100 ফেরত; }

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

দ্রষ্টব্য: যেহেতু ব্যাংগুড দুটি ভিন্ন ডিসপ্লে ড্রাইভারের সাথে একই ডিসপ্লে অফার করে, যদি উপরের কোডটি কাজ না করে, তাহলে initDisplay ফাংশনটি নিম্নলিখিতটিতে পরিবর্তন করুন:

অকার্যকর initDisplay ()

{tft.reset (); tft.begin (0x9341); tft.set রোটেশন (3); }

ধাপ 6: চূড়ান্ত চিন্তাভাবনা এবং উন্নতি

চূড়ান্ত চিন্তা এবং উন্নতি
চূড়ান্ত চিন্তা এবং উন্নতি

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

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

প্রস্তাবিত: