Microsoft Small Basic প্রোগ্রামিং [পর্ব-০৭] :: Shapes Object Part 2

Microsoft Small Basic প্রোগ্রামিং চেইন টিউনের ৭ম পর্বে সবাইকে স্বাগতম। আজকের পর্বে আমরা Shapes অবজেক্ট সম্পর্কে আরও বিস্তারিত জানবো। ইতমধ্যে আপনারা Shapes অবজেক্টের AddRectangle, HideShape, ShowShape, SetOpacity এবং Move অপারেশন প্রোগ্রমের মধ্যে শিখে ফেলেছেন। এবার চলুন আরেকটি প্রোগ্রাম লিখে ফেলি এবং Shapes অবজেক্টের আরও কিছু অপারেশন শিখে নিই। আমরা এই প্রোগ্রামে মূলত ছবি নিয়ে খেলা করবো।

GraphicsWindow.BackgroundColor = "steelblue"
imagepath = "D:\Images\bird1.JPG"
image = Shapes.AddImage(imagepath)
Shapes.Animate(image,80,50,1000)
Shapes.Zoom(image,0.1,0.1)
For i=0 To 1 Step 0.1
    Program.Delay(1000)
Shapes.Zoom(image, 0.1 + i,0.1+i)
EndFor

আউটপুটে কি দেখতে পারলেন? আর আপনি কি বুঝলেন? আচ্ছা আমি বরাবরের মতো ব্যাখ্যাগুলো বুঝিয়ে দেবার চেষ্টা করছি।

  • প্রথমেই আমরা আমাদের গ্রাফিক্স উইন্ডের ব্যাকগ্রাউন্ড তৈরী করে নিলাম।
  • আমরা যেহেতু ছবি নিয়ে খেলা করবো তাই আমাদের ছবি ইনপুট করা লাগবে। এজন্য আমাদের ছবির ঠিকানা আমরা imagepath নামক ভেরিয়েবলে জমা রাখলাম।
  • এরপরের স্টেটমেন্টে আমাদের ছবিটি আমাদের গ্রাফিক্সউইন্ডে শেপ আকারে অ্যাড করলাম। এই ছবিটির নাম দিলাম আমরা image. পরবর্তীতে প্রোগ্রামের অন্যান্য যায়গায় আমরা এই image কে ব্যাবহার করবো। যে কোন ইমেজ শেপ আকারে অ্যাড করার জন্য আমরা Shapes.AddImage(ImageAddress) syntax ব্যাবহার করবো। যেহেতু আমাদের ছবির ঠিকানা আমরা imagepath নামক ভেরিয়েবলে জমা রেখেছি তাই এখানে আমরা Shapes.AddImage(imagepath) লিখেছি। নতুবা আমি এভাবে লিখতামঃ Shapes.AddImage("D:\Images\bird1.JPG")
  • এরপরেই আমরা নতুন আরেকটি অপারেশনের দেখা পেলাম তা হলো Animate. এটি আসলে Move অপারেশনের অনুরূপ। কিন্তু পার্থক্য হলো এটি তে সময় বেধে দেওয়া হয়। আর সেই সময় অনুযায়ী আমরা অ্যানিমেশনের মতো দেখতে পাই। Animate অপারেশনের Syntax হলো Shapes.Animate(shapename, x, y, duration) . এখানে shapename হলো আমরা যে শেপের জন্য অ্যানিমেশন দেখতে চাই তার নাম। x হলো x অক্ষ থেকে দূরত্ব বা নতুন অবস্থান এবং একইভাবে y হলো y অক্ষ থেকে দূরত্ব বা নতুন অবস্থান। এখানে duration হলো অ্যানিমেশনটি কতক্ষন ধরে চলবে তার সময়  মিলিসেকেন্ড এককে। আমি প্রোগ্রামে লিখেছি Shapes.Animate(image,80,50,1000) অর্থাৎ image নামক শেপটির জন্য অ্যানিমেশন হবে এবং x অক্ষ থেকে 80 পিক্সেল ও y অক্ষ থেকে 50 পিক্সেল দূরে যাবে। এবং প্রোগ্রামটি ১ সেকেন্ড বা ১০০০ মিলিসেকেন্ড ধরে চলবে। এই অ্যানিমেশন চলাকালীন সময় পরের স্টেটমেন্টও এক্সিকিউট হতে পারে।
  • এবার আমরা আরেকটি নতুন অপারেশনের দেখা পেলাম। এর নাম Zoom অপারেশন। এর মাধ্যমে আমরা যে কোন শেপকে zoom in বা zoom out করতে পারি। এর syntax হলো Shapes.Zoom(ShapeName, x, y) এখানে ShapeName হলো শেপের নাম, এবং x ও y হলো যথাক্রমে x ও y অক্ষ বরাবর জুম লেভেল। জুম লেভেলের সীমা হলো 0.1 থেকে 20 পর্যন্ত। x ও y এর মান উভয়ই 1 হলে তা হবে মূল শেপ বা জুম ছাড়া। আমরা আমাদের প্রোগ্রামে লিখেছি Shapes.Zoom(image, 0.1, 0.1) অর্থাৎ আমরা মূলত আমাদের ছবিটাকে জুম আউট করে দশ ভাগের এক ভাগে নিয়ে আসলাম।
  • এবার আমরা ছবিটাকে আগের অবস্থায় অর্থৎ পূর্ণাঙ্গ আকারে নিয়ে যাবো। এক্ষেত্রে আমরা লুপ ব্যাবহার করছি একটি সুন্দর Blink ইফেক্ট তৈরী করার জন্য। এক্ষেত্রে আমরা আমাদের ভেরিয়েবল i এর মান 0.1 থেকে শুরু করে 1 পর্যন্ত দিয়েছি। এবং Step দিয়েছি 0.1 অর্থাৎ প্রতিবার i এর মান 0.1 করে বৃদ্ধি পাবে।
  • এবারে আমরা লুপের ভিতর প্রথম স্টেটমেন্টটিতে প্রোগ্রামটিকে 1 সেকেন্ড বা 1000 মিলিসেকেন্ড ডিলে করিয়েছি।
  • এরপরের স্টেটমেন্টের মাধ্যমে আমরা আমাদের ছবিকে জুম ইন করেছি।
  • এভাবে আমরা আমাদের ছবিটাকে ছোট থেকে বড় করলাম। আমার প্রোগ্রামটির আউটপুট নিচে দিলাম 🙂

এবার আপনি যদি ছবিটাকে ছোট থেকে বড় করার পর আবার বড় থেকে ছোট করতে চান তাহলে প্রোগ্রামের শেষে নিচের অংশটুকু যুক্ত করে দিন।

For i=0 To 1 Step 0.1
Program.Delay(1000)
Shapes.Zoom(image, 1 - i, 1-i)
EndFor

আবার আপনি যদি আজীবন ছোট থেকে বড় আবার বড় থেকে ছোট করতে চান তাহলে Branching এর সহায়তা নিতে পারেন। অর্থাৎ Goto ব্যাবহার করতে পারেন।

আমাদের যতো ইচ্ছা ততগুলো শেপ আমরা আমাদের প্রোগ্রামে ব্যাবহার করতে পারি। এজন্য নিচেরে উদাহরনটি লক্ষনীয়।

GraphicsWindow.Title = "Exploring Shapes"
GraphicsWindow.Height = 350
GraphicsWindow.Width = 450
GraphicsWindow.PenWidth = 2
GraphicsWindow.PenColor = "Black"
GraphicsWindow.BrushColor = "Purple"
rectangle1 = Shapes.AddRectangle(100, 100)
Shapes.Move(rectangle1, 50, 80)
rectangle2 = Shapes.AddRectangle(100, 100)
Shapes.Move(rectangle2, 300, 80)
startloop:
For i = 1 To 4
Program.Delay(1000)
    Shapes.Zoom(rectangle1, i * 0.4, i * 0.4)
Shapes.SetOpacity(rectangle1, i * 5)
EndFor
Goto startloop

উপরের প্রোগ্রামে আমরা দুটি আয়ত তৈরী করেছি। এবং একটিতে Zoom ও Opacity অপারেশন অ্যাপ্লাই করেছি।

শেপ রোটেট করা

আমরা Shapes অবজেক্টের Rotate অপারেশনের মাধ্যমে যেকোন শেপ রোটেট করতে পারি। এজন্য নিচের উদাহরনটি দেখুন।

GraphicsWindow.Title = "Exploring Shapes"
GraphicsWindow.BrushColor = "Purple"
rotateshape = Shapes.AddRectangle(150, 100)
Shapes.Move(rotateshape, 200, 150)
Shapes.Rotate(rotateshape,30)

রোটেট করার সীনট্যাক্স হলো Shapes.Rotate(ShapeName, angle)। আমাদের প্রোগ্রামে আমরা শেপের নাম দিয়েছি rotateshape এবং angle (কোণ) দিয়েছি 30 (degree). তাই আমরা আউটপুট এরকম দেখতে পারবো।

আমরা এখানে For লুপ ব্যাবহার করে আমাদের শেপটিকে রোটেট করে আবার পূর্বের অবস্থানে নিয়ে আসতে পারি। এজন্য আমরা পূর্বের উদাহরনটি নিচের মতো লিখতে পারি।

GraphicsWindow.Title = "Exploring Shapes"
GraphicsWindow.BrushColor = "Purple"
rotateshape = Shapes.AddRectangle(150, 100)
Shapes.Move(rotateshape, 200, 150)
For i = 0 To 12
    Shapes.Rotate(rotateshape, 30 * i)
    Program.Delay(1000)
EndFor

আজ এই পর্যন্ত থাকুক। বুঝতে কোন সমস্যা হলে মন্তব্য করার অনুরোধ রইলো।

Level New

আমি সাকিব। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 14 বছর 7 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 21 টি টিউন ও 154 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 1 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।

প্রথম সেমিস্টার, প্রথম বর্ষ, কম্পিউটার বিজ্ঞান ও প্রকৌশল বিভাগ, বেগম রোকেয়া বিশ্ববিদ্যালয়, রংপুর।


টিউনস


আরও টিউনস


টিউনারের আরও টিউনস


টিউমেন্টস

আচ্ছালামুআলাইকুম সাকিব ভাই, আপনার টিটি থেকে আমি অনেক উপকৃত হচ্ছি, আপনার সহজ উপস্থাপনায় আমার প্রোগ্রামিংয়ের ভিতি অনেকাংশেই দুর হয়েছে। after all ur teaching capacity is very ol. plz go on……

    @Md. Rokibul Huq: আপনার মন্তব্য থেকে টিউন করার অনেক অনুপ্রেরণা পেলাম। আপনাকেও ধন্যবাদ 🙂