এই পথের কোডল্যাবগুলির জন্য, আপনি একটি ডাইস রোলার অ্যান্ড্রয়েড অ্যাপ তৈরি করবেন। যখন ব্যবহারকারী "পাশা রোল করে" তখন একটি এলোমেলো ফলাফল তৈরি হবে। ফলাফল একাউন্টে পাশা পক্ষের সংখ্যা লাগে. উদাহরণস্বরূপ, একটি 6-পার্শ্বযুক্ত পাশা থেকে শুধুমাত্র 1-6-এর মানগুলি রোল করা যেতে পারে।
এই চূড়ান্ত অ্যাপটি দেখতে কেমন হবে।
এই অ্যাপের জন্য নতুন প্রোগ্রামিং ধারণাগুলিতে ফোকাস করতে সাহায্য করার জন্য, আপনি মূল অ্যাপ কার্যকারিতা তৈরি করতে ব্রাউজার-ভিত্তিক কোটলিন প্রোগ্রামিং টুল ব্যবহার করবেন। প্রোগ্রামটি আপনার ফলাফল কনসোলে আউটপুট করবে। পরে আপনি অ্যান্ড্রয়েড স্টুডিওতে ইউজার ইন্টারফেস বাস্তবায়ন করবেন।
এই প্রথম কোডল্যাবে, আপনি একটি কোটলিন প্রোগ্রাম তৈরি করবেন যা রোলিং ডাইসকে অনুকরণ করে এবং একটি এলোমেলো সংখ্যা আউটপুট করে, ঠিক যেমন একটি ডাইস।
পূর্বশর্ত
- https://try.kotlinlang.org/ এ কীভাবে কোড খুলবেন, সম্পাদনা করবেন এবং চালাবেন
- একটি Kotlin প্রোগ্রাম তৈরি করুন এবং চালান যা ভেরিয়েবল এবং ফাংশন ব্যবহার করে এবং কনসোলে ফলাফল প্রিন্ট করে।
-
${variable}
স্বরলিপি সহ একটি স্ট্রিং টেমপ্লেট ব্যবহার করে পাঠ্যের মধ্যে নম্বর বিন্যাস করুন।
আপনি কি শিখবেন
- ডাইস রোলগুলি অনুকরণ করার জন্য প্রোগ্রাম্যাটিকভাবে র্যান্ডম সংখ্যাগুলি কীভাবে তৈরি করা যায়।
- একটি পরিবর্তনশীল এবং একটি পদ্ধতি দিয়ে একটি
Dice
ক্লাস তৈরি করে কীভাবে আপনার কোড গঠন করবেন। - কিভাবে একটি ক্লাসের একটি অবজেক্ট ইনস্ট্যান্স তৈরি করতে হয়, এর ভেরিয়েবলগুলি পরিবর্তন করতে হয় এবং এর পদ্ধতিগুলিকে কল করতে হয়।
আপনি কি নির্মাণ করবেন
- ব্রাউজার-ভিত্তিক কোটলিন প্রোগ্রামিং টুলের একটি কোটলিন প্রোগ্রাম যা একটি এলোমেলো ডাইস রোল সম্পাদন করতে পারে।
আপনার যা প্রয়োজন
- একটি ইন্টারনেট সংযোগ সহ একটি কম্পিউটার
গেমগুলিতে প্রায়শই একটি এলোমেলো উপাদান থাকে। আপনি একটি এলোমেলো পুরস্কার অর্জন করতে পারেন বা গেম বোর্ডে এলোমেলো সংখ্যক ধাপ এগিয়ে নিতে পারেন। আপনার দৈনন্দিন জীবনে, আপনি নিরাপদ পাসওয়ার্ড তৈরি করতে এলোমেলো সংখ্যা এবং অক্ষর ব্যবহার করতে পারেন!
প্রকৃত পাশা রোল করার পরিবর্তে, আপনি একটি প্রোগ্রাম লিখতে পারেন যা আপনার জন্য পাশা রোলিং অনুকরণ করে। প্রতিবার যখন আপনি ডাইস রোল করবেন, ফলাফল সম্ভাব্য মানের পরিসরের মধ্যে যেকোনো সংখ্যা হতে পারে। সৌভাগ্যবশত, এই ধরনের একটি প্রোগ্রামের জন্য আপনাকে আপনার নিজস্ব র্যান্ডম-নম্বর জেনারেটর তৈরি করতে হবে না। কোটলিন সহ বেশিরভাগ প্রোগ্রামিং ভাষাতে আপনার এলোমেলো সংখ্যা তৈরি করার জন্য একটি অন্তর্নির্মিত উপায় রয়েছে। এই টাস্কে, আপনি একটি এলোমেলো নম্বর তৈরি করতে কোটলিন কোড ব্যবহার করবেন।
আপনার স্টার্টার কোড সেট আপ করুন
- আপনার ব্রাউজারে, ওয়েবসাইটটি খুলুন https://try.kotlinlang.org/ ।
- কোড এডিটরে বিদ্যমান সমস্ত কোড মুছুন এবং নীচের কোড দিয়ে প্রতিস্থাপন করুন। এটি হল
main()
ফাংশন যার সাথে আপনি আগের কোডল্যাবগুলিতে কাজ করেছেন ( আপনার প্রথম কোটলিন প্রোগ্রাম কোডল্যাব লিখুন দেখুন)।
fun main() {
}
র্যান্ডম ফাংশন ব্যবহার করুন
একটি পাশা রোল করার জন্য, আপনার সমস্ত বৈধ ডাইস রোল মানগুলি উপস্থাপন করার একটি উপায় প্রয়োজন। একটি নিয়মিত 6-পার্শ্বযুক্ত পাশার জন্য, গ্রহণযোগ্য ডাইস রোলগুলি হল: 1, 2, 3, 4, 5 এবং 6।
পূর্বে, আপনি শিখেছেন যে পূর্ণসংখ্যার জন্য Int
এবং পাঠ্যের জন্য String
মতো ডেটার ধরন রয়েছে। IntRange
হল আরেকটি ডেটা টাইপ, এবং এটি একটি প্রারম্ভিক বিন্দু থেকে শেষ বিন্দু পর্যন্ত পূর্ণসংখ্যার একটি পরিসীমা উপস্থাপন করে। একটি ডাইস রোল যে সম্ভাব্য মানগুলি তৈরি করতে পারে তা উপস্থাপন করার জন্য IntRange
একটি উপযুক্ত ডেটা টাইপ।
- আপনার
main()
ফাংশনের ভিতরে, একটি ভেরিয়েবলকে একটিval
হিসাবে সংজ্ঞায়িত করুন যার নামdiceRange
। এটিকে 1 থেকে 6 পর্যন্ত একটিIntRange
এ বরাদ্দ করুন, পূর্ণসংখ্যার পরিসরের প্রতিনিধিত্ব করে যা একটি 6-পার্শ্বযুক্ত পাশা রোল করতে পারে।
val diceRange = 1..6
আপনি বলতে পারেন যে 1..6
হল একটি কোটলিন পরিসর কারণ এটির একটি সূচনা সংখ্যা, দুটি বিন্দু রয়েছে, তারপরে একটি শেষ সংখ্যা (মাঝখানে কোনো ফাঁকা নেই)। পূর্ণসংখ্যা ব্যাপ্তির অন্যান্য উদাহরণ হল 2 থেকে 5 নম্বরের জন্য 2..5
এবং 100 থেকে 200 নম্বরগুলির জন্য 100..200
৷
যেভাবে কলিং println()
সিস্টেমকে প্রদত্ত টেক্সট প্রিন্ট করতে বলে, ঠিক একইভাবে, আপনি random()
নামক একটি ফাংশন ব্যবহার করে একটি নির্দিষ্ট পরিসরের জন্য আপনার জন্য একটি র্যান্ডম নম্বর তৈরি করতে এবং ফেরত দিতে পারেন। আগের মত, আপনি একটি পরিবর্তনশীল ফলাফল সংরক্ষণ করতে পারেন.
-
main()
ভিতরে,randomNumber
নামক একটিval
হিসাবে একটি ভেরিয়েবলকে সংজ্ঞায়িত করুন। - নিচে দেখানো হিসাবে
diceRange
রেঞ্জেrandom()
কল করার ফলাফলের মানrandomNumber
তৈরি করুন।
val randomNumber = diceRange.random()
লক্ষ্য করুন যে আপনি ভেরিয়েবল এবং ফাংশন কলের মধ্যে একটি পিরিয়ড বা ডট ব্যবহার করে diceRange
এ random()
কল করছেন। আপনি এটিকে " diceRange
থেকে একটি র্যান্ডম সংখ্যা তৈরি করা" হিসাবে পড়তে পারেন। ফলাফল তারপর randomNumber
ভেরিয়েবলে সংরক্ষণ করা হয়।
- আপনার এলোমেলোভাবে জেনারেট করা নম্বর দেখতে, স্ট্রিং ফরম্যাটিং নোটেশন ব্যবহার করুন (এটিকে "স্ট্রিং টেমপ্লেট"ও বলা হয়)
${randomNumber}
প্রিন্ট করার জন্য, নীচে দেখানো হিসাবে।
println("Random number: ${randomNumber}")
আপনার সমাপ্ত কোড এই মত হওয়া উচিত.
fun main() {
val diceRange = 1..6
val randomNumber = diceRange.random()
println("Random number: ${randomNumber}")
}
- আপনার কোড বেশ কয়েকবার চালান। প্রতিবার, আপনি বিভিন্ন র্যান্ডম সংখ্যা সহ নীচের মত আউটপুট দেখতে হবে।
Random number: 4
আপনি যখন পাশা রোল, তারা আপনার হাতে বাস্তব বস্তু. যদিও আপনি এইমাত্র যে কোডটি লিখেছেন তা পুরোপুরি সূক্ষ্ম কাজ করে, এটা কল্পনা করা কঠিন যে এটি প্রকৃত পাশা সম্পর্কে। একটি প্রোগ্রামকে এটির প্রতিনিধিত্ব করে এমন জিনিসগুলির মতো হওয়ার জন্য এটিকে বোঝা সহজ করে তোলে৷ সুতরাং, আপনি রোল করতে পারেন যে প্রোগ্রাম্যাটিক পাশা আছে চমৎকার হবে!
সমস্ত পাশা মূলত একই কাজ করে। তারা একই বৈশিষ্ট্য আছে, যেমন পক্ষের, এবং তারা একই আচরণ আছে, যেমন তারা ঘূর্ণিত করা যেতে পারে। কোটলিনে, আপনি একটি ডাইসের একটি প্রোগ্রাম্যাটিক ব্লুপ্রিন্ট তৈরি করতে পারেন যা বলে যে পাশার পাশ রয়েছে এবং একটি এলোমেলো সংখ্যা রোল করতে পারে। এই ব্লুপ্রিন্টটিকে ক্লাস বলা হয়।
সেই ক্লাস থেকে, আপনি তখন প্রকৃত ডাইস অবজেক্ট তৈরি করতে পারেন, যাকে বলা হয় অবজেক্ট ইনস্ট্যান্স । উদাহরণস্বরূপ, আপনি একটি 12-পার্শ্বযুক্ত পাশা, বা একটি 4-পার্শ্বযুক্ত পাশা তৈরি করতে পারেন।
একটি ডাইস ক্লাস সংজ্ঞায়িত করুন
নিম্নলিখিত ধাপে, আপনি একটি রোলযোগ্য পাশা প্রতিনিধিত্ব করার জন্য Dice
নামে একটি নতুন ক্লাস সংজ্ঞায়িত করবেন।
- নতুন করে শুরু করতে,
main()
ফাংশনে কোডটি সাফ করুন যাতে আপনি নীচের দেখানো কোডটি দিয়ে শেষ করেন।
fun main() {
}
- এই
main()
ফাংশনের নীচে, একটি ফাঁকা লাইন যোগ করুন, এবং তারপরDice
ক্লাস তৈরি করতে কোড যোগ করুন। নীচে দেখানো হিসাবে, কীওয়ার্ডclass
দিয়ে শুরু করুন, তারপরে ক্লাসের নাম, তারপরে একটি খোলা এবং বন্ধ কোঁকড়া বন্ধনী দ্বারা অনুসরণ করুন। ক্লাসের জন্য আপনার কোড রাখতে কোঁকড়া ধনুর্বন্ধনীর মধ্যে জায়গা ছেড়ে দিন।
class Dice {
}
একটি শ্রেণীর সংজ্ঞার ভিতরে, আপনি ভেরিয়েবল ব্যবহার করে ক্লাসের জন্য এক বা একাধিক বৈশিষ্ট্য নির্দিষ্ট করতে পারেন। বাস্তব ডাইসের বেশ কয়েকটি দিক, একটি রঙ বা ওজন থাকতে পারে। এই টাস্কে, আপনি ডাইসের পাশের সংখ্যার বৈশিষ্ট্যের উপর ফোকাস করবেন।
-
Dice
ক্লাসের ভিতরে, আপনার পাশার সংখ্যার জন্যsides
নামে একটিvar
যোগ করুন।sides
6 এ সেট করুন।
class Dice {
var sides = 6
}
সেটাই। আপনি এখন পাশা প্রতিনিধিত্ব একটি খুব সহজ ক্লাস আছে.
ডাইস ক্লাসের একটি উদাহরণ তৈরি করুন
এই Dice
ক্লাসের সাথে, আপনার কাছে ডাইস কী তার একটি নীলনকশা রয়েছে। আপনার প্রোগ্রামে একটি প্রকৃত ডাইস থাকতে, আপনাকে একটি Dice
অবজেক্ট ইনস্ট্যান্স তৈরি করতে হবে। (এবং যদি আপনার তিনটি পাশা প্রয়োজন হয় তবে আপনি তিনটি বস্তুর উদাহরণ তৈরি করবেন।)
-
Dice
এর একটি অবজেক্ট ইন্সট্যান্স তৈরি করতে,main()
ফাংশনে,myFirstDice
নামে একটিval
তৈরি করুন এবং এটিকেDice
ক্লাসের একটি উদাহরণ হিসাবে শুরু করুন। ক্লাসের নামের পরে বন্ধনীগুলি লক্ষ্য করুন, যা বোঝায় যে আপনি ক্লাস থেকে একটি নতুন অবজেক্ট ইনস্ট্যান্স তৈরি করছেন।
fun main() {
val myFirstDice = Dice()
}
এখন আপনার কাছে একটি myFirstDice
অবজেক্ট আছে, একটি জিনিস যা ব্লুপ্রিন্ট থেকে তৈরি, আপনি এর বৈশিষ্ট্যগুলি অ্যাক্সেস করতে পারেন। Dice
একমাত্র সম্পত্তি হল এর sides
। আপনি "ডট নোটেশন" ব্যবহার করে একটি সম্পত্তি অ্যাক্সেস করেন। সুতরাং, myFirstDice
এর sides
প্রপার্টি অ্যাক্সেস করতে, আপনি myFirstDice.sides
কল করুন যা " myFirstDice
ডট sides
" উচ্চারিত হয়।
-
myFirstDice
এর ঘোষণার নিচে,myFirstDice.
এরsides
সংখ্যা বের করতে একটিprintln()
স্টেটমেন্ট যোগ করুন।
println(myFirstDice.sides)
আপনার কোড এই মত দেখতে হবে.
fun main() {
val myFirstDice = Dice()
println(myFirstDice.sides)
}
class Dice {
var sides = 6
}
- আপনার প্রোগ্রাম চালান এবং এটি
Dice
ক্লাসে সংজ্ঞায়িতsides
সংখ্যা আউটপুট করা উচিত।
6
আপনার কাছে এখন একটি Dice
ক্লাস এবং একটি আসল ডাইস myFirstDice
রয়েছে যার 6 sides
রয়েছে।
এর পাশা রোল করা যাক!
ডাইস রোল তৈরি করুন
আপনি পূর্বে কেক স্তরগুলি মুদ্রণ করার জন্য একটি ফাংশন ব্যবহার করেছিলেন। রোলিং ডাইসও একটি ক্রিয়া যা একটি ফাংশন হিসাবে প্রয়োগ করা যেতে পারে। এবং যেহেতু সমস্ত ডাইস রোল করা যায়, আপনি Dice
ক্লাসের ভিতরে এটির জন্য একটি ফাংশন যোগ করতে পারেন। একটি ক্লাসের ভিতরে সংজ্ঞায়িত একটি ফাংশনকে একটি পদ্ধতিও বলা হয়।
-
Dice
ক্লাসে,sides
ভেরিয়েবলের নীচে, একটি ফাঁকা লাইন সন্নিবেশ করুন এবং তারপরে পাশা রোল করার জন্য একটি নতুন ফাংশন তৈরি করুন। কোটলিন কীওয়ার্ডfun
দিয়ে শুরু করুন, পদ্ধতির নাম অনুসরণ করুন, বন্ধনী()
দ্বারা অনুসরণ করুন, তারপরে কোঁকড়া ধনুর্বন্ধনী খোলা এবং বন্ধ করুন{}
। নীচে দেখানো হিসাবে আরও কোডের জন্য জায়গা তৈরি করতে আপনি কোঁকড়া ধনুর্বন্ধনীগুলির মধ্যে একটি ফাঁকা লাইন রেখে যেতে পারেন। আপনার ক্লাস এই মত হওয়া উচিত.
class Dice {
var sides = 6
fun roll() {
}
}
আপনি যখন একটি ছয়-পার্শ্বযুক্ত পাশা রোল করেন, তখন এটি 1 থেকে 6 এর মধ্যে একটি এলোমেলো সংখ্যা তৈরি করে।
-
roll()
পদ্ধতির ভিতরে, একটিval randomNumber
তৈরি করুন। এটিকে1..6
পরিসরে একটি এলোমেলো সংখ্যা বরাদ্দ করুন। রেঞ্জেrandom()
কল করতে ডট নোটেশন ব্যবহার করুন।
val randomNumber = (1..6).random()
- র্যান্ডম নম্বর তৈরি করার পরে, এটি কনসোলে প্রিন্ট করুন। আপনার সমাপ্ত
roll()
পদ্ধতিটি নীচের কোডের মতো হওয়া উচিত।
fun roll() {
val randomNumber = (1..6).random()
println(randomNumber)
}
- আসলে
myFirstDice
রোল করতে,main()
এ,myFirstDice
এroll()
পদ্ধতিতে কল করুন। আপনি "ডট নোটেশন" ব্যবহার করে একটি পদ্ধতি কল করুন। সুতরাং,myFirstDice
এরroll()
পদ্ধতিতে কল করার জন্য, আপনিmyFirstDice.roll()
টাইপ করুন যা "myFirstDice
dotroll()
" উচ্চারিত হয়।
myFirstDice.roll()
আপনার সম্পূর্ণ কোড এই মত হওয়া উচিত.
fun main() {
val myFirstDice = Dice()
println(myFirstDice.sides)
myFirstDice.roll()
}
class Dice {
var sides = 6
fun roll() {
val randomNumber = (1..6).random()
println(randomNumber)
}
}
- আপনার কোড চালান! আপনি পক্ষের সংখ্যার নীচে একটি এলোমেলো ডাইস রোলের ফলাফল দেখতে হবে। আপনার কোড বেশ কয়েকবার চালান, এবং লক্ষ্য করুন যে পাশের সংখ্যা একই থাকে এবং ডাইস রোল মান পরিবর্তন হয়।
6 4
অভিনন্দন! আপনি একটি sides
পরিবর্তনশীল এবং একটি roll()
ফাংশন সহ একটি Dice
ক্লাস সংজ্ঞায়িত করেছেন। main()
ফাংশনে, আপনি একটি নতুন Dice
অবজেক্ট ইনস্ট্যান্স তৈরি করেছেন এবং তারপরে আপনি একটি এলোমেলো সংখ্যা তৈরি করতে এটিতে roll()
পদ্ধতিটি কল করেছেন।
বর্তমানে আপনি আপনার roll()
ফাংশনে randomNumber
এর মান মুদ্রণ করছেন এবং এটি দুর্দান্ত কাজ করে! কিন্তু কখনও কখনও এটি ফাংশন বলা যাই হোক না কেন একটি ফাংশন ফলাফল ফেরত আরো দরকারী. উদাহরণস্বরূপ, আপনি একটি ভেরিয়েবলে roll()
পদ্ধতির ফলাফল বরাদ্দ করতে পারেন এবং তারপর সেই পরিমাণে একজন খেলোয়াড়কে সরাতে পারেন! দেখা যাক কিভাবে করা হয়.
-
main()
তেmyFirstDice.roll()
লেখা লাইনটি পরিবর্তন করুন।diceRoll
নামে একটিval
তৈরি করুন।roll()
পদ্ধতি দ্বারা প্রত্যাবর্তিত মানের সমান এটি সেট করুন।
val diceRoll = myFirstDice.roll()
এটি এখনও কিছু করে না, কারণ roll()
এখনও কিছু ফেরত দেয় না। এই কোডটি উদ্দেশ্য হিসাবে কাজ করার জন্য, roll()
কিছু ফেরত দিতে হবে।
পূর্ববর্তী কোডল্যাবগুলিতে আপনি শিখেছেন যে ফাংশনে ইনপুট আর্গুমেন্টের জন্য আপনাকে একটি ডেটা টাইপ নির্দিষ্ট করতে হবে। একইভাবে, আপনাকে ডেটার জন্য একটি ডেটা টাইপ নির্দিষ্ট করতে হবে যা একটি ফাংশন প্রদান করে।
- কোন ধরনের ডেটা ফেরত দেওয়া হবে তা নির্দিষ্ট করতে
roll()
ফাংশন পরিবর্তন করুন। এই ক্ষেত্রে, র্যান্ডম সংখ্যা একটিInt
, তাই রিটার্ন টাইপ হলInt
। রিটার্ন টাইপ নির্দিষ্ট করার জন্য সিনট্যাক্স হল: ফাংশনের নামের পরে, বন্ধনীর পরে, একটি কোলন, স্পেস এবং তারপরে ফাংশনের রিটার্ন টাইপের জন্যInt
কীওয়ার্ড যোগ করুন। ফাংশন সংজ্ঞা নীচের কোড মত হওয়া উচিত.
fun roll(): Int {
- এই কোড চালান. আপনি সমস্যা ভিউতে একটি ত্রুটি দেখতে পাবেন। এটা বলে:
A ‘return' expression is required in a function with a block body.
আপনি একটি Int
ফেরত দিতে ফাংশনের সংজ্ঞা পরিবর্তন করেছেন, কিন্তু সিস্টেমটি অভিযোগ করছে যে আপনার
কোড আসলে একটি Int
ফেরত দেয় না। "ব্লক বডি" বা "ফাংশন বডি" একটি ফাংশনের কোঁকড়া ধনুর্বন্ধনীর মধ্যে থাকা কোডকে বোঝায়। আপনি ফাংশন বডির শেষে একটি return
স্টেটমেন্ট ব্যবহার করে একটি ফাংশন থেকে একটি মান ফেরত দিয়ে এই ত্রুটিটি ঠিক করতে পারেন।
-
roll()
এ,println()
স্টেটমেন্টটি সরিয়ে দিন এবংrandomNumber
জন্যreturn
স্টেটমেন্ট দিয়ে প্রতিস্থাপন করুন। আপনারroll()
ফাংশন নিচের কোডের মত দেখতে হবে।
fun roll(): Int {
val randomNumber = (1..6).random()
return randomNumber
}
-
main()
এ ডাইসের পাশের জন্য প্রিন্ট স্টেটমেন্টটি সরিয়ে দিন। - একটি তথ্যপূর্ণ বাক্যে
sides
এবংdiceRoll
মান প্রিন্ট করার জন্য একটি বিবৃতি যোগ করুন। আপনার সমাপ্তmain()
ফাংশন নিচের কোডের মত দেখতে হবে।
fun main() {
val myFirstDice = Dice()
val diceRoll = myFirstDice.roll()
println("Your ${myFirstDice.sides} sided dice rolled ${diceRoll}!")
}
- আপনার কোড চালান এবং আপনার আউটপুট এই মত হওয়া উচিত।
Your 6 sided dice rolled 4!
এখন পর্যন্ত আপনার সমস্ত কোড এখানে।
fun main() {
val myFirstDice = Dice()
val diceRoll = myFirstDice.roll()
println("Your ${myFirstDice.sides} sided dice rolled ${diceRoll}!")
}
class Dice {
var sides = 6
fun roll(): Int {
val randomNumber = (1..6).random()
return randomNumber
}
}
সব পাশা 6 দিক নেই! পাশা সব আকার এবং আকারে আসে: 4 দিক, 8 দিক, 120 দিক পর্যন্ত!
- আপনার
Dice
ক্লাসে, আপনারroll()
পদ্ধতিতে, পরিবর্তেsides
ব্যবহার করতে হার্ড-কোডেড1..6
পরিবর্তন করুন, যাতে পরিসীমা এবং এইভাবে র্যান্ডম নম্বর রোল করা হয়, সর্বদা পক্ষের সংখ্যার জন্য সঠিক হবে।
val randomNumber = (1..sides).random()
-
main()
ফাংশনে, ডাইস রোলটি প্রিন্ট করার নিচে এবং পরে, আমারFirstDice
sides
পরিবর্তন করে 20 এ সেট করুন।
myFirstDice.sides = 20
- যেখানে আপনি পাশের সংখ্যা পরিবর্তন করেছেন তার পরে নীচে বিদ্যমান প্রিন্ট স্টেটমেন্টটি অনুলিপি করুন এবং আটকান।
-
myFirstDice
এroll()
পদ্ধতিতে কল করার ফলাফল প্রিন্ট করার সাথেdiceRoll
এর প্রিন্টিং প্রতিস্থাপন করুন।
println("Your ${myFirstDice.sides} sided dice has rolled a ${myFirstDice.roll()}!")
আপনার প্রোগ্রাম এই মত দেখতে হবে.
fun main() {
val myFirstDice = Dice()
val diceRoll = myFirstDice.roll()
println("Your ${myFirstDice.sides} sided dice rolled ${diceRoll}!")
myFirstDice.sides = 20
println("Your ${myFirstDice.sides} sided dice rolled ${myFirstDice.roll()}!")
}
class Dice {
var sides = 6
fun roll(): Int {
val randomNumber = (1..sides).random()
return randomNumber
}
}
- আপনার প্রোগ্রামটি চালান এবং আপনি 6-পার্শ্বযুক্ত পাশার জন্য একটি বার্তা এবং 20-পার্শ্বযুক্ত পাশার জন্য একটি দ্বিতীয় বার্তা দেখতে পাবেন।
Your 6 sided dice rolled 3! Your 20 sided dice rolled 15!
একটি বর্গ ধারণা একটি জিনিস প্রতিনিধিত্ব করা হয়, প্রায়ই বাস্তব বিশ্বের কিছু শারীরিক. এই ক্ষেত্রে, একটি Dice
ক্লাস একটি শারীরিক পাশা প্রতিনিধিত্ব করে। বাস্তব জগতে, পাশা তাদের পক্ষের সংখ্যা পরিবর্তন করতে পারে না। আপনি যদি একটি ভিন্ন সংখ্যক পক্ষ চান তবে আপনাকে একটি ভিন্ন পাশা পেতে হবে। প্রোগ্রামগতভাবে, এর মানে হল যে একটি বিদ্যমান Dice
অবজেক্ট ইন্সট্যান্সের সাইড প্রোপার্টি পরিবর্তন করার পরিবর্তে, আপনার প্রয়োজনীয় দিকগুলির সংখ্যা সহ একটি নতুন ডাইস অবজেক্ট ইনস্ট্যান্স তৈরি করা উচিত।
এই টাস্কে, আপনি Dice
ক্লাসটি পরিবর্তন করতে যাচ্ছেন যাতে আপনি একটি নতুন উদাহরণ তৈরি করার সময় পাশের সংখ্যা নির্দিষ্ট করতে পারেন। পক্ষের সংখ্যার জন্য একটি যুক্তি গ্রহণ করতে Dice
শ্রেণীর সংজ্ঞা পরিবর্তন করুন। এটি একটি ফাংশন কিভাবে ইনপুট জন্য আর্গুমেন্ট গ্রহণ করতে পারে অনুরূপ.
-
numSides
নামক একটি পূর্ণসংখ্যা যুক্তি গ্রহণ করতেDice
শ্রেণীর সংজ্ঞা পরিবর্তন করুন। আপনার ক্লাসের ভিতরের কোড পরিবর্তন হয় না।
class Dice(val numSides: Int) {
// Code inside does not change.
}
-
Dice
ক্লাসের ভিতরে,sides
ভেরিয়েবল মুছুন, যেহেতু আপনি এখনnumSides
ব্যবহার করতে পারেন। - এছাড়াও,
numSides
ব্যবহার করার জন্য পরিসীমা ঠিক করুন।
আপনার Dice
ক্লাস এই মত হওয়া উচিত.
class Dice (val numSides: Int) {
fun roll(): Int {
val randomNumber = (1..numSides).random()
return randomNumber
}
}
আপনি যদি এই কোডটি চালান তবে আপনি অনেক ত্রুটি দেখতে পাবেন, কারণ আপনাকে Dice
ক্লাসের পরিবর্তনগুলির সাথে কাজ করার জন্য main()
আপডেট করতে হবে।
-
main()
তে, 6টি দিক দিয়েmyFirstDice
তৈরি করতে, আপনাকে এখনDice
ক্লাসের আর্গুমেন্ট হিসাবে পাশের সংখ্যাটি পাস করতে হবে, যেমনটি নীচে দেখানো হয়েছে।
val myFirstDice = Dice(6)
- প্রিন্ট স্টেটমেন্টে,
sides
পরিবর্তন করেnumSides
করুন। - এর নীচে, কোডটি মুছে ফেলুন যা 20-এ
sides
পরিবর্তন করে, কারণ সেই ভেরিয়েবলটি আর বিদ্যমান নেই। - এটির নীচে
println
স্টেটমেন্টটিও মুছুন।
আপনার main()
ফাংশনটি নীচের কোডের মতো হওয়া উচিত এবং আপনি যদি এটি চালান তবে কোনও ত্রুটি থাকা উচিত নয়।
fun main() {
val myFirstDice = Dice(6)
val diceRoll = myFirstDice.roll()
println("Your ${myFirstDice.numSides} sided dice rolled ${diceRoll}!")
}
- প্রথম ডাইস রোলটি প্রিন্ট করার পর,
mySecondDice
নামে একটি দ্বিতীয়Dice
অবজেক্ট তৈরি করতে এবং 20 দিক দিয়ে প্রিন্ট করতে কোড যোগ করুন।
val mySecondDice = Dice(20)
- একটি মুদ্রণ বিবৃতি যোগ করুন যা প্রত্যাবর্তিত মানটি রোল এবং প্রিন্ট করে।
println("Your ${mySecondDice.numSides} sided dice rolled ${mySecondDice.roll()}!")
- আপনার সমাপ্ত
main()
ফাংশন এই মত হওয়া উচিত.
fun main() {
val myFirstDice = Dice(6)
val diceRoll = myFirstDice.roll()
println("Your ${myFirstDice.numSides} sided dice rolled ${diceRoll}!")
val mySecondDice = Dice(20)
println("Your ${mySecondDice.numSides} sided dice rolled ${mySecondDice.roll()}!")
}
class Dice (val numSides: Int) {
fun roll(): Int {
val randomNumber = (1..numSides).random()
return randomNumber
}
}
- আপনার সমাপ্ত প্রোগ্রাম চালান, এবং আপনার আউটপুট এই মত হওয়া উচিত.
Your 6 sided dice rolled 5! Your 20 sided dice rolled 7!
কোড লেখার সময়, সংক্ষিপ্ত করা ভাল। আপনি randomNumber
ভেরিয়েবল থেকে পরিত্রাণ পেতে পারেন এবং সরাসরি র্যান্ডম সংখ্যা ফেরত দিতে পারেন।
- এলোমেলো নম্বর সরাসরি ফেরত দিতে
return
স্টেটমেন্ট পরিবর্তন করুন।
fun roll(): Int {
return (1..numSides).random()
}
দ্বিতীয় মুদ্রণ বিবৃতিতে, আপনি স্ট্রিং টেমপ্লেটে র্যান্ডম নম্বর পেতে কল করেছেন। আপনি প্রথম প্রিন্ট স্টেটমেন্টে একই জিনিস করে diceRoll
ভেরিয়েবল থেকে পরিত্রাণ পেতে পারেন।
- স্ট্রিং টেমপ্লেটে
myFirstDice.roll()
কল করুন এবংdiceRoll
ভেরিয়েবল মুছে দিন। আপনার main() কোডের প্রথম দুটি লাইন এখন এইরকম দেখাচ্ছে।
val myFirstDice = Dice(6)
println("Your ${myFirstDice.numSides} sided dice rolled ${myFirstDice.roll()}!")
- আপনার কোড চালান এবং আউটপুটে কোন পার্থক্য থাকা উচিত নয়।
এটি রিফ্যাক্টর করার পরে এটি আপনার চূড়ান্ত কোড।
fun main() {
val myFirstDice = Dice(6)
println("Your ${myFirstDice.numSides} sided dice rolled ${myFirstDice.roll()}!")
val mySecondDice = Dice(20)
println("Your ${mySecondDice.numSides} sided dice rolled ${mySecondDice.roll()}!")
}
class Dice (val numSides: Int) {
fun roll(): Int {
return (1..numSides).random()
}
}
fun main() {
val myFirstDice = Dice(6)
val diceRoll = myFirstDice.roll()
println("Your ${myFirstDice.numSides} sided dice rolled ${diceRoll}!")
val mySecondDice = Dice(20)
println("Your ${mySecondDice.numSides} sided dice rolled ${mySecondDice.roll()}!")
}
class Dice (val numSides: Int) {
fun roll(): Int {
return (1..numSides).random()
}
}
- একটি র্যান্ডম নম্বর তৈরি করতে একটি
IntRange
এrandom()
ফাংশনটি কল করুন:(1..6).random()
- ক্লাস একটি বস্তুর একটি ব্লুপ্রিন্ট মত. তাদের বৈশিষ্ট্য এবং আচরণ থাকতে পারে, ভেরিয়েবল এবং ফাংশন হিসাবে প্রয়োগ করা হয়।
- একটি ক্লাসের একটি উদাহরণ একটি বস্তুর প্রতিনিধিত্ব করে, প্রায়ই একটি ভৌত বস্তু, যেমন একটি পাশা। আপনি বস্তুর কর্ম কল এবং এর বৈশিষ্ট্য পরিবর্তন করতে পারেন.
- আপনি ক্লাসের সংজ্ঞার জন্য একটি আর্গুমেন্ট উল্লেখ করে একটি উদাহরণ তৈরি করার সময় আপনি একটি ক্লাসে ইনপুট দিতে পারেন। উদাহরণস্বরূপ:
class Dice(val numSides: Int)
এবং তারপরেDice(6)
দিয়ে একটি উদাহরণ তৈরি করুন। - ফাংশন কিছু ফেরত দিতে পারে. ফাংশনের সংজ্ঞায় ফেরত দেওয়া ডেটা টাইপ নির্দিষ্ট করুন এবং কিছু ফেরত দিতে ফাংশন বডিতে একটি
return
স্টেটমেন্ট ব্যবহার করুন। উদাহরণস্বরূপ:fun example(): Int { return 5 }
নিম্নলিখিতগুলি করুন:
- আপনার
Dice
ক্লাসকে রঙের আরেকটি বৈশিষ্ট্য দিন এবং বিভিন্ন সংখ্যক পাশ এবং রঙের সাথে ডাইসের একাধিক উদাহরণ তৈরি করুন! - একটি
Coin
ক্লাস তৈরি করুন, এটি ফ্লিপ করার ক্ষমতা দিন, ক্লাসের একটি উদাহরণ তৈরি করুন এবং কিছু কয়েন ফ্লিপ করুন! কয়েন ফ্লিপ করার জন্য আপনি কীভাবে একটি পরিসরের সাথে র্যান্ডম() ফাংশন ব্যবহার করবেন?