êóðñîâûå,êîíòðîëüíûå,äèïëîìû,ðåôåðàòû
Ìèíèñòåðñòâî îáðàçîâàíèÿ è íàóêè Ðîññèéñêîé Ôåäåðàöèè
Êóðñêèé ãîñóäàðñòâåííûé òåõíè÷åñêèé óíèâåðñèòåò
Êàôåäðà ÏÎ è ÂÒ
ÊÓÐÑÎÂÀß ÐÀÁÎÒÀ
ïî äèñöèïëèíå «Ïðîãðàììèðîâàíèå íà ÿçûêàõ âûñîêîãî óðîâíÿ»
ÈÃÐÀ «ÌÎÇÀÉÊÀ»
Âûïîëíèë: ñòóäåíòêà ãðóïïû ÏÎ-51
Åëèçàâåòà Êîðîëåâà
ñòóäåíòêà ãðóïïû ÏÎ-51
Àíàñòàñèÿ Çèíîâüåâà
Ïðîâåðèë: ïðåïîäàâàòåëü Ïåòðèê Å. À.
Êóðñê 2006
ÑÎÄÅÐÆÀÍÈÅ
1. ÒÅÕÍÈ×ÅÑÊÎÅ ÇÀÄÀÍÈÅ. 4
1.1 Ââåäåíèå. 4
1.2 Îñíîâàíèÿ äëÿ ðàçðàáîòêè. 4
1.3 Íàçíà÷åíèå ðàçðàáîòêè. 4
1.3.1 Ôóíêöèîíàëüíîå è ýêñïëóàòàöèîííîå íàçíà÷åíèå èçäåëèÿ. 4
1.3.1.1 Ïåðå÷åíü òðåáîâàíèé ïîëüçîâàòåëÿ ê ïðîãðàììíîìó îáåñïå÷åíèþ.. 4
1.3.1.2 Ðàññìîòðåííûå àëüòåðíàòèâû.. 4
1.3.2 Òðåáîâàíèÿ ê ïðîãðàììå èëè ïðîãðàììíîìó èçäåëèþ.. 5
1.3.2.1 Ñòàíäàðòû.. 5
1.3.2.2 Ïðîãðàììíàÿ ñîâìåñòèìîñòü. 5
1.3.2.3 Òðåáîâàíèÿ ê ñîñòàâó è ïàðàìåòðàì òåõíè÷åñêèõ ñðåäñòâ. 5
1.3.2.4 Âõîäíûå äàííûå. 5
1.3.2.5 Ïðîöåññ îáðàáîòêè. 6
1.3.2.6 Âûõîäíûå äàííûå. 6
1.3.2.7 Ðåçóëüòèðóþùèå êîìïîíåíòû èçäåëèÿ. 6
1.3.2.8 Íîñèòåëè èíôîðìàöèè. 6
1.3.2.9 Áåçîïàñíîñòü è ñåêðåòíîñòü. 7
1.3.2.10 Òðåáîâàíèÿ ê íàäåæíîñòè. 7
1.3.2.11 Ðåñòàðò. 7
1.3.2.12 Ìîáèëüíîñòü. 7
1.3.2.13 Òðåáîâàíèÿ ê ïðîãðàììíîé äîêóìåíòàöèè. 7
1.4 Ñòàäèè è ýòàïû ðàçðàáîòêè. 7
1.5 Ïîðÿäîê êîíòðîëÿ è ïðèåìêè. 8
2.ÐÀÁÎ×ÈÉ ÏÐÎÅÊÒ. 8
2.1 Ââåäåíèå. 8
2.2 Ôóíêöèîíàëüíûå è ýêñïëóàòàöèîííûå õàðàêòåðèñòèêè èçäåëèÿ. 8
2.2.1 Ïðîãðàììíûå îãðàíè÷åíèÿ. 8
2.2.2 Òðåáîâàíèÿ ê ñîñòàâó è ïàðàìåòðàì òåõíè÷åñêèõ ñðåäñòâ. 9
2.2.3 Ðåçóëüòèðóþùèå êîìïîíåíòû èçäåëèÿ. 9
2.2.4 Òðåáîâàíèÿ ê íàäåæíîñòè. 9
2.2.5 Óäîáñòâî ýêñïëóàòàöèè. 9
2.2.6 Ìîáèëüíîñòü. 10
2.3 Îïèñàíèå ìîäóëåé. 10
2.3.1 Ìîäóëü Unit1. 10
2.3.1.1 Òàáëèöà êîìïîíåíòîâ. 10
2.3.1.2 Âíåøíèé âèä ôîðìû.. 10
2.3.1.2 Âõîäíûå äàííûå. 11
2.3.1.3 Ïðîìåæóòî÷íûå äàííûå. 11
2.3.1.4 Âûõîäíûå äàííûå. 11
2.3.1.5 Áëîê-ñõåìû àëãîðèòìîâ. 11
2.3.1.6 Òåêñò ìîäóëÿ. 11
2.3.2 Ìîäóëü Unit2. 12
2.3.2.1 Âõîäíûå äàííûå. 12
2.3.2.2 Ïðîìåæóòî÷íûå äàííûå. 12
2.3.2.3 Âûõîäíûå äàííûå. 12
2.3.2.4 Áëîê-ñõåìû àëãîðèòìîâ. 12
2.3.2.5 Òåêñò ìîäóëÿ. 12
ÏÐÈËÎÆÅÍÈß.. 13
ÑÏÈÑÎÊ ÈÑÏÎËÜÇÓÅÌÎÉ ËÈÒÅÐÀÒÓÐÛ.. 37
Ðàçðàáîòêà ñîáñòâåííûõ ïðèëîæåíèé â íàñòîÿùåå âðåìÿ âûçûâàåò èíòåðåñ ó ìíîãèõ ëþäåé, ÷üè óìåíèÿ â ñôåðå ðàçðàáîòêè ïîçâîëÿþò îñóùåñòâèòü ïîñòàâëåííóþ çàäà÷ó. ß ðåøèë íàïèñàòü èãðîâîå ïðèëîæåíèå, ãëàâíàÿ çàäà÷à êîòîðîãî çàñòàâèòü ïîëüçîâàòåëÿ îòâëå÷üñÿ îò ïðîáëåì ïîâñåäíåâíûõ, ò.å. ðàçâëå÷üñÿ, ÷òî, ñîáñòâåííî, ÿâëÿåòñÿ çàäà÷åé âñåõ èãð.
Îñíîâàíèåì äëÿ ðàçðàáîòêè ïðîãðàììû ÿâëÿåòñÿ çàäàíèå ê êóðñîâîé ðàáîòå ïî ïðåäìåòó «Ïðîãðàììèðîâàíèå íà ÿçûêàõ âûñîêîãî óðîâíÿ».
Èãðà «Ìàçàéêà» äîëæíà îáåñïå÷èâàòü ñëåäóþùåå:
- åñëè êàðòèíêà ñîáðàíà ïîëíîñòüþ, âûâîäèòñÿ ñîîáùåíèå î çàâåðøåíèè èãðû;
- èìååòñÿ âîçìîæíîñòü âûáèðàòü êàðòèíêè;
- ìîæíî íà÷èíàòü èãðó çàíîâî.
1.3.1.2 Ðàññìîòðåííûå àëüòåðíàòèâû
Ïðè ïîñòàíîâêå çàäà÷è íà ðàçðàáîòêó ïðîãðàììû «Ìàçàéêà» áûëè ðàññìîòðåíû ñëåäóþùèå àëüòåðíàòèâû:
- Ïðîãðàììíàÿ ïëàòôîðìà.
Ðàññìàòðèâàëèñü îïåðàöèîííûå ñèñòåìû Windows è Linux. Áûëà âûáðàíà ñèñòåìà Windows â ñâÿçè ñ øèðî÷àéøèì åå ðàñïðîñòðàíåíèåì, äîñòóïíîñòüþ è íàëè÷èåì ãèáêèõ ñðåäñòâ ðàçðàáîòêè ïðîãðàììíîãî îáåñïå÷åíèÿ ïîä ýòó ïëàòôîðìó.
- Ñðåäñòâà ðàçðàáîòêè. Áûëè ðàññìîòðåíû ñëåäóþùèå ñðåäñòâà ðàçðàáîòêè: Delphi è Ñ++ Builder. Áûë âûáðàí Borland Delphi7. Âûáîð îáîñíîâàí ïîïóëÿðíîñòüþ è äîñòóïíîñòüþ äàííîãî ïðîãðàììíîãî îáåñïå÷åíèÿ.
1.3.2.1 Ñòàíäàðòû
Ðàçðàáîòêà ïðîãðàììíîé äîêóìåíòàöèè è ïðîãðàììû äîëæíà ïðîèçâîäèòüñÿ ñîãëàñíî ÅÑÏÄ, ÃÎÑÒ 19.701-90, ÃÎÑÒ 2.304-88.
1.3.2.2 Ïðîãðàììíàÿ ñîâìåñòèìîñòü
Äàííàÿ ïðîãðàììà äîëæíà ðàáîòàòü àâòîíîìíî ïîä óïðàâëåíèåì
îïåðàöèîííûõ ñèñòåì Windows 98, Windows ME, Windows 2000, Windows XP.
1.3.2.3 Òðåáîâàíèÿ ê ñîñòàâó è ïàðàìåòðàì òåõíè÷åñêèõ ñðåäñòâ
Ïðîãðàììíûé ïðîäóêò äîëæåí ðàáîòàòü íà êîìïüþòåðàõ ñî ñëåäóþùèìè õàðàêòåðèñòèêàìè:
· îáúåì ÎÇÓ 512 Ìá;
· îáúåì æåñòêîãî äèñêà 40 Ãá;
· ìèêðîïðîöåññîð Intel Celeron 400 ÌÃö;
· ìîíèòîð 17” ñ ðàçðåøåíèåì 1024*768;
· çâóêîâàÿ êàðòà.
1.3.2.4 Âõîäíûå äàííûå
Âõîäíûìè äàííûìè ïðîãðàììû ÿâëÿþòñÿ:
· âûáðàííàÿ êàðòèíêà;
· ñèãíàëû ìàíèïóëÿòîðà «ìûøü»;
1.3.2.5 Ïðîöåññ îáðàáîòêè
· Ïðè çàïóñêå ïðîãðàììíîãî èçäåëèÿ äîëæíî ïðîèñõîäèòü îòêðûòèå ïðîãðàììíîé îáîëî÷êè (ôîðìû).
1.3.2.6 Âûõîäíûå äàííûå
Âûõîäíûìè äàííûìè ïðîãðàììû ÿâëÿþòñÿ:
· ñîîáùåíèå î âûèãðûøå, åñëè êàðòèíêà ñîáðàíà.
1.3.2.7 Ðåçóëüòèðóþùèå êîìïîíåíòû èçäåëèÿ
 êîìïëåêò ïîñòàâêè ïðîãðàììíîãî ïðîäóêòà äîëæíû âõîäèòü ñëåäóþùèå
êîìïîíåíòû:
· èñïîëíèòåëüíûé ôàéë ïðîãðàììû;
· ðàáî÷èå ìîäóëè ïðîãðàììû;
· ïðîãðàììíàÿ äîêóìåíòàöèÿ íà èçäåëèå.
1.3.2.8 Íîñèòåëè èíôîðìàöèè
Ïðîãðàììà ïîñòàâëÿåòñÿ íà äèñêåòå ðàçìåðîì 3,5 äþéìà è îáúåìîì 1,44 Ìá.
1.3.2.9 Áåçîïàñíîñòü è ñåêðåòíîñòü
Èíôîðìàöèÿ, ñîäåðæàùàÿñÿ â èçäåëèè, íå ÿâëÿåòñÿ ñåêðåòíîé, ïîýòîìó ïðîãðàììà íå òðåáóåò çàùèòû.
1.3.2.10 Òðåáîâàíèÿ ê íàäåæíîñòè
Ïðîãðàììà äîëæíà ïðîéòè ôóíêöèîíàëüíîå òåñòèðîâàíèå è óñïåøíî îòðàáîòàòü íà âñåõ òåñòàõ. Òåñòû ðàçðàáàòûâàþòñÿ íà ýòàïå âûïîëíåíèÿ ðàáî÷åãî ïðîåêòà.
1.3.2.11 Ðåñòàðò
Âîññòàíîâëåíèÿ äàííûõ ïðè ïðîãðàììíîì èëè àïïàðàòíîì ñáîÿõ íå
ïðåäóñìàòðèâàåòñÿ.
1.3.2.12 Ìîáèëüíîñòü
Ïðîãðàììà äîëæíà ñâîáîäíî ïåðåíîñèòüñÿ ñ îäíîãî êîìïüþòåðà íà äðóãîé ïðè ïîìîùè ñîîòâåòñòâóþùèõ íîñèòåëåé èíôîðìàöèè.
1.3.2.13 Òðåáîâàíèÿ ê ïðîãðàììíîé äîêóìåíòàöèè
Ïðîãðàììíàÿ äîêóìåíòàöèÿ äîëæíà ðàçðàáàòûâàòüñÿ ñîãëàñíî ÅÑÏÄ, ÃÎÑÒ 19.701-90, ÃÎÑÒ 2.304-88.
Ïðîãðàììíàÿ äîêóìåíòàöèÿ äîëæíà âêëþ÷àòü ñëåäóþùèå äîêóìåíòû:
· Òåõíè÷åñêîå çàäàíèå;
· Ðàáî÷èé ïðîåêò.
 ïðèëîæåíèè ê äîêóìåíòó «Ðàáî÷èé ïðîåêò» äîëæåí áûòü ïðèâåäåí ëèñòèíã èñõîäíûõ òåêñòîâ ïðîãðàììû è áëîê-ñõåìû àëãîðèòìîâ.
Âûïîëíåíèå ðàçðàáîòêè äîëæíî âêëþ÷àòü äâå ñòàäèè:
· Òåõíè÷åñêîå çàäàíèå;
· Ðàáî÷èé ïðîåêò.
Íà ñòàäèè «Òåõíè÷åñêîå çàäàíèå» ïðîâîäèòñÿ ïîñòàíîâêà çàäà÷è, ðàçðàáîòêà òðåáîâàíèé ê ïðîãðàììíîìó èçäåëèþ, èçó÷åíèå ëèòåðàòóðû ïî çàäà÷å è îôîðìëåíèå äîêóìåíòà «Òåõíè÷åñêîå çàäàíèå».
Íà ñòàäèè «Ðàáî÷èé ïðîåêò» ïðîâîäèòñÿ ðàçðàáîòêà ñõåì àëãîðèòìîâ äëÿ êàæäîãî èç ôóíêöèîíàëüíûõ ìîäóëåé, ôèçè÷åñêîå ïðîåêòèðîâàíèå ïðîãðàììíîãî èçäåëèÿ, ðàçðàáîòêà òåñòîâ, òåñòèðîâàíèå è îòëàäêà ïðîãðàììíûõ ìîäóëåé.  çàêëþ÷åíèå äàííîãî ýòàïà îôîðìëÿåòñÿ äîêóìåíò «Ðàáî÷èé ïðîåêò».
Òåñòû äîëæíû áûòü ðàçðàáîòàíû íà ýòàïå ðàáî÷åãî ïðîåêòèðîâàíèÿ ïðîãðàììíîãî èçäåëèÿ.
Ïðèåìêà ïðîãðàììíîãî èçäåëèÿ îñóùåñòâëÿåòñÿ ïðè ñäà÷å äîêóìåíòàëüíî îôîðìëåííûõ ýòàïîâ ðàçðàáîòêè, ïåðåäà÷å ïðîãðàììíîãî èçäåëèÿ è ïðîâåäåíèè èñïûòàíèé íà îñíîâå óñòàíîâëåííûõ òåñòîâ.
2.ÐÀÁÎ×ÈÉ ÏÐÎÅÊÒÏðèëîæåíèå ïðåäñòàâëÿåò ñîáîé èãðó «Ìàçàéêà», äëÿ êîòîðîé íå òðåáóåòñÿ îñîáîå îôîðìëåíèå â ñâÿçè ñ òåì, ÷òî ðàáî÷åå ïîëå ïîëíîñòüþ çàêðûâàåòñÿ çàãðóæåííîé êàðòèíêîé. Èãðà çàòÿãèâàåò ïîëüçîâàòåëÿ, ïðåæäå âñåãî ïîïóëÿðíîñòüþ áëèçêîé èãðû «Ïÿòíàøêè», êîòîðàÿ íå òàê äàâíî áûëà î÷åíü ïîïóëÿðíà.
Äàííàÿ ïðîãðàììà äîëæíà ðàáîòàòü àâòîíîìíî ïîä óïðàâëåíèåì îïåðàöèîííûõ ñèñòåì Windows 95, Windows 98, Windows ME, NT 4.0, Windows 2000, Windows XP.
Äëÿ ðàáîòû ïðîãðàììíîãî èçäåëèÿ òðåáóåòñÿ ïåðñîíàëüíûé êîìïüþòåð, îáëàäàþùèé ñëåäóþùèìè ïàðàìåòðàìè:
· îáúåì ÎÇÓ íå ìåíåå 32 Ìá;
· îáúåì æåñòêîãî äèñêà íå ìåíåå 900 Ìá;
· ìèêðîïðîöåññîð ñ òàêòîâîé ÷àñòîòîé íå ìåíåå 133 ÌÃö;
· ìîíèòîð ñ ãëóáèíîé öâåòà 16 áèò;
· äèñêîâîä floppy-äèñêîâ.
Äëÿ áåñïåðåáîéíîé ðàáîòû ïðîãðàììû ðåêîìåíäóåì ñëåäóþùèå ïàðàìåòðû êîìïüþòåðà:
· îáúåì ÎÇÓ 128 Ìá;
· îáúåì æåñòêîãî äèñêà 3 Ãá;
· ìèêðîïðîöåññîð ñ òàêòîâîé ÷àñòîòîé 333 ÌÃö.
· èñïîëíèòåëüíûé ôàéë ïðîãðàììû Mazaika.exe;
· ðàáî÷èå ìîäóëè ïðîãðàììû;
· ïðîãðàììíàÿ äîêóìåíòàöèÿ íà èçäåëèå.
Ïðîãðàììà ïðîøëà ôóíêöèîíàëüíîå òåñòèðîâàíèå è óñïåøíî îòðàáîòàëà íà âñåõ òåñòàõ. Òåñòû ðàçðàáàòûâàëèñü íà âñåõ ýòàïàõ âûïîëíåíèÿ ïðîåêòà.
Ïðîãðàììà ñîäåðæèò èíòóèòèâíûé èíòåðôåéñ, ïîçâîëÿþùèé áåç äîïîëíèòåëüíûõ ïîäñêàçîê çàïóñòèòü èãðó.
Äëÿ êîïèðîâàíèÿ ïðîãðàììû ñ äèñêåòû íà êîìïüþòåð íåîáõîäèìî ñêîïèðîâàòü ñîäåðæèìîå ïàïêè «Êóðñîâèê» íà æåñòêèé äèñê êîìïüþòåðà.
2.3.1.1 Òàáëèöà êîìïîíåíòîâ
¹ | Íàçâàíèå | Ñòðàíèöà ïàëèòðû êîìïîíåíòîâ | Èçìåíÿåìûå ñâîéñòâà | Çíà÷åíèå |
1 | Form1 | - | Caption | Ìàçàéêà |
AutoSize | false | |||
2 | MainMenu1 | Standard | Items |
Ôàéë Îòêðûòü Íîâàÿ èãðà Âûõîä Î ïðîãðàììå |
3 | OpenPictureDialog1 | Dialogs |
2.3.1.2 Âíåøíèé âèä ôîðìû
2.3.1.2 Âõîäíûå äàííûå
ïîëîæåíèå ôèøåê;
2.3.1.3 Ïðîìåæóòî÷íûå äàííûå
ïðîâåðêà íà íàëè÷èå «ñîáðàííîñòè» ìîçàéêè;
2.3.1.4 Âûõîäíûå äàííûå
ðåçóëüòàò èãðû.
2.3.1.5 Áëîê-ñõåìû àëãîðèòìîâ
Ïðèëîæåíèå À, ñòð. 13
2.3.1.6 Òåêñò ìîäóëÿ
Ïðèëîæåíèå Á, ñòð. 25
Ïðèëîæåíèå À
Ïðèëîæåíèå Á
Ëèñòèíã ìîäóëÿ Unit1
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms, Dialogs, ExtDlgs, Menus;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
C1: TMenuItem;
N5: TMenuItem;
OpenPictureDialog1: TOpenPictureDialog;
procedure FormCreate(Sender: TObject);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormPaint(Sender: TObject);
procedure Load;
procedure Refresh;
procedure New;
procedure N3Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure C1Click(Sender: TObject);
procedure N5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
const
H=4;
W=4; // ðàçìåð ïîëÿ 4*4 êëåòêè
var
widt,heig:integer; // øèðèíà è âûñîòà îäíîé êëåòêè
pole:array[1..H,1..W] of byte; // ñâîéñòâà ïîëÿ
zx,zy:integer; // êîîðäèíàòû ïóñòîé êëåòêè
pos:array[1..H, 1..W] of byte =(( 1, 2, 3, 4),( 5, 6, 7, 8),( 9,10,11,12),(13,14,15, 0)); // âûèãðûøíûé âàðèàíò
pic:TBitmap; // ñàìà êàðòèíêà
procedure TForm1.New;
var
f: string[20]; // ôàéë çàãðóæàåìîé êàðòèíêè
i,j: integer;
begin
f:='picture10.bmp';
try
pic.LoadFromFile(f);
except
on EFopenError do
begin
ShowMessage('Îøèáêà çàãðóçêè ôàéëà');
Form1.Close;
end;
end;
heig:=Pic.Height div H; // Ðàçìåð êëåòêè
widt:=Pic.Width div W;
ClientWidth:=widt*W; //Ðàçìåð ôîðìû ïî ðàçìåðó êàðòèíêè
ClientHeight:=heig*H;
for i:=1 to H do
for j:=1 to W do
pole[i,j]:=pos[i,j];
Form1.Refresh; // ïåðåìåùåíèå êëåòîê
Form1.Load; // çàãðóçêà ïîëÿ
end;
// ïðîâåðêà íà ôàêò âûèãðûøà
function GameOver: boolean;
var
rw,cl:integer;
i:integer;
begin
rw:=1;
cl:=1;
GameOver:=True; // êëåòè ðàññòàâëåíû ïðàâèëüíî
for i:=1 to 15 do
begin
if pole[rw,cl]<>i then
begin
GameOver:=False;
break;
end;
if cl<4
then inc(cl)
else begin
cl:=1;
inc(rw);
end;
end;
end;
// õîä â ñîñåäíþþ ïóñòóþ êëåòêó
procedure Go(clickx,clicky:integer);
var
r:integer;
begin
if not ((abs(clickx-zx)=1) and (clicky-zy=0) or // ïðîâåðêà íà âîçìîæíîñòü õîäà
(abs(clicky-zy)=1) and (clickx-zx=0))
then exit;
pole[zy,zx]:=Pole[clicky,clickx]; // îñóùåñòâèì ïåðåõîä èç [x,y] â [zx,zy]
pole[clicky,clickx]:=0;
zx:=clickx;
zy:=clicky;
Form1.Load; // ïåðåðèñîâêà ïîëÿ
if GameOver then
begin
pole[4,4]:=16;
Form1.Load;
r:=MessageDlg('Âû âûèãðàëè!'+ #13+'Ñûãðàåì åù¸?',mtInformation,[mbYes,mbNo],0);
if r=mrNo then Form1.Close;
Form1.New;
end;
end;
// êëèê ïî êëåòêå
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X,Y:Integer);
var
clickx,clicky:integer; // êîîðäèíàòû êëèêàåìîé êëåòêè
begin
clickx:=Trunc(X/widt)+1; // ïåðåâåä¸ì ùåë÷îê ìûøè â êîîðäèíàòû êëåòêè
clicky:=Trunc(Y/heig)+1;
Go(clickx,clicky);
end;
procedure TForm1.Load; // îòâå÷àåò çà çàãðóçêó ïîëÿ
var
into,outof:Trect; // ââîä è âûâîä
lx,ly:integer; // êîîðäèíàòû âåðõíåãî ëåâîãî óãëà ââîäà
i,j:integer;
begin
for i:=1 to W do // îòñëåæèâàåò ñîäåðæèìîå êëåòîê
for j:=1 to H do
begin
ly:=((pole[i,j]-1) div W) * heig; // ïðèñâîèì êîîðäèíàòàì âåðõíåãî ëåâîãî óãëà ââîäà íîìåð êàðòèíêè
lx:=((pole[i,j]-1) mod W) * widt;
into:=Bounds(lx,ly,widt,heig);
outof:=Bounds((j-1)*widt,(i-1)*heig,widt,heig);
if pole[i,j]<>0
then Canvas.CopyRect(outof,pic.Canvas,into)
else Canvas.Rectangle((j-1)*widt,(i-1)*heig,j*widt,i*heig);
end;
end;
procedure TForm1.refresh; // "òóñóåò" ôðàãìåíòû êàðòèíêè
var
x1,y1:integer; // êîîðäèíàòû ïóñòîé êëåòêè
x2,y2:integer; // âçÿòü êàðòèíêó èç ýòîé êîîðäèíàòû è ïîìåíÿòü å¸ ñ ïóñòîé
n:integer; // íàïðàâëåíèå âîçìîæíîãî õîäà
i:integer;
begin
x1:=4;
y1:=4;
randomize;
for i:=1 to 150 do // âàðèàíòû ðàññòàíîâêè
begin
repeat
x2:=x1;
y2:=y1;
n:=random(4)+1;
case n of
1:dec(x2);
2:inc(x2);
3:dec(y2);
4:inc(y2);
end;
until (x2>=1) and (x2<=4) and (y2>=1) and (y2<=4);
pole[y1,x1]:=pole[y2,x2]; // îïðåäåëèì ôðàãìåíò ïåðåìåùåíèÿ
pole[y2,x2]:=0;
x1:=x2;
y1:=y2;
end;
zx:=x1; // êîîðäèíàòû ïóñòîé êëåòêè
zy:=y1;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
pic:=TBitMap.Create;
New;
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
Form1.Load;
end;
procedure TForm1.N3Click(Sender: TObject);
begin
close;
end;
procedure TForm1.N2Click(Sender: TObject);
var i,j: integer;
begin
heig:=Pic.Height div H; // Ðàçìåð êëåòêè
widt:=Pic.Width div W;
ClientWidth:=widt*W; //Ðàçìåð ôîðìû ïî ðàçìåðó êàðòèíêè
ClientHeight:=heig*H;
for i:=1 to H do
for j:=1 to W do
pole[i,j]:=pos[i,j];
Form1.Refresh; // ïåðåìåùåíèå êëåòîê
Form1.Load; // çàãðóçêà ïîëÿ
end;
procedure TForm1.C1Click(Sender: TObject);
begin
showmessage('Ïðîãðàììà ê êóðñîâîìó ïðîåêòó');
end;
procedure TForm1.N5Click(Sender: TObject);
var
f: string[20]; // ôàéë çàãðóæàåìîé êàðòèíêè
i,j: integer;
begin
openpicturedialog1.Execute;
try
pic.LoadFromFile(openpicturedialog1.FileName);
except
on EFopenError do
begin
ShowMessage('Îøèáêà çàãðóçêè ôàéëà');
Form1.Close;
end;
end;
heig:=Pic.Height div H; // Ðàçìåð êëåòêè
widt:=Pic.Width div W;
ClientWidth:=widt*W; //Ðàçìåð ôîðìû ïî ðàçìåðó êàðòèíêè
ClientHeight:=heig*H;
for i:=1 to H do
for j:=1 to W do
pole[i,j]:=pos[i,j];
Form1.Refresh; // ïåðåìåùåíèå êëåòîê
Form1.Load; // çàãðóçêà ïîëÿ
end;
end.
Ìèíèñòåðñòâî îáðàçîâàíèÿ è íàóêè Ðîññèéñêîé Ôåäåðàöèè Êóðñêèé ãîñóäàðñòâåííûé òåõíè÷åñêèé óíèâåðñèòåò Êàôåäðà ÏÎ è ÂÒ ÊÓÐÑÎÂÀß ÐÀÁÎÒÀ ïî äèñöèïëèíå «Ïðîãðàììèðîâàíèå íà ÿçûêàõ
Èãðîâàÿ è âèðòóàëüíàÿ ãðàôèêà
Èãðîâûå òåõíîëîãèè â ñèñòåìå îáðàçîâàíèÿ ñòóäåíòà
Èçêóñòâåí èíòåëåêò è êîìïþòúðíà àðõèòåêòóðà
Èçó÷åíèå èíôîðìàöèè êàê îáúåêòà êîììåð÷åñêîé äåÿòåëüíîñòè
Èçó÷åíèå êðèïòîãðàôè÷åñêèõ ìåòîäîâ ïîäñòàíîâêè (çàìåíû)
Èìèòàöèîííûå ìîäåëè
Èííîâàöèîííûé ïðîåêò òðóäîóñòðîéñòâà
Èíñòðóìåíòàëüíûå ñðåäñòâà êîìïüþòåðíûõ òåõíîëîãèé èíôîðìàöèîííîãî îáñëóæèâàíèÿ óïðàâëåí÷åñêîé äåÿòåëüíîñòè
Èíñòðóìåíòû ñâîáîäíîãî ðèñîâàíèÿ â CorelDraw
Èíòåãðàöèÿ ÑÝÄ íà îñíîâå òèïîâûõ ïîäñèñòåì
Copyright (c) 2024 Stud-Baza.ru Ðåôåðàòû, êîíòðîëüíûå, êóðñîâûå, äèïëîìíûå ðàáîòû.