প্যাসক্যাল প্রোগ্রামিং ভাষা মূলত কনসোল (text-based) প্রোগ্রামিংয়ের জন্য তৈরি হলেও, গ্রাফিক্স প্রোগ্রামিংয়ের জন্যও বেশ কিছু ফিচার রয়েছে। প্যাসক্যালের Graph ইউনিটের মাধ্যমে সহজেই গ্রাফিক্স ড্রয়িং এবং ভিজ্যুয়াল ইফেক্ট তৈরি করা সম্ভব। এটি বিশেষভাবে ডস (DOS) পরিবেশে জনপ্রিয় ছিল, কিন্তু বর্তমানে আধুনিক প্যাসক্যাল কম্পাইলারেও গ্রাফিক্সের জন্য সাপোর্ট রয়েছে।
গ্রাফিক্স প্রোগ্রামিংয়ের জন্য প্রাথমিক সেটআপ
প্যাসক্যালের গ্রাফিক্স ফিচারটি সাধারণত Graph ইউনিটের মাধ্যমে পাওয়া যায়। এটি প্যাকেজ হিসেবে সরবরাহ করা হয়, যা আপনাকে পিক্সেল-ভিত্তিক গ্রাফিক্স তৈরি করতে সক্ষম করে।
প্যাসক্যাল গ্রাফিক্স প্রোগ্রামিংয়ের জন্য সাধারণ সিনট্যাক্স:
uses Graph; {গ্রাফিক্স ইউনিট ইনক্লুড করা হয়েছে}এটি প্যাসক্যাল প্রোগ্রামে গ্রাফিক্স ফিচার ব্যবহার করার জন্য প্রয়োজনীয় ইউনিট যোগ করার কাজ করবে।
গ্রাফিক্সের জন্য প্রাথমিক সেটআপ এবং স্ক্রিন মোড নির্বাচন
গ্রাফিক্স মোডে কাজ করার জন্য প্রথমে স্ক্রিনের গ্রাফিক্স মোড সেট করতে হবে। সাধারণত initgraph ফাংশনটি ব্যবহার করে গ্রাফিক্স মোড এবং ড্রাইভার ইনিশিয়ালাইজ করা হয়।
সিনট্যাক্স:
initgraph(graphdriver, graphmode, path);- graphdriver: এটি গ্রাফিক্স ড্রাইভারের প্রকার।
- graphmode: এটি গ্রাফিক্স মোড।
- path: গ্রাফিক্স ড্রাইভারের পাথ (অধিকাংশ সময় এটি প্রয়োজনীয় নয়, এবং ডিফল্ট পাথ যথেষ্ট থাকে)।
উদাহরণ:
program GraphicsExample;
uses Graph;
var
gd, gm: Integer; {গ্রাফিক্স ড্রাইভার এবং মোড}
begin
gd := Detect; {অটোমেটিক ড্রাইভার শনাক্ত করা হবে}
initgraph(gd, gm, ''); {গ্রাফিক্স মোড ইনিশিয়ালাইজ করা হচ্ছে}
if GraphResult <> grOk then {যদি গ্রাফিক্স মোড ইনিশিয়ালাইজ না হয়}
begin
writeln('Graphics mode initialization failed');
halt; {প্রোগ্রাম থামিয়ে দেয়া হচ্ছে}
end;
{এখন গ্রাফিক্স ড্রইং করা যাবে}
rectangle(100, 100, 200, 200); {একটি আয়তক্ষেত্র আঁকা হচ্ছে}
readln; {কিছু সময় অপেক্ষা করুন, তারপর গ্রাফিক্স উইন্ডো বন্ধ হবে}
closegraph; {গ্রাফিক্স মোড বন্ধ করা হচ্ছে}
end.উপরের প্রোগ্রামটি গ্রাফিক্স মোডে একটি আয়তক্ষেত্র আঁকবে।
গ্রাফিক্স প্রোগ্রামিংয়ের মৌলিক ফাংশন
প্যাসক্যাল গ্রাফিক্স প্রোগ্রামিংয়ের জন্য বিভিন্ন গ্রাফিক্যাল ফাংশন উপলব্ধ। কিছু গুরুত্বপূর্ণ ফাংশনের উদাহরণ:
line(x1, y1, x2, y2): দুটি বিন্দু (x1, y1) থেকে (x2, y2) পর্যন্ত একটি সোজা রেখা আঁকতে ব্যবহৃত হয়।
উদাহরণ:
line(50, 50, 200, 50); {একটি সোজা রেখা আঁকা হচ্ছে}rectangle(x1, y1, x2, y2): দুটি কোঅর্ডিনেট (x1, y1) এবং (x2, y2) ব্যবহার করে একটি আয়তক্ষেত্র আঁকতে ব্যবহৃত হয়।
উদাহরণ:
rectangle(100, 100, 200, 200); {একটি আয়তক্ষেত্র আঁকা হচ্ছে}circle(x, y, radius): নির্দিষ্ট স্থান (x, y) থেকে একটি বৃত্ত আঁকতে ব্যবহৃত হয়।
উদাহরণ:
circle(150, 150, 50); {একটি বৃত্ত আঁকা হচ্ছে}setcolor(color): নির্দিষ্ট রং দিয়ে অঙ্কন করতে ব্যবহৃত হয়।
colorমানটি একটি পূর্বনির্ধারিত রং হতে হবে।উদাহরণ:
setcolor(RED); {লাল রঙ ব্যবহার করা হচ্ছে} rectangle(50, 50, 200, 200); {লাল রঙে একটি আয়তক্ষেত্র আঁকা হচ্ছে}fillcolor(color): বর্ণিত আকারের মধ্যে রঙ ভরাট করতে ব্যবহৃত হয়।
উদাহরণ:
setcolor(RED); fillcolor(YELLOW); {হলুদ রঙে পূর্ণ করা হবে} rectangle(50, 50, 200, 200); {আয়তক্ষেত্রটি লাল রঙে আকা হবে এবং হলুদ দিয়ে পূর্ণ হবে}
প্যাটার্ন ড্রয়িং এবং গ্রাফিক্স ফাংশন
আপনি গ্রাফিক্স প্রোগ্রামিংয়ের মাধ্যমে প্যাটার্ন ড্রইং, সীমানা নির্ধারণ, মাউস ব্যবহারের ইন্টারঅ্যাকশন এবং আরও অনেক কিছু করতে পারেন। উদাহরণস্বরূপ, একটি চলন্ত বৃত্ত আঁকা:
program MovingCircle;
uses Graph;
var
gd, gm: Integer;
x, y, dx, dy: Integer;
begin
gd := Detect;
initgraph(gd, gm, '');
x := 100; {বৃত্তের প্রাথমিক অবস্থান}
y := 100;
dx := 2; {বৃত্তের গতির দিক}
dy := 2;
while not KeyPressed do
begin
cleardevice; {স্ক্রীন পরিষ্কার করা হচ্ছে}
circle(x, y, 20); {বৃত্ত আঁকা হচ্ছে}
{বৃত্তের অবস্থান আপডেট করা হচ্ছে}
x := x + dx;
y := y + dy;
{দেওয়াল স্পর্শ হলে গতির দিক পরিবর্তন করা হচ্ছে}
if (x > GetMaxX) or (x < 0) then
dx := -dx;
if (y > GetMaxY) or (y < 0) then
dy := -dy;
delay(10); {একটু বিরতি নিয়ে চলাচল}
end;
closegraph;
end.এই প্রোগ্রামটি একটি চলন্ত বৃত্ত দেখাবে যা স্ক্রীনে সীমানা স্পর্শ করলে তার দিক পরিবর্তন করবে।
সারাংশ
প্যাসক্যালের গ্রাফিক্স প্রোগ্রামিংয়ের মাধ্যমে সহজে ভিজ্যুয়াল উপাদান তৈরি করা সম্ভব। Graph ইউনিট ব্যবহার করে বিভিন্ন গ্রাফিক্যাল শেপ, যেমন রেখা, আয়তক্ষেত্র, বৃত্ত ইত্যাদি আঁকা যায়। এটি ইন্টারেকটিভ অ্যাপ্লিকেশন এবং ভিজ্যুয়াল প্রদর্শনী তৈরি করার জন্য উপযুক্ত। initgraph, closegraph, line, rectangle, circle সহ অন্যান্য গ্রাফিক্যাল ফাংশনগুলো ব্যবহার করে আপনি গ্রাফিক্সের মাধ্যমে প্রোগ্রামিংয়ের দিকগুলি আরও চমকপ্রদভাবে উপস্থাপন করতে পারেন।
প্যাসক্যাল ভাষায় গ্রাফিক্স (Graphics) তৈরি করার জন্য সাধারণত Graph ইউনিট ব্যবহৃত হয়। এটি আপনাকে সরল ছবি, আকার, রেখা, বৃত্ত এবং অন্যান্য গ্রাফিক্যাল উপাদান তৈরি করতে সাহায্য করে। প্যাসক্যালের গ্রাফিক্স ইউনিটের মাধ্যমে আপনি গ্রাফিক্সের বিভিন্ন ধরণের অপারেশন যেমন ড্রইং, শেডিং, রং নির্বাচন এবং আরও অনেক কিছু করতে পারেন।
১. গ্রাফিক্স ব্যবহার শুরু করা
প্যাসক্যাল ভাষায় গ্রাফিক্স ব্যবহার করতে আপনাকে Graph ইউনিট এবং InitGraph ফাংশনটি ব্যবহার করতে হয়। এর মাধ্যমে আপনি গ্রাফিক্স মোডে প্রবেশ করবেন এবং গ্রাফিক্যাল ক্যানভাসে ড্রইং করতে পারবেন।
গ্রাফিক্স ইউনিটের ইনক্লুড করা
প্রথমেই আপনাকে Graph ইউনিটটি প্রোগ্রামে অন্তর্ভুক্ত করতে হবে।
uses Graph;গ্রাফিক্স মোড ইনিশিয়ালাইজ করা
গ্রাফিক্স মোডে প্রবেশ করতে InitGraph ফাংশন ব্যবহার করা হয়, যা গ্রাফিক্স ড্রাইভার এবং গ্রাফিক্স মোড সেটআপ করে।
সিনট্যাক্স:
InitGraph(GraphicsDriver, GraphicsMode, 'C:\TP\BGI');এখানে:
GraphicsDriverএবংGraphicsModeহল গ্রাফিক্স ড্রাইভার এবং মোড।'C:\TP\BGI'হলBGIফোল্ডারের পাথ, যেখানে গ্রাফিক্স ড্রাইভার এবং ডেটা ফাইল থাকে (এই পাথটি আপনার সিস্টেমের উপর নির্ভর করবে)।
২. গ্রাফিক্সের মধ্যে বিভিন্ন আকৃতি তৈরি করা
১. লেখা ড্রয়িং (Drawing Text)
আপনি গ্রাফিক্সে টেক্সটও ড্রইং করতে পারেন।
উদাহরণ:
program GraphicsExample;
uses Graph;
begin
InitGraph(GraphicsDriver, GraphicsMode, 'C:\TP\BGI'); { গ্রাফিক্স মোড শুরু করা }
SetColor(White); { সাদা রঙ নির্বাচন করা }
OutTextXY(100, 100, 'Hello, Pascal Graphics!'); { গ্রাফিক্স ক্যানভাসে টেক্সট লেখা }
ReadLn; { স্ক্রীন বন্ধ না হওয়া পর্যন্ত অপেক্ষা করা }
CloseGraph; { গ্রাফিক্স মোড বন্ধ করা }
end.এখানে, OutTextXY ফাংশনটি টেক্সট প্রদর্শনের জন্য ব্যবহৃত হয়েছে, যেখানে 100, 100 পজিশন থেকে "Hello, Pascal Graphics!" টেক্সট প্রদর্শিত হবে।
২. রেখা ড্রয়িং (Drawing a Line)
আপনি গ্রাফিক্সে রেখা আঁকতেও পারেন।
উদাহরণ:
program GraphicsExample;
uses Graph;
begin
InitGraph(GraphicsDriver, GraphicsMode, 'C:\TP\BGI');
SetColor(Red); { লাল রঙ নির্বাচন করা }
Line(50, 50, 200, 200); { ৫০,৫০ থেকে ২০০,২০০ পয়েন্ট পর্যন্ত একটি লাইন আঁকা }
ReadLn;
CloseGraph;
end.এখানে, Line ফাংশনটি দুটি পয়েন্টের মধ্যে একটি রেখা আঁকতে ব্যবহার করা হয়েছে। 50, 50 এবং 200, 200 হল লাইনটির শুরু এবং শেষ পয়েন্ট।
৩. বৃত্ত আঁকা (Drawing a Circle)
গ্রাফিক্সে বৃত্ত আঁকার জন্য Circle ফাংশন ব্যবহার করা হয়।
উদাহরণ:
program GraphicsExample;
uses Graph;
begin
InitGraph(GraphicsDriver, GraphicsMode, 'C:\TP\BGI');
SetColor(Blue); { নীল রঙ নির্বাচন করা }
Circle(300, 200, 50); { (300, 200) পজিশনে ৫০ রেডিয়াসের একটি বৃত্ত আঁকা }
ReadLn;
CloseGraph;
end.এখানে, Circle ফাংশনটি (300, 200) পজিশনে এবং ৫০ রেডিয়াসের একটি বৃত্ত আঁকবে।
৪. আয়তক্ষেত্র আঁকা (Drawing a Rectangle)
Rectangle ফাংশন দিয়ে আপনি একটি আয়তক্ষেত্র আঁকতে পারেন।
উদাহরণ:
program GraphicsExample;
uses Graph;
begin
InitGraph(GraphicsDriver, GraphicsMode, 'C:\TP\BGI');
SetColor(Green); { সবুজ রঙ নির্বাচন করা }
Rectangle(100, 100, 400, 300); { (100, 100) থেকে (400, 300) পর্যন্ত একটি আয়তক্ষেত্র আঁকা }
ReadLn;
CloseGraph;
end.এখানে, Rectangle ফাংশনটি দুটি কোণার পয়েন্টের মধ্যে একটি আয়তক্ষেত্র আঁকে।
৫. এলিপ্স (Ellipse)
গ্রাফিক্সে একটি এলিপ্স (প্রস্থ ও উচ্চতার বেসে একটি আন্ডারলাইন বৃত্ত) আঁকতে Ellipse ফাংশন ব্যবহৃত হয়।
উদাহরণ:
program GraphicsExample;
uses Graph;
begin
InitGraph(GraphicsDriver, GraphicsMode, 'C:\TP\BGI');
SetColor(Yellow); { হলুদ রঙ নির্বাচন করা }
Ellipse(300, 200, 0, 360, 100, 50); { (300, 200) পজিশনে এলিপ্স আঁকা, ১০০ প্রস্থ, ৫০ উচ্চতা }
ReadLn;
CloseGraph;
end.এখানে, Ellipse ফাংশনটি (300, 200) পজিশনে একটি এলিপ্স আঁকে।
৩. গ্রাফিক্সের রঙ নির্বাচন
প্যাসক্যাল ভাষায় গ্রাফিক্সে বিভিন্ন রঙ ব্যবহারের জন্য SetColor ফাংশন ব্যবহার করা হয়। এটি একটি নির্দিষ্ট রঙ নির্বাচন করে এবং পরে আঁকাআঁকি বা আউটপুটের রঙ সেট করে।
SetColor(ColorCode);এখানে ColorCode হল প্যাসক্যালের ডিফাইন করা রঙের কোড, যেমন:
White= 15Red= 4Green= 2Blue= 1
৪. গ্রাফিক্স মোড বন্ধ করা
গ্রাফিক্স মোড বন্ধ করতে CloseGraph ফাংশন ব্যবহার করা হয়। এটি গ্রাফিক্স মোড থেকে বের হয়ে সাধারণ টেক্সট মোডে চলে যায়।
CloseGraph;সারাংশ
প্যাসক্যাল প্রোগ্রামে গ্রাফিক্স এবং ড্রয়িং তৈরি করার জন্য Graph ইউনিট ব্যবহার করা হয়। এটি সরল গ্রাফিক্স অপারেশন যেমন রেখা, বৃত্ত, আয়তক্ষেত্র, এলিপ্স এবং টেক্সট ড্রয়িং করতে সাহায্য করে। InitGraph ফাংশন ব্যবহার করে গ্রাফিক্স মোডে প্রবেশ করা হয় এবং SetColor দিয়ে রঙ নির্বাচন করা হয়। এরপর গ্রাফিক্সের বিভিন্ন ফাংশন ব্যবহার করে ছবি আঁকা হয় এবং CloseGraph ফাংশন দিয়ে গ্রাফিক্স মোড বন্ধ করা হয়।
প্যাসক্যাল ভাষায় গ্রাফিক্যাল ফাংশন এবং পদ্ধতিগুলি ব্যবহার করে আপনি গ্রাফিক্যাল ইন্টারফেস এবং চিত্র আঁকতে পারেন। প্যাসক্যালের বোরল্যান্ড টার্বো প্যাসক্যাল (Borland Turbo Pascal) এবং লাজারাস (Lazarus) IDE তে গ্রাফিক্সের জন্য শক্তিশালী গ্রাফিক্যাল ফাংশন এবং পদ্ধতিগুলি অন্তর্ভুক্ত থাকে, যা দিয়ে গ্রাফিক্যাল আউটপুট তৈরি করা সম্ভব। এই ফাংশনগুলো ব্যবহার করে আপনি স্ক্রীনে আঁকা, লাইন ড্র করা, বর্গক্ষেত্র তৈরি করা, রঙ ব্যবহার করা ইত্যাদি কার্য সম্পাদন করতে পারেন।
প্যাসক্যাল গ্রাফিক্স ব্যবহার
প্যাসক্যাল গ্রাফিক্স ব্যবহারের জন্য Graphics Unit ব্যবহার করতে হয়। Graphics ইউনিটটি গ্রাফিক্স ফাংশন এবং পদ্ধতিগুলোর জন্য প্রয়োজনীয় সমস্ত উপাদান সরবরাহ করে।
গ্রাফিক্স ইউনিট ব্যবহার
প্রথমে, আপনাকে Graphics ইউনিটটি ইনক্লুড করতে হবে এবং একটি গ্রাফিক্স মোড চালু করতে হবে, যা স্ক্রীনে চিত্র আঁকতে সহায়তা করবে। এর জন্য InitGraph ফাংশন ব্যবহার করা হয়।
uses
Graph;এখন, চলুন দেখি কীভাবে গ্রাফিক্যাল ফাংশন এবং পদ্ধতিগুলি কাজ করে।
গ্রাফিক্স মোড চালু করা (Initializing Graphics Mode)
গ্রাফিক্স মোডে যাওয়ার জন্য InitGraph ফাংশন ব্যবহার করা হয়। এটি গ্রাফিক্স ড্রাইভার এবং গ্রাফিক্স মোড ইনিশিয়ালাইজ করে।
program GraphicsExample;
uses
Graph;
var
gd, gm: Integer; // gd = Graph Driver, gm = Graph Mode
begin
gd := Detect; // গ্রাফিক্স ড্রাইভার স্বয়ংক্রিয়ভাবে সনাক্ত করবে
initgraph(gd, gm, ''); // গ্রাফিক্স মোড ইনিশিয়ালাইজ
if graphresult <> grOk then // গ্রাফিক্স মোড সফলভাবে শুরু হয়েছে কিনা পরীক্ষা করা
begin
writeln('Graphics mode initialization failed!');
halt;
end;
// এখানে গ্রাফিক্স আঁকার কোড লিখবেন
closegraph; // গ্রাফিক্স মোড বন্ধ করা
end.Detect এর মাধ্যমে প্যাসক্যাল স্বয়ংক্রিয়ভাবে সিস্টেমের জন্য উপযুক্ত গ্রাফিক্স ড্রাইভার নির্বাচন করে এবং গ্রাফিক্স মোডে পরিবর্তন ঘটে।
গ্রাফিক্স ফাংশনসমূহ (Graphical Functions)
প্যাসক্যাল গ্রাফিক্সের জন্য অনেক ফাংশন সরবরাহ করে, যার মাধ্যমে আপনি স্ক্রীনে বিভিন্ন গ্রাফিক্যাল অবজেক্ট আঁকতে পারবেন।
১. Line (লাইন আঁকা)
Line ফাংশন ব্যবহার করে আপনি দুটি পয়েন্টের মধ্যে একটি সোজা লাইন আঁকতে পারেন।
line(100, 100, 200, 200); // (100, 100) থেকে (200, 200) পর্যন্ত লাইন আঁকা২. Circle (বৃত্ত আঁকা)
Circle ফাংশন ব্যবহার করে আপনি একটি বৃত্ত আঁকতে পারেন। এর মাধ্যমে আপনি একটি নির্দিষ্ট রেডিয়াসের বৃত্ত তৈরি করতে পারবেন।
circle(200, 200, 50); // কেন্দ্র (200, 200) এবং রেডিয়াস 50 সহ একটি বৃত্ত আঁকা৩. Rectangle (বর্গক্ষেত্র বা আয়তক্ষেত্র আঁকা)
Rectangle ফাংশন দিয়ে একটি আয়তক্ষেত্র বা বর্গক্ষেত্র আঁকা হয়। প্রথম দুটি পয়েন্ট হলো বক্সের এক কোণ এবং পরবর্তী দুটি পয়েন্ট হলো বিপরীত কোণ।
rectangle(50, 50, 200, 150); // (50, 50) থেকে (200, 150) পর্যন্ত আয়তক্ষেত্র আঁকা৪. Ellipse (ঊল্লাস আঁকা)
Ellipse ফাংশন দিয়ে একটি এলিপ্স আঁকা যায়। এটি দুটি রেডিয়াস গ্রহণ করে।
ellipse(200, 200, 0, 360, 100, 50); // (200, 200) কেন্দ্র এবং 100, 50 রেডিয়াসের এলিপ্স৫. OutText (টেক্সট আউটপুট)
OutText ফাংশন দিয়ে আপনি স্ক্রীনে টেক্সট প্রিন্ট করতে পারেন।
outtext(100, 100, 'Hello, World!'); // (100, 100) পয়েন্টে 'Hello, World!' লেখা৬. SetColor (রঙ নির্ধারণ)
SetColor ফাংশন ব্যবহার করে আপনি আঁকার জন্য রঙ নির্ধারণ করতে পারেন।
setcolor(red); // আঁকার জন্য রঙ সেট করা হলো লাল
line(50, 50, 200, 50); // লাল রঙের লাইন আঁকা৭. FloodFill (ফ্লাড ফিল)
FloodFill ফাংশন ব্যবহার করে আপনি একটি আকারকে নির্দিষ্ট রঙে পূর্ণ করতে পারেন। এটি সাধারণত রং করতে ব্যবহৃত হয়, যেমন আয়তক্ষেত্র বা বৃত্তের ভিতরের অংশ।
setcolor(blue); // বর্গক্ষেত্রের ভিতরের অংশে নীল রঙ ব্যবহার
floodfill(150, 150, red); // (150, 150) পয়েন্টে রেড রঙে পূর্ণ করাগ্রাফিক্স প্রোগ্রামের উদাহরণ
program GraphicsExample;
uses
Graph;
var
gd, gm: Integer; // gd = Graph Driver, gm = Graph Mode
begin
gd := Detect; // গ্রাফিক্স ড্রাইভার স্বয়ংক্রিয়ভাবে সনাক্ত করবে
initgraph(gd, gm, ''); // গ্রাফিক্স মোড ইনিশিয়ালাইজ
if graphresult <> grOk then
begin
writeln('Graphics mode initialization failed!');
halt;
end;
// লাল রঙে একটি লাইন আঁকুন
setcolor(red);
line(100, 100, 200, 200);
// নীল রঙে একটি বৃত্ত আঁকুন
setcolor(blue);
circle(300, 300, 50);
// সবুজ রঙে একটি আয়তক্ষেত্র আঁকুন
setcolor(green);
rectangle(50, 200, 200, 350);
// স্ক্রীনে একটি টেক্সট প্রিন্ট করুন
setcolor(white);
outtext(250, 100, 'Graphics in Pascal!');
// গ্রাফিক্স মোড বন্ধ করুন
closegraph;
end.এই প্রোগ্রামটি একটি গ্রাফিক্যাল স্ক্রীনে একটি লাল রঙের লাইন, নীল রঙের বৃত্ত, সবুজ রঙের আয়তক্ষেত্র এবং একটি সাদা টেক্সট প্রদর্শন করবে।
সারাংশ
প্যাসক্যাল প্রোগ্রামিং ভাষায় গ্রাফিক্যাল ফাংশন এবং পদ্ধতিসমূহ ব্যবহার করে আপনি স্ক্রীনে চিত্র আঁকতে, লাইন ড্র করতে, বৃত্ত তৈরি করতে, টেক্সট প্রদর্শন করতে এবং আরও অনেক কিছু করতে পারেন। Graphics ইউনিটটির সাহায্যে এসব গ্রাফিক্যাল ফাংশন ব্যবহৃত হয় এবং InitGraph, CloseGraph, Line, Circle, Rectangle, OutText, SetColor ইত্যাদি ফাংশনগুলি গ্রাফিক্সে বিভিন্ন কার্য সম্পাদন করতে সহায়তা করে।
প্যাসক্যাল একটি কম্পিউটার প্রোগ্রামিং ভাষা যা সাধারণত কনসোল অ্যাপ্লিকেশন তৈরি করতে ব্যবহৃত হয়, কিন্তু গ্রাফিক্যাল ইউজার ইন্টারফেস (GUI) তৈরি করতেও প্যাসক্যাল ব্যবহার করা যায়। GUI তৈরি করতে প্যাসক্যালের Lazarus IDE এবং Free Pascal ব্যবহার করা হয়। Lazarus হল একটি ওপেন সোর্স এবং শক্তিশালী IDE যা ফ্রি প্যাসক্যাল কম্পাইলার ব্যবহার করে GUI ভিত্তিক অ্যাপ্লিকেশন তৈরি করতে সক্ষম।
এখানে আমরা দেখবো কীভাবে প্যাসক্যাল ব্যবহার করে একটি সাধারণ GUI অ্যাপ্লিকেশন তৈরি করা যায়।
Lazarus IDE দিয়ে GUI অ্যাপ্লিকেশন তৈরি
১. Lazarus IDE ইনস্টলেশন
প্রথমে, Lazarus IDE ইনস্টল করা প্রয়োজন। এটি আপনার প্যাসক্যাল প্রোগ্রামিং ভাষায় GUI তৈরি করার জন্য প্রয়োজনীয় টুলস এবং ফ্রেমওয়ার্ক সরবরাহ করে।
- Windows: Lazarus IDE ডাউনলোড করতে এখানে যান।
- Linux:
sudo apt-get install lazarusকমান্ড ব্যবহার করে ইনস্টল করুন।
২. নতুন প্রজেক্ট তৈরি করা
Lazarus IDE তে GUI অ্যাপ্লিকেশন তৈরি করতে নিম্নলিখিত ধাপগুলি অনুসরণ করুন:
- Lazarus IDE চালু করুন।
- File > New নির্বাচন করুন, তারপর Application নির্বাচন করুন। এটি একটি নতুন GUI অ্যাপ্লিকেশন প্রজেক্ট তৈরি করবে।
- প্রজেক্ট ফাইলের মধ্যে, আপনি একটি ফর্ম (form) দেখতে পাবেন, যেখানে আপনি কম্পোনেন্ট যোগ করতে পারবেন।
৩. GUI কম্পোনেন্টস ব্যবহার করা
Lazarus IDE তে আপনি বিভিন্ন GUI কম্পোনেন্ট ব্যবহার করতে পারেন, যেমন:
- Button: ব্যবহারকারী ক্লিক করার জন্য।
- Label: ব্যবহারকারীকে তথ্য প্রদর্শন করার জন্য।
- Edit: ইনপুট নেওয়ার জন্য।
- Memo: বহু লাইনের টেক্সট ইনপুট বা আউটপুট দেখানোর জন্য।
- ComboBox: ড্রপডাউন তালিকা।
এগুলোকে ফর্মে রাখতে, Component Palette থেকে কম্পোনেন্ট নির্বাচন করুন এবং ফর্মে ড্র্যাগ করুন।
৪. এটি কিভাবে কাজ করবে
ধরা যাক, আমরা একটি সাধারণ "Hello World" অ্যাপ্লিকেশন তৈরি করতে যাচ্ছি যেখানে একটি বাটন ক্লিক করলে একটি লেবেলে টেক্সট দেখাবে।
- Button এবং Label কম্পোনেন্ট ফর্মে রাখুন।
- বাটনের
OnClickইভেন্টে কোড লিখুন যাতে লেবেলে টেক্সট দেখানো হয়।
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption := 'Hello, World!';
end;
end.এখানে:
Button1একটি বাটন যা ব্যবহারকারী ক্লিক করতে পারে।Label1একটি লেবেল যেখানে আমরা টেক্সট প্রদর্শন করব।Button1Clickফাংশনটি বাটনে ক্লিক করার পরে কল হয়, এবং এতে লেবেলেHello, World!লেখা হবে।
৫. GUI অ্যাপ্লিকেশন রান করা
এখন আপনি প্রজেক্ট রান করতে পারেন:
- Run বাটনে ক্লিক করুন অথবা
F9চাপুন। - একটি উইন্ডো খুলবে যেখানে আপনার তৈরি বাটন এবং লেবেল দেখতে পাবেন। বাটনে ক্লিক করলে লেবেলে "Hello, World!" প্রদর্শিত হবে।
প্যাসক্যাল GUI অ্যাপ্লিকেশনের আরও কিছু উদাহরণ
১. বেসিক ক্যালকুলেটর অ্যাপ্লিকেশন
একটি সাধারণ ক্যালকুলেটর তৈরি করা যায়, যেখানে ব্যবহারকারী দুটি সংখ্যা ইনপুট দিতে পারে এবং ফলাফল দেখতে পারে।
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
num1, num2, result: Integer;
begin
num1 := StrToInt(Edit1.Text);
num2 := StrToInt(Edit2.Text);
result := num1 + num2;
Label1.Caption := 'Result: ' + IntToStr(result);
end;
end.এখানে:
Edit1এবংEdit2কম্পোনেন্ট ব্যবহারকারীকে দুইটি সংখ্যা ইনপুট করতে দেয়।Button1ব্যবহারকারী ক্লিক করলে দুটি সংখ্যার যোগফলLabel1এ দেখাবে।
৬. GUI অ্যাপ্লিকেশন ডিবাগিং এবং ডিস্ট্রিবিউশন
GUI অ্যাপ্লিকেশন তৈরি করার পর, এটি পরীক্ষা এবং ডিবাগ করতে হয়:
- Run বাটন ক্লিক করে প্রোগ্রামটি চালিয়ে দেখুন যে এটি সঠিকভাবে কাজ করছে কিনা।
- ডিস্ট্রিবিউট করতে, Lazarus আপনাকে একটি এক্সিকিউটেবল (.exe) ফাইল তৈরি করার সুবিধা দেয়। এটি Project > Build All অপশন দিয়ে তৈরি করা যায়।
সারাংশ
প্যাসক্যালের Lazarus IDE ব্যবহার করে সহজেই GUI অ্যাপ্লিকেশন তৈরি করা যায়। এটি একটি শক্তিশালী এবং ওপেন সোর্স IDE যা ফ্রি প্যাসক্যাল কম্পাইলার ব্যবহার করে GUI অ্যাপ্লিকেশন তৈরি করতে সহায়তা করে। Lazarus এর মাধ্যমে আপনি সহজেই কম্পোনেন্ট যুক্ত করে গ্রাফিক্যাল ইউজার ইন্টারফেস তৈরি করতে পারেন এবং ডিবাগিং, রানিং, ডিস্ট্রিবিউশন সব কাজ সহজেই করতে পারবেন।
প্যাসক্যাল ভাষায় অ্যানিমেশন এবং শেপ ম্যানিপুলেশন সাধারণত গ্রাফিক্সের মাধ্যমে করা হয়। এর জন্য প্যাসক্যালের CRT লাইব্রেরি এবং Graph লাইব্রেরি ব্যবহৃত হয়, যা গ্রাফিক্যাল ইন্টারফেস তৈরি এবং অ্যানিমেশন তৈরি করতে সাহায্য করে।
CRT লাইব্রেরি: এই লাইব্রেরি টেক্সট বেসড ইন্টারফেসের জন্য ব্যবহৃত হয়, যেখানে স্ক্রীনের উপর টেক্সট এবং অক্ষরের অবস্থান পরিবর্তন করা যায়।
Graph লাইব্রেরি: গ্রাফিক্যাল ইন্টারফেস তৈরি এবং গ্রাফিক্যাল উপাদান (যেমন রেখা, বৃত্ত, আয়তক্ষেত্র, ইত্যাদি) অঙ্কন করতে ব্যবহৃত হয়। গ্রাফিক্সের সাথে অ্যানিমেশন এবং শেপ ম্যানিপুলেশন করতে এই লাইব্রেরি গুরুত্বপূর্ণ।
প্যাসক্যালের গ্রাফিক্স লাইব্রেরি সেটআপ
গ্রাফিক্স ব্যবহার করতে প্যাসক্যালের Graph লাইব্রেরি ব্যবহৃত হয়। এটি ব্যবহার করতে হলে প্রথমে গ্রাফিক্স ড্রাইভার এবং মোড সেট করতে হয়।
গ্রাফিক্স ইন্সটলেশন এবং সেটআপ:
uses Graph;
var
gd, gm: Integer;
begin
gd := Detect; // গ্রাফিক্স ড্রাইভার স্বয়ংক্রিয়ভাবে নির্ধারণ করা হবে
InitGraph(gd, gm, ''); // গ্রাফিক্স মোড শুরু করা
if GraphResult <> grOk then
begin
writeln('Graphics initialization failed');
halt(1);
end;
// গ্রাফিক্স কোড এখানে
CloseGraph; // গ্রাফিক্স বন্ধ করা
end.এখানে Detect এবং InitGraph ফাংশন ব্যবহার করে গ্রাফিক্স মোড শুরু করা হয়।
অ্যানিমেশন তৈরি করা
অ্যানিমেশন সাধারণত একাধিক ছবির মাধ্যমে একটি চরিত্র বা বস্তু মুভ করতে সহায়তা করে। প্যাসক্যালের গ্রাফিক্স লাইব্রেরি ব্যবহার করে অ্যানিমেশন তৈরি করা যেতে পারে।
উদাহরণ: চলন্ত বৃত্ত অ্যানিমেশন
uses Graph, Crt;
var
gd, gm: Integer;
x, y, dx, dy: Integer;
radius: Integer;
begin
gd := Detect;
InitGraph(gd, gm, '');
if GraphResult <> grOk then
begin
writeln('Graphics initialization failed');
halt(1);
end;
x := 100; // বৃত্তের প্রাথমিক x অবস্থান
y := 100; // বৃত্তের প্রাথমিক y অবস্থান
dx := 5; // প্রতি সাইকেলে x পরিবর্তন
dy := 3; // প্রতি সাইকেলে y পরিবর্তন
radius := 20; // বৃত্তের আকার
repeat
ClearDevice; // স্ক্রীন পরিষ্কার
// বৃত্ত অঙ্কন
SetColor(White);
Circle(x, y, radius);
// বৃত্তের নতুন অবস্থান নির্ধারণ
x := x + dx;
y := y + dy;
// বৃত্তের অবস্থান প্রান্তে পৌঁছালে প্রতিফলন পরিবর্তন
if (x >= GetMaxX) or (x <= 0) then
dx := -dx;
if (y >= GetMaxY) or (y <= 0) then
dy := -dy;
Delay(10); // অ্যানিমেশন বিলম্ব
until KeyPressed; // কিবোর্ড চাপা না হলে চলতে থাকবে
CloseGraph;
end.এখানে একটি বৃত্ত বিভিন্ন দিকে মুভ করতে থাকে এবং যখন এটি স্ক্রীনের প্রান্তে পৌঁছে, তখন এর দিক পরিবর্তন হয়। ClearDevice ফাংশনটি স্ক্রীন পরিষ্কার করতে ব্যবহৃত হয় এবং Delay ফাংশনটি অ্যানিমেশনকে ধীর করে।
শেপ ম্যানিপুলেশন
শেপ ম্যানিপুলেশন দ্বারা আমরা গ্রাফিক্যাল শেপগুলিকে স্ক্রীনে আঁকতে, সেগুলোর আকার, রঙ বা অবস্থান পরিবর্তন করতে পারি। প্যাসক্যালের Graph লাইব্রেরি-তে বিভিন্ন ধরনের শেপ আঁকা এবং তাদের ম্যানিপুলেশন করা যায়, যেমন রেখা, বৃত্ত, আয়তক্ষেত্র, ইত্যাদি।
উদাহরণ: আয়তক্ষেত্রের আকার পরিবর্তন
uses Graph;
var
gd, gm: Integer;
x1, y1, x2, y2: Integer;
begin
gd := Detect;
InitGraph(gd, gm, '');
if GraphResult <> grOk then
begin
writeln('Graphics initialization failed');
halt(1);
end;
x1 := 100; // আয়তক্ষেত্রের শুরু বিন্দু
y1 := 100;
x2 := 300; // আয়তক্ষেত্রের শেষ বিন্দু
y2 := 200;
// আয়তক্ষেত্র আঁকুন
SetColor(Yellow);
Rectangle(x1, y1, x2, y2);
// আয়তক্ষেত্রের আকার পরিবর্তন
x2 := x2 + 50; // আয়তক্ষেত্রের প্রস্থ বৃদ্ধি
y2 := y2 + 50; // আয়তক্ষেত্রের উচ্চতা বৃদ্ধি
// নতুন আয়তক্ষেত্র আঁকুন
SetColor(Red);
Rectangle(x1, y1, x2, y2);
Readln;
CloseGraph;
end.এখানে, আমরা প্রথমে একটি আয়তক্ষেত্র আঁকি এবং পরে তার আকার বাড়িয়ে নতুন আয়তক্ষেত্র আঁকি। SetColor ফাংশনটি শেপের রঙ সেট করে।
সারাংশ
- অ্যানিমেশন: প্যাসক্যালের
Graphলাইব্রেরি ব্যবহার করে বিভিন্ন ধরনের অ্যানিমেশন তৈরি করা সম্ভব। বস্তুর চলাচল বা গতিশীলতা প্রদর্শন করার জন্য একাধিক ফ্রেম ব্যবহার করা হয়। - শেপ ম্যানিপুলেশন: প্যাসক্যাল গ্রাফিক্স লাইব্রেরির মাধ্যমে বিভিন্ন গ্রাফিক্যাল শেপ যেমন রেখা, বৃত্ত, আয়তক্ষেত্র আঁকতে এবং সেগুলোর আকার বা অবস্থান পরিবর্তন করতে পারি।
- গ্রাফিক্সের জন্য প্রাথমিক সেটআপ: গ্রাফিক্স ব্যবহারের জন্য
InitGraph,ClearDevice,CloseGraph, এবংDelayফাংশন ব্যবহার করা হয়।
এই ধারণাগুলি ব্যবহার করে প্যাসক্যাল ভাষায় আপনি গ্রাফিক্যাল অ্যানিমেশন এবং শেপ ম্যানিপুলেশন তৈরি করতে পারবেন।
Read more