কম্পিউটার টিউটোরিয়াল

কটলিন ও জেটপ্যাক কম্পোজ দিয়ে অ্যান্ড্রয়েড অ্যাপ বানান: সোডুকু অ্যাপ তৈরি

জেটপ্যাক কম্পোজ কী?

Jetpack Compose হলো অ্যান্ড্রয়েডের আধুনিক টুলকিট নেটিভ UI বানানোর জন্য। এটি অ্যান্ড্রয়েডে UI ডেভেলপমেন্ট সহজ ও দ্রুত করে।

freeCodeCamp.org ইউটিউব চ্যানেলে আমরা একটি নতুন কোর্স প্রকাশ করেছি যা আপনাকে কটলিন এবং Jetpack Compose দিয়ে একটি সোডুকু অ্যান্ড্রয়েড অ্যাপ বানানো শিখাবে। পথে পথে আপনি গ্রাফ ডেটা স্ট্রাকচার এবং অ্যালগরিদমও শিখবেন।

এই কোর্সটি বিকাশ করেছেন রায়ান এম. কে (Ryan M. Kay)। তিনি অত্যন্ত অভিজ্ঞ ডেভেলপার এবং শিক্ষক।

কোর্সে কী কী শিখবেন?

  • অ্যাপ ডিজাইন এপ্রোচ: থার্ড-পার্টি লাইব্রেরি মিনিমালিজম এবং MV-Whatever আর্কিটেকচার
  • ডোমেইন প্যাকেজ: রিপোজিটরি প্যাটার্ন, Enum, ডেটা ক্লাস, সিল্ড ক্লাস, হ্যাশ কোড, ইন্টারফেস
  • কমন প্যাকেজ: এক্সটেনশন ফাংশন/ভেরিয়েবল, ওপেন-ক্লোজড প্রিন্সিপল (OCP), অ্যাবস্ট্রাক্ট ক্লাস, সিঙ্গলটন
  • পারসিস্টেন্স (স্টোরেজ) প্যাকেজ: ক্লিন আর্কিটেকচার ব্যাকএন্ড জাভা ফাইল সিস্টেম স্টোরেজ এবং Jetpack Proto DataStore দিয়ে
  • UI প্যাকেজ: Jetpack Compose UI বেসিকস, স্টাইলস, টাইপোগ্রাফি, লাইট ও ডার্ক থিম
  • UI কম্পোনেন্ট প্যাকেজ: মডিফায়ার, রিযusable টুলবার ও লোডিং স্ক্রিন
  • UI এক্টিভ গেম ফিচার প্যাকেজ: প্রেজেন্টেশন লজিক ও ViewModel কোরুটিন এবং কটলিন ফাংশন টাইপসহ
  • UI এক্টিভ গেম ফিচার প্যাকেজ: Jetpack Compose UI এবং অ্যাক্টিভিটি কন্টেইনার দিয়ে সোডুকু গেম
  • কম্পিউটেশন লজিক প্যাকেজ: n-সাইজড স্কোয়ার সোডুকুর জন্য গ্রাফ DS ও অ্যালগরিদমের ওভারভিউ, ডিজাইন এবং টেস্টিং

পুরো কোর্স নিচে দেখুন বা freeCodeCamp.org ইউটিউব চ্যানেলে (৩.৫ ঘণ্টা)।

কোর্সের হাইলাইটস

আর্কিটেকচার ও ডিজাইন সিদ্ধান্ত

কোর্সটি কোড-অ্যালonges শৈলীতে—আপনি কোড লিখতে পারেন একসাথে। রায়ান জেটপ্যাক লাইব্রেরি (ViewModel, Navigation, Hilt) ব্যবহার না করে কটলিন/জাভা স্ট্যান্ডার্ড লাইব্রেরি এবং অ্যান্ড্রয়েড SDK-র ওপর নির্ভর করেছেন, যাতে কোড ডিপ্রিকেশন-রোধী হয়। তিনি Model-View-Whatever আর্কিটেকচার ফলো করেছেন, যেখানে প্রেজেন্টেশন লজিক আলাদা ক্লাসে রেখে ViewModel-কে গড অবজেক্ট হতে বাঁচানো হয়েছে।

ডোমেইন মডেলিং

Difficulty enum, Settings ডেটা ক্লাস, UserStatistics, SudokuNode (গ্রাফ নোড), SudokuPuzzle (লিঙ্কড হ্যাশম্যাপ ভিত্তিক গ্রাফ) ইত্যাদি ডোমেইন মডেল তৈরি করা হয়েছে। Serializable ইমপ্লিমেন্ট করে ফাইল সিস্টেমে স্টোরেজ করা হয়েছে।

রিপোজিটরি প্যাটার্ন এবং রেজাল্ট র‍্যাপার

IGameRepository, IGameDataStorage, ISettingsStorage, IStatisticsRepository ইন্টারফেস দিয়ে লুজ কাপলিং নিশ্চিত করা হয়েছে। সিল্ড ক্লাস ভিত্তিক Result র‍্যাপার (Success/Error স্টেট) ব্যবহার করা হয়েছে ফাংশন টাইপ কলব্যাকের বদলে।

কমন ইউটিলিটি: OCP, এক্সটেনশন, ডিসপ্যাচার, সিঙ্গলটন

BaseLogic অ্যাবস্ট্রাক্ট ক্লাস, এক্সটেনশন ফাংশন/প্রপার্টি, DispatcherProvider ইন্টারফেস এবং ProductionDispatcherProvider অবজেক্ট (সিঙ্গলটন) দিয়ে কোরুটিন কনটেক্সট ম্যানেজমেন্ট করা হয়েছে।

পারসিস্টেন্স লেয়ার: Proto DataStore এবং ফাইল স্টোরেজ

গেম সেটিংস এবং ইউজার স্ট্যাটিস্টিক্স Proto DataStore-এ (Protocol Buffers ব্যবহার করে), আর এক্টিভ গেম প্রগ্রেস জাভা IO স্ট্রিম দিয়ে ফাইল সিস্টেমে স্টোর করা হয়েছে।

UI থিমিং: লাইট ও ডার্ক মোড সাপোর্ট

Color.kt, Shape.kt, Type.kt এবং GraphSudokuTheme.kt দিয়ে কমপোজে থিমিং সিস্টেম বানানো হয়েছে। isSystemInDarkTheme() ব্যবহার করে সিস্টেম থিম অনুযায়ী অটো স্যুইচ করা হয়।

রিযusable কম্পোনেন্ট: টুলবার এবং লোডিং স্ক্রিন

AppToolbar এবং LoadingScreen কম্পোজেবল মডিফায়ার এবং কম্পোজেবল প্যারামিটার ব্যবহার করে রিযusable করা হয়েছে।

প্রেজেন্টেশন লজিক এবং ViewModel

ActiveGameEvent সিল্ড ক্লাস (স্ট্র্যাটেজি প্যাটার্ন), ActiveGameViewModel (ফাংশন টাইপ ভিত্তিক অবজারভার প্যাটার্ন), এবং ActiveGameLogic (প্রেজেন্টেশন লজিক, কোরুটিন টাইমার, জব ক্যান্সেলেশন) তৈরি করা হয়েছে।

UI কম্পোজিশন: অ্যাক্টিভিটি, স্ক্রিন, এবং অ্যানিমেশন

ActiveGameActivity (কন্টেইনার), buildActiveGameLogic এক্সটেনশন (ম্যানুয়াল DI), ActiveGameScreen (রুট কম্পোজেবল, ট্রানজিশন অ্যানিমেশন), GameContent (ConstraintLayout-ভিত্তিক সোডুকু বোর্ড, ৮১ টি টেক্সট কম্পোজেবল), GameCompleteContent ইত্যাদি বানানো হয়েছে।

কম্পিউটেশন লজিক: গ্রাফ অ্যালগরিদম

n-সাইজড সোডুকু জেনারেট, সলভ এবং আনসলভ করার জন্য ডাইরেক্টেড কালারড গ্রাফ, অ্যাডজেসেন্সি লিস্ট, এবং ব্যাকট্র্যাকিং অ্যালগরিদম ইমপ্লিমেন্ট করা হয়েছে।

এই কোর্স কেন উপযোগী?

  • জেটপ্যাক কম্পোজের বাস্তব ব্যবহার শিখতে পারবেন
  • ক্লিন আর্কিটেকচার এবং SOLID প্রিন্সিপল প্র্যাক্টিসে লাগবেন
  • গ্রাফ ডেটা স্ট্রাকচার এবং অ্যালগরিদম বুঝতে পারবেন
  • কটলিনের অ্যাডভান্সড ফিচার (সিল্ড ক্লাস, ফাংশন টাইপ, কোরুটিন) ব্যবহার শিখবেন
  • একটি পুরো প্রোডাকশন-রেডি অ্যাপ বানানো শিখবেন

শেষ কথা

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

ভিডিওটি পছন্দ হলে লাইক ও কমেন্ট করুন। ধন্যবাদ এবং শুভ কোডিং!

  1. এই ১২টি অ্যান্ড্রয়েড অ্যাপ দিয়ে Spotify সুপারচার্জ করুন

  2. অ্যান্ড্রয়েড এবং আইওএসে YouTube Shorts তৈরি করার পদ্ধতি

  3. এই ৩টি ফ্রি অ্যান্ড্রয়েড অ্যাপ দিয়ে সহজে এনিমেটেড টেক্সট (Animated Text) তৈরি করুন

  4. রিয়েক্ট নেটিভ এবং নেটিভ বেস দিয়ে একটি শক্তিশালী অ্যান্ড্রয়েড নিউজ অ্যাপ তৈরি করুন