Pascal программалау тілінде “Шашка” ойынының программасын құру

Қазақстан Республикасының  Білім және Ғылым Министрлігі

Еуразия Академиясы

 

 

 

“Информатика және есептеу техникасы”

мамандығы деканаты

 

 

 

 

 

 

 

«Алгоритмдеу және программалау тілдері» пәнінен

КУРСТЫҚ ЖҰМЫС

 

 

 

Тақырыбы: Pascal программалау тілінде “Шашка” ойынының программасын құру

 

 

 

 

 

 

 

 

                                            Орындаған: «Ақпараттық жүйелер» мамандығы                                                         

                                                  Тексерген: аға оқытушы Абдрахманова Д.Ж.             

                                                                                  

 

 

 

                                              Орал, 2011

МАЗМҰНЫ

Кіріспе..........................................................................................................................3

1. Графикадығы функциялар мен процедуралар...............................................5

1.1 Turba Pascal-дағы Graph модулі........................................................................5

1.2 Спрайттар – ойындар программасын құру......................................................11

1.3 Динамикалық қозғалыстағы суреттер..............................................................12

2. Шашка ойынын Паскаль программалау тілінде құру................................17

2.1 Шашка ойнының түсінігі....................................................................................17

2.2 Шашка тақташасын құру....................................................................................19

Қорытынды..............................................................................................................24

Қолданылған әдебиеттер тізімі.............................................................................26

 

 

 

Кіріспе

 

Қазіргі кезде жаһандық ақпараттандыру кезеңін бастан кешірудеміз.  Бүгінде адамзаттың тыныс-тіршілігі электрондық құрылғылардың жұмысына негізделген. Ғылымда, медицинада, техникада, ғарыштануда және т.б. көптеген салаларда кездесетін электрондық аппараттар адам жұмысын күннен-күнге жеңілдетіп, дами түсуде. Сол себептен барлық салаларға электрондық құрылғылар негізіндегі машиналар мен автоматтар жаппай енгізілуде. Ғарышты қашықтан басқару және бақылау станциялары, қашықтан оқыту, пайдалы қазбаларды зерттеу, ультра дыбыстық медицина, лазерлік операциялар жасау, өндіріс пен технологияны автоматтандыру, дүниежүзілік ұялы байланыс, жерсеріктік арналар, күрделі тәжірибелерді виртуальды модельдеу, т.б. жетістіктерді электрониканың дамуынсыз елестету мүмкін емес. Көп таңбалы сандары бар есептерді шығарып, алынған жауаптарды бірнеше мыңыншы дәрежеге енгізу тағы бар. Программалау тілі де соның ішінде маңызды орын алады.

Курстық жұмыстың мақсаты: Паскаль программалау тілінде шашка ойынының программасын құру және оны зерттеу болып табылады. Программалауда графиканың маңызы өте зор, себебі көптеген суреттер және графикалар мұндай программалардың көмегінсіз жүзеге аспайтын еді. Графиканы қолдану, не болмаса сурет салу қажетті мақсатқа қол жеткізіп қана қоймай, графикалық режимдегі процесті қызықты ете түседі, ал бұл қызығушылықтың арқасында программаны игеру де соғұрлым тезірек іске асады. Графикада ойындар құрастыру тек теориялық ережелерге ғана сүйеніп қоймай, практикаға да зор мән беру қажет. Программалау кезінде графикада алуан түрлі әрлеу жұмыстары жасалады, бұл процестерді жүзеге асыру үшін Graph модулі ең қажетті функция болып есептеледі.

Курстық жұмыстың мақсатына сүйене отырып, негізгі міндеттер келесі қағидаларға негізделеді:

  • Паскаль программалау тілінде графика құру барысында функция туралы жалпы ұғымды игеру;
  • Графиканың толық мүмкіндіктерін тереңірек зерттеу;
  • Graph және Crt модулдерін пайдалану арқылы программа құру;
  • Паскаль программалау тіліндегі шашка ойындарын құрастырудың негізгі ерекшеліктерін зерттеу;
  • Паскаль программалау тіліндегі шашка ойындарының программасын құру тақырыбына есептер шығару.

Паскаль программалау тілінде  графикалық жұмыстар екі режимде  іске асады. Олардың бірі мәтіндік болса, екіншісі графикалық болып табылады. Мәтіндік режимде монитор экраны жолдар мен бағандарға бөлінген, яғни әрбір ұяшығында бір символдан  орналасқан торды көрсетеді. Ал бұл  кестенің өлшемі таңдалған режимге  байланысты болып келетіндігін көрсетеді. Сондықтан да мәтіндік режимдегі  графикалық суреттер  символдардың үйлесімі арқылы жүзеге асады. Бұндай суреттерді кей жағдайда “псевдографика” деп те атайды.

Мәтіндік режимге қарағанда  графикалық режимде монитордың экранында  саны өте көп нүктелердің (пиксельдердің) үйлесімін көруге болады. Нүктелердің  әртүрлі түстермен үйлесімі арқылы графикалық фигуралар құралады. Нүктелердің  көлденең және тігінен орналасуына  байланысты, экранның өлшемі бейнеадаптердің  таңдалған режиміне сай келеді.

 

 

  1. Графикадығы функциялар мен процедуралар

1.1Turba Pascal-дағы  Graph модулі

Turbo Pascal программалау тілінде  символдық режимнен бөлек графиктік  режимде жұмыс істеуге болады. Онда әртүрлі графиктік кескіндер  құрастыру мүмкіндігі бар. Turbo Pascal графиктік мүмкіндіктерін пайдалану  үшін арнайы “GRAPH” кітапханасы  қосылады. GRAPH модулінің графиктік  процедуралары менен функцияларын  қолданып графиктік кескіндерді  құрастыруға болады. GRAPH модулі іске  қосылысымен оның ішіндегі процедуралар  мен функцияларды пайдалана беруге  болады. Графикалық режимді іске  қосу:

GRAPH модуліндегі процедуралар мен функцияларын пайдаланып экранға қандайда бір суретті шығару үшін ең алдымен графикалық режимді анықтап алу қажет. Бұл бөлімде графикалық режимді таңдау мен басқаруды игеріп, басқа бір режимге қалай көшу керектігін үйренуге болады. Процедураның жазылуы:

InitGraph (Var Driver, Mode: integer; Path: string);

мұндағы Driver– графикалық режимді анықтайтын параметр;

Mode – орнатылған драйверге байланысты берілетін графиктік режим параметрі;

Path – графиктік драйвер  файлының атауы және жолы. Егер Path мәні бос жолға сәйкес келсе, драйвердің файлын іздестіру қолданыстағы каталогта жүзеге асады.

Driver параметрінің мәні Graph модулінде берілген тұрақтылардың тізбегімен шектеледі. Тұрақтылардың атауы мен оладың мәндері келесі кестеде көрсетілген (кесте 1).

Кесте 1.

Тұрақтылар мен кодты  анықтайтын драйверлер

 

Тұрақтының атауы

Сандық коды

Detect

0 (Автоанықтау)

CGA

1

MCGA

2

EGA

3

EGA64

4

EGAMono

5

IBM8514

6

HercMono

7

ATT400

8

VGA

9

PC3270

10


 

Егер Driver параметрінің мәні Detect мәнімен тең болса (0), онда жүйе видеоадаптердің түрін автоматты түрде анықтауға кіріседі. Бұл жағдайды InitGraph DetectGraph процедурасын шақырады. Егер графикалық аппараттық қамтамасыз ету анықталған болса, сәйкесінше графикалық режим анықталады және графикалық режим қосылады.

GraphResult функцияcы Integer типінің  мәнін қабылдайды, ол қате орындалған  графиктік операциялардың кодын  шығарады. Егер қателік табылмаса,  онда функцияның мәні нөлге тең болады. Қателер коды 2 – кестеде көрсетілген. Функция жазылуы:

GraphResult: Integer;

Кесте 2.

GraphResult функцияcы үшін  қателер коды

 

    Тұрақты атауы

Коды

                       Анықтамасы

GrOk 

0

Қате жоқ

GrInitGraph

-1

Графиктік режим анықталмаған

GrNotDetected

-2

Адаптер типі анықталмаған

GrFileNotFind

-3

Драйвер типі табылмайды

GrInvalidDriver

-4

Анықталған файлда драйвер  табылмайды

GrNoLoadMem

-5

Драйверді жүктеуге жады көлемі жетпейді

GrNolScanMem

-6

Аймақты қарастыруға жады көлемі жетпейді

Gr NoFloodMem

-7

Аймақты толтыруға жады көлемі жетпейді

GrFontNotFound

-8

Қаріп файлы табылмайды

GrNoFontMem

-9

Қаріп файлы табылмайды

GrInvalidMode

-10

Анықталған драйверге  сәйкес келмейтін режим

GrError

-11

Жалпы қате

GrIOError

-12

Енгізу-шығару қатесі

GrInvalidFond

-13

Қаріптің дұрыс емес пішімі

GrInvalidFondNum

-14

Қаріптің нөмері дұрыс  емес


 

GraphResult функциясына қаратпадан  кейін қателік белгілері жойылады, сондықтан оған келесі қаратылу  нөлді әкеледі.

Көптеген графикалық процедуралар мен функциялар экранға ағымдық  позицияны көрсететін көрсеткішті  қолданады, сонымен қатар, ол мәтіндік курсорға қарағанда жасырын тұрады. Бұл көрсеткіш басқа да графикалық экрандағы координаталар секілді (0,0) координатасына ие бола отырып, экранның сол жақ жоғары бөлігінде орналасады. Сол арқылы экранның көлденең келген координатасы солдан оңға қарай, ал тігінен келген координатасы жоғардан төменге қарай үлкейеді.

GetMaxX және GetMaxY функциялары  Word типінің мәнін қабылдайды, олар  экранның ағымдық режимінде максималдық  координаталары  горизонталь және  вертикаль бағытта жұмыс істейді. Мысалға:

usesGrap;

var

a, b: Integer;

begin

a := Detect;

InitGraph (a, b, ‘’);

WriteLn (GetMaxX, GetMaxY:5);

Readln;

CioseGraph

end.

GetColor функциясы ағымдағы түстің мәнін қайтарады. Функцияның жазылуы:

Function GetColor : Word

Бұл функция SetColor функциясы  арқылы өзгертілген түстің мәнін  қайтарады.

GetX және GetY функциялары Integer типінің мәнін қабылдайды, олар  ағымдағы нүктенің тік және  көлденең координаталар мәнін  қайтарады.

GetX және GetY функцияларының  мәндері экранның сол жақ жоғарғы  бұрышынан нөлден басталып есептеледі. Функцияның жазылуы:

Function GetX : Integer;

FunctionGetY : Integer;

GetPixel функциясы Word типінің  мәнін қабылдайды, ол Х және  У координаталары бойынша орналасқан  нүкте түсінің кодын анықтайды.  Функцияның жазылуы: 

Function GetPixel (X, Y: Integer) : Word;

Бұндағы Х, Ү –нүкте координаталары.

Графикалық режимді анықтағаннан кейін осы аталған режимнен шығудың да жолы болады. Графикалық режимнен шығу үшін CloseGraph процедурасы қолданылады. Бұл процедура графикалық режимге көшпей тұрған кездегі видеорежимді қалпына келтіреді. Процедураның жазылуы:

procedure CloseGraph;

Турбо Паскальда суретті  экранға шығару кезінде түрлі  түстерді қолдану мүмкіндігі бар. Егер экранды толық немесе белгілі  бір толық фигураны бояу туралы сөз  болса, онда оны біртекті фон арқылы және кейбір сызықтар арқылы жүзеге асыруға  болады.

Белгілі бір түсті қажет  ететін суреттерді шығаратын Graph модуліндегі программалар SetColor процедураларының көмегімен іске асады. Жазылу түрі:

procedure SetColor(Color : Word);

Color параметрі қабылдай алатын Graph модуліндегі тұрақтылардың тізбегі арқылы анықталады. Бұл тұрақтылар тізбегі мен сәйкесінше кодттары кестеде берілген.

Кесте 3.

Түстің тұрақтылары мен  кодттары

 

Тұрақтының атауы

Коды

Түсі

Black

0

Қара

Blue

1

Қанық көк

Green

2

Қанық жасыл

Cyan

3

Көк-жасыл

Red

4

Қызыл

Magenta

5

Қошқыл көк

Brown

6

Қоңыр

LightGray

7

Ашық сұр

DarkGray

8

Қанық сұр

LightBlue

9

Көк

LightGreen

10

Ашық жасыл

LightCyan

11

Ашық көк-жасыл

LightRed

12

Қызғылт

LightMagenta

13

Таңқурай түсті

Yellow

14

Сары

White

15

Ақ

Blink

128

Жарқыл


 

Графиканы суреттеу кезінде  экрандағы тұйықталған облысты  толтыру (түспен немесе өрнектермен) қажеттігі  туындайды. Өрнекті және түсті таңдау үшін SetFillStyle процедурасы қолданылады. Процедураның жазылымы:

procedure SetFillStyle (Oattern : Word; Color : Word);

Кесте 4.

Тұрақтылар, оладың кодталуы мен толтыру түрлері

Тұрақтының атауы

Коды

Толтырылуы

EmptyFill

0

Біртекті фонның түсімен  боялған (өрнегі жоқ)

SolidFill

1

Біртекті түспен боялған (SetColor процедурасымен)

LineFill

2

LtSlashFill

3

SlashFill

4

BkSlashFill

5

LtBkSlashFill

6

HatchFill

7

XHatchFill

8

InterleaveFill

9

WideDotFill

10

CloseDotFill

11

UsesFill

12

Қолданушының таңдауы  бойынша


 

Графиканы суреттеу кезінде  бағдарды экрандағы бастапқы бағытты  берілген бағытқа қарай орналастыруға  тура келеді. Ол үшін Турбо Паскальда MoveTo және MoveRel процедуралары қолданылады. MoveTo процедурасы координата бойынша бастапқыда берілген нуктені берілген нүктеге көшіреді. Жазылуы: procedure MoveTo (x, y : Integer) ;

х және у экрандағы бағдарша орналасатын координтаның нүктесі

MoveTo процедурасы бағдаршаны оның бұрынғы орнына байланысты берілген қашықтыққа орналастырады.

procedure MoveTo (Dx, Dy : Integer) ;

Dx және Dy – х және у координаталарының орын ауыстыруы.

Егер бағдарша (х, у) координатасындағы  нүктеде орналасса, онда MoveRel оған жаңа координаталарды белгілейді: (x+Dx, y+Dy). MoveTo және MoveRel процедураларының айырмашылығын келесі суреттен көруге болады.

 


 



 

Сурет 1. MoveTo процедурасы экранның сол жақ жоғары бөлігінен (х, у параметрлі), ал MoveRel процедурасы белгіленген бөліктен (Dx, Dy параметрлі) бастап санақ жүргізеді

 

Үлкен тіктөртбұрыш бұнда  экранның ауданын білдіреді. Бағдаршаны  А нүктеден В нүктесіне орналастыру керек деп есептелінеді. Егер осы жағдайда MoveTo параметрін қолданатын болса, онда процедурада параметрлер ретінде

х және у мәндерін хабарлау керек. Ал MoveRel процедурасына параметрі Dx және Dy болатындығы хабарланса, берілген бағдаршаны керек жерге орналастырады.

Графикалық терезелерді  құру. Графиктің шығуын тек жалпы экранға ғана емес, сонымен қатар терезе деп аталатын белгіленген облыста да шығаруға болатындығы белгілі болды. Турбо Паскальда графикалық режимде терезені құру үшін SetViewPort прцедурасы қолданылады. процедураның жазылуы:

procedure SetViewPort (x1, y1, x2, y2  : Integer; Clip : Boolean);

(х1, у1) – бұнда терезенің жоғарғы сол жағын анықтайтын координаталар; (х2, у2) – терезенің төменгі оң жақ бөлігін анықтайтын координаталар; Clip – терезеге сыймайтын суретті экранға шығуы тиістілігін анықтайтын параметр.

Clip параметрі TRUE және FALSE болатын екі мәнді қабылдайды. Graph модулінде анықталған мәнді екі тұрақты арқылы беруге болады, олар – ClipOn және ClipOff.

Const

      ClipOn   =True;

      ClipOff   = False;

  Егер Clip параметрі ClipOff мәніне ие болса, онда сурет терезеге толығымен шығатын болады. Ал егерде Clip параметрі ClipOn мәніне ие болса, онда суреттің белгілі бір бөлігі терезеге сыймай қалып, шеті бойынша қиылып қалады. Оның көрінісін келесі суреттен көруге болады.


 

 

 

 

 

 

Сурет-2. Сол жақ терезенің  Clip параметрі ClipOff мәнін, ал оң жақ терезе ClipOn мәні қабылдайды

 

Сызықтың суреті терезеде басталады және оның шегімен аяқталады. Сол жақ терезенің сызығы толығымен  көрінеді, ал оң жақ терезенің сызығы оның шеті бойынша қиылады.

Егер экранға тіктөртбұрышты тұрғызу керек болған жағдайда, ол үшін бөлек төрт сызықты шығарудың қажеті жоқ, бұл кезде арнайы Rectrange процедурасын қолданса жеткілікті. Rectrange процедурасы Сызықтарының түсі мен стилі берілген тіктөртбұрышты суреттейді. Процедураны жазылымы:

procedure Rectrange (х1, у1, х2, у2 : Integer);

Бұнда (х1, у1) және (х2, у2) координаталарымен  берілген тіктөртбұрыштың сол жақ  жоғарғы және оң жақ төменгі бұрыштары  берілген.

Bar процедурасы экранға  толтырылған тіктөртбұрыштарды  шығаруға көмектеседі. Жазылуы: procedure Bar(x1, y1, x2, y2 : Integer);

(x1, y1) және (x2, y2) тіктөртбұрыштың сол жақ жоғарғы, оң жақ төменгі бөлігіне сәкес келетін координаталар. Оларды толтыру үшін SetFillStyle және SetFillPattern роцедуралары арқылы орындалатын шаблондар мен түстер қолданылады.

Сонымен қатар шеңберді де экранға шығаруға болады. Ол үшін саны көп қырлы көпбұрышты тұрғызады. Бірақ Circle процедурасын қолдану арқылы жұмысты жеңілдетудің жолы бар. Процедураның жазылуы:

procedure Circle(x, y: Integer; Rad : Word);

Бұндағы (х, у) – центрдің координаталары,  Rad – шеңбердің радиусы. Шебердің іші SetColor процедурасының көмегімен боялады. Сонымен қатар сызықтың стилі де қолданылады, ол SetLineStyle процедурасы арқылы жүзеге асады, ескере кететін жайт сызықтың типі қандай болмасын шеңбер әрқашан тұтас сызықпен салынады.

 

1. 2 Спрайттар –  ойындар программасын құру

Программалауда анимация әсерлері көптеп пайдаланылады, яғни динамикалық қозғалыстағы суретті шығару үшін жүзеге асырылады. Бұл терминді статикалық (қозғалмайтын) суретке «жан біту» немесе «тірілуі» деп аударуға болады. «Жанды суреттер» компьютерлік графикада көңіл көтеру үшін қолданылуы мүмкін, оған компьютерлік ойындар мысал бола алады. Қазіргі заманға сай киноларды анимациялардың көмегімен тұрғызылған спецэфектткрдің қолдануынсыз елестету мүмкін емес секілді. Анимациялардың сонымен қатар бұданда зор жауапкершілікті талап ететін ғылыми және инженерлік графикада өзіндік қосымшалары бар.

Ағылшын тілдік арнайы әдебиетте  computer-assisted animation және computer-generated animation терминдері қолданылады. Бірінші жағдайда адамның дәстүрлі түрде анимацияның кадрларын құру туралы айтады, ал компьютер өтіп жатқан барлық кадрларды салып отырады. Бұнда қозғалыстағы суреттерді компьютердің өзі салып жатқандығы қызықтыра түседі.

Қозғалыстағы суреттің иллюзиясы  қозғалмайтын суреттің (кадрлардың) түрлі фазадағы жалғасқан қозғалысын көрсетеді. Суреттің ауысып отыруы тез жүру керек. Адамның көзқарасы кейбір инерцияларды қамтиды. Соған байланысты кадрлардың бірінен соң бірінің жалғасын табуы қалқып жүргендей әсер қалдырады. Егер суреттің алмасып отыруының жылдамдығы төмендейтін болса, онда қозғалыстың иллюзиясы сақталғанымен қозғалыс адамға үзікті көрінетін болады. Жоғары жылдамдық болып жылдамдығы секундына 30 кадрды көрсетуі болып табылады.

Дисплейдің экранына динамикалық  суретті шығару үшін кадрлардың жалғасқан қозғалысының шығуын программалау қажет. Бұл жағдайда кадрлардың алмасуы жеткілікті деңгейде жоғары болу қажет. Динамикалық программалаудың негізгі мәселелері осында жатыр. Егер әрбі кадр саны көп графикалық элементтерден, сонымен қатар стрибуттарынан тұратын күрделі суреттерден құралған болса, мысалы, жарықты реттеу шарты және т.б., онда бұл мәселені шешу қиынға түседі.

Анимацияларды программада  қолданудың оңай жолы ол – қарапайым  түрде графикалық экранға сурет  салу болып табылады. Осы әдіс cubes прогаммасында да қолданылады. Бұнда қарапайым суреттер пайдаланылады, алайда бұл жағдайда да суреттің тартыншақтап жылтаңдауын байқауға болады.

 

         1.3 Динамикалық қозғалыстағы суреттер

Динамикалық суреттерді программалаудың көп таралған тәсілдері спрайттарды қолдану болып табылады. Спрайттар әсіресе компьютерлік ойындарды программалауда жиі қолданылады. Спрайт әдебиеттерде динамикалық графикалық суреттерді құрайтын ақпараттық және программалық құраушысы ретінде анықталады. Спрайт экранда басқа суреттерден тәуелсіз қозғала алатын шағын көлемді гафикалық суреттерден тұрады. Спрайт негізгі суретті жауып тұру арқылы орналасады.

Ендеше спрайттың программалауын қарастыруға болады. Ең алдымен спрайттың  келесі түрдегі құрылыммен байланысты екндігін айта кету керек:

type

     SpriteType = record

          Height. Width : integer;

          Data                : pointer;

     end;

Бұл жазылымның жолы спрайттың  өлшемі туралы ақпараттан (оның биіктігі мен ені) және суреттің алып тұрған орнының жадына бағытталған бағдаршадан тұрады. Осы іс-әрекеттерді орындау үшін CreatSprite және KillSprite процедуралары қолданылады. Сонымен қатар бір ғана нүктені сақтау үшін 1 байт көлемінде жады кететіндіге болжам жасалған.

 

procedure CreateSprite(var Sprite : SpriteType; Width, Height : integer);

 

begin

      if Sprite.Data <> nil then

          KillSprite(Sprite) ;

          Sprite.Width := Width;

          Sprite.Height := Height;

          getmem(Sprite.Data, Width*Height);

      end;

 

      procedure KillSprite(var Sprite : SpriteType);

      begin

          with Sprite do

          begin

                FreeMem(Date, Width * Height);

                Width := 0;

                Height := 0;

                Data := nil;

          end;

      end;

Бұл берілген спрайттың құрылымына сәйкес спрайтты құру және жою оның алып тұрған жадында орын алумен немесе босатылуымен анықталады. Енді бұрыннан бар процедураны пайдаланып жады (GetSprite) түрінде болатын тікбұрышты үшбұрышты экранға шығарамыз, ал оның экранға шығарылуы (DrawSprite) арқылы жүзеге асады:

procedure getsprite (var sprite : spritetype; x1, y1, x2, y2 : integer);

 

var

      index, x, y : integer;

 

begin

      createsprite(sprite, x2-x1+1, y2-y1+1);

      index := 0;

      for  y := y1 to y2 do

           for x := x1 to x2 do

           begin

                 sprite.data^[index] := getpixel (x, y);

                 inc (index);

            end;

end;

 

procedure drawsprite (var sprite : spritetype; x, y : integer);

 

var

      index, xi, yi : integer;

 

begin

      index := 0;

      for  yi := 0 to sprite.height - 1 do

           for x := 0 to sprite.width - 1 do

           begin

                 putpixel (xi + x, yi + y, sprite.data^[index] ;

                 inc (index);

            end;

end;

Бұл процедуралардың біріншісі  экранның аумағында берілген әрбір  нүктенің түсін жай ғана жадыға сақтап отырады, ал екіншісі оған қарама-қарсы  әрекет жасайды. Көрсетілген процедуралардың  барлығы sprite программасында қолданылған, келесі есептен көруге болады.

Sprite программасы

program sprite;

 

uses

      crt, graph, graphs;

 

type

      byterraytype = array[0. .65534] of byte;

      bytearrayptr = ^bytearraytype;

      spritetype = record

            height, width : integer;

            data                : bytearrayptr;

      end;

var

      backgroundsprite, testsprite : spritetype;

      xd, yd, ox, oy, i, x, y          : integer;

 

procedure killsprite(var sprite : spritetype);

procedure createsprite(var sprite : spritetype; width, height : integer);

procedure getsprite(var sprite : spritetype; x1, y1, x2, y2 : integer);

procedure drawsprite(var sprite : spritetype; x, y : integer);

begin

      open_graph;

      setgraphmode(ega64lo);

      line(10, 1, 10, 20);

      line(1, 10, 20, 10);

      line(1, 1, 20, 20);

      line(20, 1, 1, 20);

      gersprite(testsprite, 0, 0, 21, 21);

      x := 0;

      y := 0;

      xd := 1;

      yd := 1;

      white not keypressed do

      begin

            drawsprite(testsprite, x, y);

            inc(x, xd);

            inc(y, yd);

            if (x = getmaxx - 20) or (x = -20) then

                xd := -xd;

            if (y  = getmaxy - 20) or (y = -20) then

                yd := -yd;

      end;

      readln;

clearviewport;

setcolor(green);

for i := 0 to 100 do

      line(random(getmaxx), random(getmaxy), random(getmaxx),

           random(getmaxy));

x := 0;

y := 0;

xd := 1;

xy := 1;

while not keypressed do

begin

      drawsprite(testsprite, x, y);

      inc(x, xd);

      inc(y, yd);

      if (x = getmaxx - 20) or (x = -20) then

            xd := -xd;

      if (y = getmaxy - 20) or (y = -20) then

            yd := -yd;

end;

readln;

 

clearviewport;

setcolor(green);

for i := 0 to 100 do

      line(random(getmaxx), random(getmaxy), random(getmaxx),

           random(getmaxy));

x := 0;

y := 0;

xd := 1;

yd := 1;

while not keypressed do

begin

      getsprite(backgroundsprite, x, y, x + 22, y + 22);

      drawsprite(testsprite, x, y);

      ox := x;

      oy := y;

      inc(x, xd);

      inc(y, yd);

      if (x = getmaxx - 20) or (x = -20) then

          xd := -xd;

      if (y = getmaxy - 20) or (y = -20) then

          yd := -yd;

      drawsprite(backgroundsprite, ox, oy);

end;

drewsprite(testsprite, x, y);

readln;

close_graph;

end.

Программаның басында  графикалық режим анықталғаннан  кейін төрт қиылысқан түзуден тұратын спрайт тұрғызылады. Бұл сурет жадыда сақталып, while not keypressed do... арқылы экранға қозғалып шығады. Циклдағы қосымша шартты операторлар спрайттың енгізудің шекаралық облысымен «соударение»сін шекарадан зеркальное отображение бағытында жөндеп отырады. Бірінші циклде қозғалыс бос кеңістікте орын алады, екінші циклде қозғалыс хаостық түрде орналасқан түзу сызық қиындыларымен толтырылған кеңістікте орындалады. Тіпті қатты қозғалмаған жағдайдың өзінде де қозғалыс қалқыма түрінде көрінеді. Екінші жағдайда спрайттың соңынан қаралау із қалдыруы жағымсыз реакцияның бірі болып табылады. Ал соңғы үшінші цикл егер де сурет белгілі бір құнды талап еткен жағдайда не істеу керек екендігін көрсетеді. Бұнда берілген шарт бойынша облыс фонынан құралатын екінші спрайтты енгізу керек. Содан қозғалыстағы спрайт түссіздене бастайды, бірақ қайта салып отыруға уақыт кетеді де сурет мерцаюший бола бастайды. Бұл жайсыздықтан құтылу үшін спрайт арқылы процедураның жұмысын оңтайландыру арқылы жүзеге асады. Осы бағыттағы шешуші қадам бұл – ассемблерде жазылған Паскаль тіліндегі программалау мен процедураларды қолданудан бас тарту болып табылады. Турбо Паскаль ассемблердің кодын қоюына мүмкіндік береді, бірақ бұл мүмкіндікті пайдалану үшін ассемблерде программалауды білу қажет.

 

2. Шашка ойынын  Паскаль программалау тілінде  құру

2.1 Шашка ойнынын  алгоритмдік түсінігі

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Қорытынды

 

Курстық жұмысымды қорытындылай келе Паскаль тіліндегі графикалық режимде шашка ойандарының программасын құру туралы көптеген мағлұмат алғанымды  айта кеткім келеді. Graph режимінің көмегімен іске асатындығы байқалды.

Функция графигін Паскаль программалау тілінде тұрғызу графикадағы өзекті тақырыптардың бірі болып табылады. Бұл арқылы графиканың программасын құрып қана қоймай, оның графикалық түрде әсемделген бейнесін, яғни суретін алуға, анимацияларды қолдануға және де ойын барысын құруға болады.

4.0 баламасынан бастап Турбо Паскальдың құрамына басқа баламаларда да өзгеріссіз қалатын Graph программаішілік  қуатты кітапхана орнатылған. Кітапхана, жалпы алғанда, 50-ден астам процедуралар мен функциялардан құралады, сонымен қатар, программистке графикалық экранда әртүлі басқару әдістерін ұсынады. Кітапханамен танысуды жеңілдету үшін оның құрамына кіретін процедуралар мен функциялар функционалдық принцип бойынша топталған.

Graph модулі көптеген графикалық операторлармен жұмыс істеуге мүмкіндік береді. Бұл модуль көмегімен тек сурет салып қана қоймай, оны қозғалысқа келтіретін бағдарламалар да құруға болады. Сонымен қатар, компьютер мүмкіндігіндегі барлық бояу түрлерін пайдаланып, әр түрлі тәсілдермен әрлеуге, мәтіндер жазуға болатындығына курстық жұмысымды зерттеу кезінде көз жеткіздім. Ал Graph модулінің өзі график тұрғызуға қажетті бірнеше негізгі функциялардан тұрады. GraphResult – қате орындалған графиктік операциялардың кодын шығарады, GetColor – функциясы ағымдағы түстің мәнін қайтарады, GetPixel – Х және У координаталары бойынша орналасқан нүкте түсінің кодын анықтайды, GetX және GetY – ағымдағы нүктенің тік және көлденең координаталар мәнін қайтарады, PutPixel – Х, У координатасындағы нүктелерді экранға шығару, Line – координатасы (Х1, Y1) болатын нүктелері (Х2, Y2) координатасының нүктелерін түзу жүргізу арқылы қосылуды іске асырады, Rectangle – тіктөртбұрыш жақтарымен, координата осьтеріне параллель координаталары (X1,Y1) және (X2, Y2) тіктөртбұрышының диогональдарының бірін анықтайды, Bar – боялған тіктөртбұрыш, Circle – (X, Y) нүктесіндегі шеңбердің центрі шығарылады (integer типті), Arc – экранға (X, Y) нүктесіндегі шеңбердің центрінің доғасы шығарылады, бұрыштары градуспен белгіленеді, ал доға сағғат тіліне қарсы бағытталады, сол секілді және тағы басқа функциялар мысал бола алады. Бұл функциялар әр түрлі типтерді қамтып, график тұрғызуға қажетті элементтерді толықтырып отырады.

Pascal программалау тілінде “Шашка” ойынының программасын құру