صفحه اول سایت arrow کامپیوتر و فناوری اطلاعات arrow آموزش محیط گرافیکی در توربو پاسکال 7

Ads by ganjineh.co.ir

- برای مشاهده تمام مقالات موجود در سایت و استفاده از تالار گفتمان لطفا با نام کاربری خود وارد شوید در صورتی که عضو نیستید < اینجا > کلیک کنید.


آموزش محیط گرافیکی در توربو پاسکال 7 چاپ ارسال برای دوستان
(10 :مجموع راي ها)
فرستادن :
Mohand.es
Balatarin
Donbale
نوشته شده توسط مهندس عبدالجوادی   

براي برنامه نويسي در محيط گرافيكي نياز به مقدماتي براي ورود به محيط گرافيك است . اولين خط هر برنامه گرافيكي بعد از دستور Program ، فرمان زير است :

Uses graph ;

با استفاده از دستور uses برنامه شما مي تواند از پيمانه ها و ثوابت توربو پاسكال استفاده كند . اين ثوابت و پيمانه ها در فايلي كه يك unit ناميده مي شود جاي مي گيرند . كدي كه در حالت گرافيكي توسط كامپيوتر توليد مي شود ، به نوع كامپيوتر بستگي دارد . بنابراين نوع سخت افزار گرافيكي كه در اختيار سيستم است بايد به توربو پاسكال اعلام شود . براي اين كار از دو متغير Driver و Mode بصورت زير استفاده مي شود :

Var

  Driver , Mode : Integer ;

محتواي اين دو متغير نوع سخت افزارهاي گرافيكي سيستم را مشخص مي كند . براي تعيين حالت گرافيكي از دستور زير استفاده مي شود :

InitGraph (Driver, Mode, ‘…….’) ;

رويه InitGraph سيستم گرافيكي شما را بررسي كرده و سپس در متغيرهاي Driver و Mode مقادير مناسب را قرار مي دهد . پارامتر رشته اي ‘……’ شاخه اي را مشخص مي كند كه در آن نرم افزار كنترل سيستم گرافيكي شما وجود دارد . رشته اي كه بدون كاراكتر است ‘ ‘ به اين معناست كه اين نرم افزار در شاخه جاري قرار دارد .

اين نرم افزار همواره در شاخه BGI قرار دارد و معمولا" در محلي است كه برنامه توربو پاسكال نصب شده است . بنابراين بايد آدرس شاخه BGI را بجاي اين رشته بنويسيم . براي انعطاف پذير شدن برنامه و قابليت اجراي آن روي سيستم هاي مختلف معمولا" يك نسخه از شاخه BGI را در شاخه اي كه برنامه در آن قرار دارد ، كپي مي كنيم .

صفحه نمايشي كه مانند يك صفحه مختصات است :

در برنامه نويسي گرافيكي موقعيت هر خط يا هر شكلي را كه روي صفحه نمايش رسم مي كنيد ، بايد كنترل كنيد . صفحه نمايش را در محيط گرافيكي بصورت مختصات X-Y تعدادي نقطه مي توان در نظر گرفت . در اكثر نمايشگرها ابعاد متداول عبارتند از : 200×320 ، 350×640 ، 480×640 . كه معمولا" تعداد نقاط در محور X ها بيشتر است .

توابع GetMaxX و GetMaxY در توربو پاسكال، به ترتيب حداكثر تعداد نقاط در Xها و Yها را برمي گردانند . بنابراين براي بدست آوردن ابعاد واقعي نمايشگر خود مي توانيد از اين توابع بصورت زير استفاده كنيد :               

 MaxX := GetMaxX ;             MaxY := GetMaxY ;

مختصات گوشه های صفحه نمایش به صورت زیر است.

براي برگرداندن برنامه به حالت متني از دستور زيراستفاده مي كنيم . 

CloseGraph ;

رنگ زمينه و متن :

بطور پيش فرض براي رنگ هاي زمينه و متن ، به ترتيب از سياه و سفيد استفاده مي شود . دستورات زير امكان تغيير رنگ زمينه و متن را فراهم مي كنند .

SetBkColor (….) ;                  تعيين رنگ زمينه

SetColor (….) ;                         تعيين رنگ متن  

براي انتخاب رنگها از ثوابت رنگي يا معادل عددي رنگها طبق جدول زير استفاده مي شود :

 

ثابت

مقدار

ثابت

مقدار

Black

0

DarkGray

8

Blue

1

LightBlue

9

Green

2

LightGreen

10

Cyan

3

LightCyan

11

Red

4

LightRed

12

Magenta

5

LightMagenta

13

Brown

6

Yellow

14

LightGray

7

White

15

 

خلاصه اي از توابع و رويه هاي گرافيكي :

·                Line (X1, Y1, X2, Y2) ;

بين نقاط (X1,Y1) و (X2,Y2) خطي رسم مي شود .

·        Rectangle (X1, Y1, X2, Y2) ;

مستطيلي كه قطر آن بين نقاط (X1,Y1) و (X2,Y2) است مي كشد .

·        Circle (X, Y, R) ;

دايره به مركز (X,Y) و شعاع R رسم مي كند .

·        Arc (X, Y, Angle1, Angle2, R) ;

كماني از زاويه Angle1 تا Angle2 و به مركز (X,Y) و شعاع R رسم مي كند .

·        SetFillStyle (FilPat, FilCol ) ;

براي رنگ آميزي قسمتهايي از صفحه نمايش با رنگهاي مختلف از اين رويه استفاده مي شود تا نوع رنگ و نحوه رنگ آميزي مشخص شود .

الگوهاي رنگ آميزي و رنگها با توجه به جدول زير انتخاب مي شوند ، در اين رويه هم از نام ثابت و هم از معادل عددي مي توانيد استفاده كنيد .

تا زمانيكه بار ديگر اين رويه را فراخواني نكنيد ، اين حالت فعال خواهد بود .

ثابت

معادل عددي

الگوي رنگ آميزي

ثابت

معادل عددي

الگوي رنگ آميزي

EmptyFill2

0

رنگ زمينه

LtBkSlashFill

6

\ \ \ \ (بافاصله)

SolidFill

1

بصورت توپر

HatchFill

7

هاشور

LineFill

2

- - - -

XhatchFill

8

متقاطع

ItSlashFill

3

/ / / / (بافاصله)

InterLeaveFill

9

خط در ميان

SlashFill

4

//// (بدون فاصله)

WidDotFill

10

نفطه اي (بافاصله)

BslashFill

5

\\\\ (بدون فاصله)

CloseDotFill

11

نقطه اي(بدون فاصله)

 

 

 

 

 

 

 

·       

FloodFill (X, Y, Border) ;

محدوده اي را كه حاوي نقطه (X,Y) است و با خطوطي به رنگ Border محصور شده است ، با الگوي جاري رنگ آميزي مي كند .

·        Bar (X1, Y1, X2, Y2) ;

مستطيلي توپر مي كشد كه قطر آن بين نقاط (X1,Y1) و (X2,Y2) است .

·        PieSlice (X, Y, Angle1, Angle2, R) ;

يك برش دايره توپر مي كشد كه از زاويه Angle1 شروع شده و به Angle2 ختم مي شود و داراي مركز (X,Y) و شعاع R مي باشد .

·        OutTextXY (X, Y, TextString) ;

در نقطه (X,Y) كاراكترهاي رشته TextString را چاپ مي كند .

v    برنامه زير يك نمونه از برنامه نويسي ساده گرافيكي را نشان مي دهد .

uses graph;

procedure HappyFace(MidX,MidY:integer);

var

HeadRadius:integer;

begin

   HeadRadius:=GetMaxY div 4;

   Circle (MidX, MidY, HeadRadius);

end;

 

var                

   Driver,Mode,MidX,MidY:integer;

begin

   InitGraph (Driver, Mode, ' ');

   MidX:=GetMaxX div 2;

   MidY:=GetMaxY div 2;

   HappyFace(MidX,MidY);

   OutTextXY(230, 400, '!!! Press Any Key !!!');

   readln;

   CloseGraph;

end.

نقاشي متحرك گرافيكي :

اگر يك رويه گرافيكي داراي پارامتر باشد ، مي توان موقعيت يك شكل را تغيير داد و يا آن شكل را در چند نقطه از صفحه نمايش رسم كرد . علاوه بر اين مي توان يك شكل را متحرك ساخت . اين كار به اين صورت انجام مي شود كه ابتدا شكلي در نقطه خاصي از صفحه نمايش رسم مي شود ، سپس از آن نقطه پاك شده و در محل ديگري رسم مي شود . با تكرار اين عمل شكل مورد نظر متحرك به نظر مي رسد .

براي تعيين سرعت حركت از يك تأخير زماني بين دفعات رسم شكل استفاده مي كنيم . براي ايجاد اين تأخير مي توان از رويه Delay (DelayTime) استفاده كرد . عدد DelayTime بر اساس ميلي ثانيه بيان مي شود و البته براي استفاده از اين تابع بايد  واحد Crt را با فرمان uses Crt در ابتداي برنامه فراخواني كنيد .

v    در مثال بعد با استفاده از روش گفته شده ، شكل رسم شده در مثال قبل را متحرك مي كنيم.

var

   Driver,Mode,MidX,MidY:integer;

begin

   InitGraph (Driver, Mode, ' ');

   MidX:=0;

   MidY:=0;

   while ((MidX<GetMaxX) and (MidY<GetMaxY)) do

     begin

       HappyFace(MidX,MidY);

       MidX:=MidX+50;

       MidY:=MidY+50;

       Delay(50);

       SetFillStyle(3,4);

       Bar(0,0,639,479);

     end;

   OutTextXY(230, 400, '!!! Press Any Key !!!');

   readln;

   CloseGraph;

end.

 

دستور كار (1 )

در محيط گرافيك توربو پاسكال برنامه اي بنويسيد كه اشكال زير را در خروجي رسم كند . سعي كنيد توابع را طوري بنويسيد كه با دريافت مختصات يك نقطه از شكل مثلا" مركز آن ، تمام شكل را رسم كند . (مانند مثال مطرح شده در جزوه) سعي كنيد تمام مختصات لازم براي رسم اشكال را با فرمول بدست آوريد و تا حد امكان از استفاده مستقيم از اعداد خودداري كنيد .

دستور كار (2 )

در محيط گرافيك توربو پاسكال برنامه اي بنويسيد تا اشكال زير را به ترتيب و بصورت متحرك نمايش دهد. سرعت حركت آدمك بايد به گونه اي باشد كه بين مرحله اول تا آخر 2 ثانيه طول بكشد. نيازي به جابجايي خانه ها وجود ندارد ، برنامه را طوري بنويسيد كه آدمك از يك خانه بيرون بيايد و دوباره در همان خانه فرو برود . تابع رسم آدمك بايد به گونه اي باشد كه با دريافت مختصات يك نقطه مشخص (مركز خانه) آدمك را رسم كند و هر بار با كم يا زياد كردن مختصات اين نقطه آدمك را در محل جديدي رسم كند .

 

دستور كار (3 )

برنامه اي بنويسيد كه پنجره زير را رسم كند . براي طرح پنجره ها و رنگها به دلخواه تصميم بگيريد.

دستور كار (4 )

با استفاده از تابعي كه در دستور كار (2) نوشته ايد ، برنامه اي بنويسيد كه آدمك را به طور تصادفي در خانه هاي پنجره شماره يك ظاهر كند . به اين ترتيب كه با يك تابع شماره خانه اي را كه آدمك بايد در آن ظاهر شود ، به طور تصادفي توليد كنيد و سپس مختصات مركز آن خانه را به تابع رسم آدمك بدهيد . اين كار بايد تا زماني ادامه پيدا كند كه 10 بار آدمك در خانه هاي مختلف ظاهر و سپس ناپديد شود . تابع حركت آدمك را بدون استفاده از Delay  بنويسيد .  براي ايجاد حالت متحرك بعد از هر بار رسم آدمك پنجره شماره 1 بايد مجددا" رسم شود .

 

دستور كار (5 )

برنامه اي بنويسيد كه ماوس را در پنجره شماره 2 فعال كند و محل كليك كردن ماوس را مشخص كند . بطوريكه اگر كاربر در هر محلي از يك خانه كليك كند برنامه شماره آن خانه را بعنوان خروجي برگرداند . مثلا" اگر كاربر در هر نقطه اي از خانه شماره 1 كليك كند برنامه عدد يك را بعنوان خروجي برگرداند .

 

دستور كار (6 )

برنامه اي را كه در دستور كار (4) نوشته ايد طوري تغيير دهيد كه اگر در زمان حركت آدمك ، كاربر ماوس را در هر كدام از خانه هاي پنجره شماره 2 كليك كند ، آدمك بعدي ظاهر شود . يعني با هر بار كليك ماوس بازي به مرحله بعدي برود .

 

دستور كار (7 )

برنامه دستور كار (6) را به گونه اي تغيير دهيد كه تشخيص دهد آيا شماره خانه اي كه ماوس در آن كليك شده ، با شماره خانه اي كه آدمك در آن حركت مي كرده يكسان است يا نه ؟ در صورت يكسان بودن شماره ها يك امتياز مثبت و در صورت يكسان نبودن يك امتياز منفي به كاربر بدهيد .

پروژه نهايي :

بازي كامپيوتري طراحي شده در طول ترم را تكميل كنيد به نحوي كه بعد از هر بازي امتياز كاربر را نمايش دهد .

 

امكانات اضافي :

1- استفاده از طرحها و رنگهاي متنوع در طراحي پنجره ها ، خانه ها و آدمكهاي بازي .

2- ايجاد پنجره اي مخصوص نمايش امتياز كاربر در هر مرحله و در انتهاي بازي .

3- استفاده از امكانات صوتي در مراحل مختلف بازي مثل شروع بازي ، پايان بازي ، انتخاب خانه صحيح ، انتخاب خانه غلط ، ظاهر شدن آدمك جديد ، ناپديد شدن آدمك متحرك .

4- طراحي صفحه متحرك براي شروع و پايان بازي .

5- ...

 

نظرات
افزودنجستجو
فريبا (85.185.65.1) ۱۵ مرداد ۱۳۸۶ , ۰۰:۳۹

خواهشمند است يك پروژه در مورد بازي مين روب يا ماشين حساب يا هر پروژه يگري را برايم بفرستيد در پاسكال ( خواهشمندم فوري فوري باشد براي يك هفته مي خواهم ) . ممنون
امیر جبلی (89.165.42.64) ۱۵ مرداد ۱۳۸۶ , ۰۶:۲۲

کجای این مقاله یا این سایت نوشته سفارش پروژه دانشجویی پذیرفته می شود ؟

برای تهیه پروژه های دانشجویی یک هفته ای لطفا به تایپ و تکثیر ها یا بقالی های نزدیک دانشگاهتون
مراجعه کنید .
اگر هم جایی از کد نویسی پروژه گیر کردید بعد بیاید اینجا سوال کنید تا همکلاسی ها جواب بدن و کمک کنند.
mohammad lavvaf (78.38.65.2) ۱۵ آذر ۱۳۸۶ , ۱۴:۱۱

شرمنده میخواستم خواهشی کنم.میشه مثالی رو که در بالا زدید رو به طور کامل بنویسید که من اونو کپی کنم تو پاسکال و اجرا کنم.آخه نمی دونم چه جوری باید ازش استفاده کنم.ممنون از سایت مفیدی که ایجاد کردید
برنامه ای بنویسی
عسل (80.191.231.10) ۲۲ اسفند ۱۳۸۶ , ۰۳:۲۵

سپاسگذارم
با سلام
عسل (80.191.231.10) ۲۲ اسفند ۱۳۸۶ , ۰۳:۳۳

لطفا یک کتاب بهم در مورد توربو پاسکال معرفی کنید که اولا حجمش کم و قابل فهم خلاصه برای یه ادم تازه کار مختصر و مفید باشه راستی خیلی فوری و حیاتی به ایمیلم بفرستید خیلی خرده فرمایش کردم با کمال تشکر قربون همه ی بچه های با حال سایت همکلاسی
SQL SERVER
محمد عبدیان (78.39.112.39) ۱۶ ارديبهشت ۱۳۸۷ , ۱۴:۵۸

با عرض سلام وحسته نباشی.
اولا تشکر ما رو به خاطر سایت خیلی خوبتو یعنی سایت همکلاسی بپذیرید .
ثانیا" یه خواهش دارم اگه ممکن یه مقاله در مورد SQL SERVER توسایت بذارید یا اگه خیلی زحمت نشه برا بفرستید.
ببخشید اگه دستختم خراب
SQL SERVER
محمد عبدیان (78.39.112.39) ۱۶ ارديبهشت ۱۳۸۷ , ۱۵:۰۴

با عرض سلام و خسته نباشی خدمت شما
اولا تشکر منو از بابت سات خیلی خوب و خواندنی سایت همکلاسی پذیرا باشید
ثانیا" اگه میشه یه مقاله در مورد SQL SERVER به سایت اضافه کنید یااگه زحمت نیست برام بفرستید .
ثالثا" ببخشید اگه دستختم خراب(شوخی ترکی)
تنها کاربران عضو توانايي ارسال نظر را دارند.

Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved.

 
فرستادن :
Mohand.es
Balatarin
Donbale

Ads by ganjineh.co.ir