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


МАЗМҰНЫ
Кіріспе . . . 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. 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.
Тұрақтылар мен кодты анықтайтын драйверлер
Егер Driver параметрінің мәні Detect мәнімен тең болса (0), онда жүйе видеоадаптердің түрін автоматты түрде анықтауға кіріседі. Бұл жағдайды InitGraph DetectGraph процедурасын шақырады. Егер графикалық аппараттық қамтамасыз ету анықталған болса, сәйкесінше графикалық режим анықталады және графикалық режим қосылады.
GraphResult функцияcы Integer типінің мәнін қабылдайды, ол қате орындалған графиктік операциялардың кодын шығарады. Егер қателік табылмаса, онда функцияның мәні нөлге тең болады. Қателер коды 2 - кестеде көрсетілген. Функция жазылуы:
GraphResult: Integer;
Кесте 2.
GraphResult функцияcы үшін қателер коды
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.
Түстің тұрақтылары мен кодттары
Графиканы суреттеу кезінде экрандағы тұйықталған облысты толтыру (түспен немесе өрнектермен) қажеттігі туындайды. Өрнекті және түсті таңдау үшін SetFillStyle процедурасы қолданылады. Процедураның жазылымы:
procedure SetFillStyle (Oattern : Word; Color : Word) ;
Кесте 4.
Тұрақтылар, оладың кодталуы мен толтыру түрлері
Графиканы суреттеу кезінде бағдарды экрандағы бастапқы бағытты берілген бағытқа қарай орналастыруға тура келеді. Ол үшін Турбо Паскальда 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 процедурасы арқылы жүзеге асады, ескере кететін жайт сызықтың типі қандай болмасын шеңбер әрқашан тұтас сызықпен салынады.
- 2 Спрайттар - ойындар программасын құру
Программалауда анимация әсерлері көптеп пайдаланылады, яғни динамикалық қозғалыстағы суретті шығару үшін жүзеге асырылады. Бұл терминді статикалық (қозғалмайтын) суретке «жан біту» немесе «тірілуі» деп аударуға болады. «Жанды суреттер» компьютерлік графикада көңіл көтеру үшін қолданылуы мүмкін, оған компьютерлік ойындар мысал бола алады. Қазіргі заманға сай киноларды анимациялардың көмегімен тұрғызылған спецэфектткрдің қолдануынсыз елестету мүмкін емес секілді. Анимациялардың сонымен қатар бұданда зор жауапкершілікті талап ететін ғылыми және инженерлік графикада өзіндік қосымшалары бар.
Ағылшын тілдік арнайы әдебиетте computer-assisted animation және computer-generated animation терминдері қолданылады. Бірінші жағдайда адамның дәстүрлі түрде анимацияның кадрларын құру туралы айтады, ал компьютер өтіп жатқан барлық кадрларды салып отырады. Бұнда қозғалыстағы суреттерді компьютердің өзі салып жатқандығы қызықтыра түседі.
Қозғалыстағы суреттің иллюзиясы қозғалмайтын суреттің (кадрлардың) түрлі фазадағы жалғасқан қозғалысын көрсетеді. Суреттің ауысып отыруы тез жүру керек. Адамның көзқарасы кейбір инерцияларды қамтиды. Соған байланысты кадрлардың бірінен соң бірінің жалғасын табуы қалқып жүргендей әсер қалдырады. Егер суреттің алмасып отыруының жылдамдығы төмендейтін болса, онда қозғалыстың иллюзиясы сақталғанымен қозғалыс адамға үзікті көрінетін болады. Жоғары жылдамдық болып жылдамдығы секундына 30 кадрды көрсетуі болып табылады.
Дисплейдің экранына динамикалық суретті шығару үшін кадрлардың жалғасқан қозғалысының шығуын программалау қажет. Бұл жағдайда кадрлардың алмасуы жеткілікті деңгейде жоғары болу қажет. Динамикалық программалаудың негізгі мәселелері осында жатыр. Егер әрбі кадр саны көп графикалық элементтерден, сонымен қатар стрибуттарынан тұратын күрделі суреттерден құралған болса, мысалы, жарықты реттеу шарты және т. б., онда бұл мәселені шешу қиынға түседі.
Анимацияларды программада қолданудың оңай жолы ол - қарапайым түрде графикалық экранға сурет салу болып табылады. Осы әдіс cubes прогаммасында да қолданылады. Бұнда қарапайым суреттер пайдаланылады, алайда бұл жағдайда да суреттің тартыншақтап жылтаңдауын байқауға болады.
- Динамикалық қозғалыстағы суреттер
Динамикалық суреттерді программалаудың көп таралған тәсілдері спрайттарды қолдану болып табылады. Спрайттар әсіресе компьютерлік ойындарды программалауда жиі қолданылады. Спрайт әдебиеттерде динамикалық графикалық суреттерді құрайтын ақпараттық және программалық құраушысы ретінде анықталады. Спрайт экранда басқа суреттерден тәуелсіз қозғала алатын шағын көлемді гафикалық суреттерден тұрады. Спрайт негізгі суретті жауып тұру арқылы орналасады.
Ендеше спрайттың программалауын қарастыруға болады. Ең алдымен спрайттың келесі түрдегі құрылыммен байланысты екндігін айта кету керек:
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) ;
…
... жалғасы- Іс жүргізу
- Автоматтандыру, Техника
- Алғашқы әскери дайындық
- Астрономия
- Ауыл шаруашылығы
- Банк ісі
- Бизнесті бағалау
- Биология
- Бухгалтерлік іс
- Валеология
- Ветеринария
- География
- Геология, Геофизика, Геодезия
- Дін
- Ет, сүт, шарап өнімдері
- Жалпы тарих
- Жер кадастрі, Жылжымайтын мүлік
- Журналистика
- Информатика
- Кеден ісі
- Маркетинг
- Математика, Геометрия
- Медицина
- Мемлекеттік басқару
- Менеджмент
- Мұнай, Газ
- Мұрағат ісі
- Мәдениеттану
- ОБЖ (Основы безопасности жизнедеятельности)
- Педагогика
- Полиграфия
- Психология
- Салық
- Саясаттану
- Сақтандыру
- Сертификаттау, стандарттау
- Социология, Демография
- Спорт
- Статистика
- Тілтану, Филология
- Тарихи тұлғалар
- Тау-кен ісі
- Транспорт
- Туризм
- Физика
- Философия
- Халықаралық қатынастар
- Химия
- Экология, Қоршаған ортаны қорғау
- Экономика
- Экономикалық география
- Электротехника
- Қазақстан тарихы
- Қаржы
- Құрылыс
- Құқық, Криминалистика
- Әдебиет
- Өнер, музыка
- Өнеркәсіп, Өндіріс
Қазақ тілінде жазылған рефераттар, курстық жұмыстар, дипломдық жұмыстар бойынша біздің қор #1 болып табылады.

Ақпарат
Қосымша
Email: info@stud.kz