Дельфиде логикалық ойын бағадарламасын құру



Мазмұны

1.Кіріспе

1.1 Жалпыбөлім

1.2.Логикалық ойынды сипаттау 4

1.3.Алгоритмі 5

2.Бағдарламалау бөлімі 6

2.1Бағдаламау қадамдарының листингілері 7

3.Қорытынды 37
1 1. Кіріспе


Мен Ералаиев Рустем Мұхамбетұлы 3 Бағдарламашы 11 «А» тобының студенті назарларыңызға мына курстық жобаны ұсынамын. Бұл курстық жобаның негізінде мақсаты Офламерон (“Oflameron”) атты динамикалық-логикалық ойынның дельфиде бағдарламасын жасау болып табылады. Бұл жоба болашақ бағдарламашыларға арналған.
Бұл жобаның ерекшеліктері:
- Бағдарламаудың барлық қадамдары құжатталған.
- Әр өңделген қадамдардың листингілері қосымша тіркелген.
- Жобаны индивидулизациялауға мүмкіндік беретін көп информациялармен қамтылған.
Жоба бағдарламаның барлық элементтерін өңдеу процесі, иллюстрациясы мен шығыс кодтары сипатталған 33 бетті құжатпен қамтылған. Сонымен қатар бағдарламаның графикалық оформлениясын өңдеу процесі сипатталған.
Осы курстық жобаны жасаудың
Мақсаты: Оflameron атты логикалық ойынның бағдарламасын Дельфи бағдарламалау ортасында құрып керекті операторларды пайдаланып, бұл жобаның әр өңделген кезеңдерінің толық листмнгілерін жазып, қолданушыға бұл ойын бағдарламасы барынша түсінікті және бұл бағдарламамен жұмыс жасай алатындай етіп құру болып табылады.
Бұл жобада негізі көбінесе StaticText операторлары және көшіру операторлары, т.б. операторлар қолдданылған. Бұл жобаны басқа да бағдарламалау орталарында орындауға болады, мысалы: Visiual Basic, Java т.б. Осы берілген жоба ең қарапайым жолмен жасалынған, сол үшін қолданушы бұл ойынның бағдарламасымен тез танысып, осы бағдарламаны Дельфи бағдарламалау ортасында бағдарламасын өздігінен құрып, осы бағдарламаның арқасында ұқсас бағдарламаларды құрып операторлардың көптеген түрлерімен танысып кез келген бағдарламаны оңай орындай алатын дәрежеге жететіндей болуы керек.
1.Қолданылған әдебиеттер:

Архангельский А.Я Delphi бағдарламалау ортасы, ДинСофт шығарылымы 2000 – 2003жж. 1800бет.
Кандзюба С.П , Фаронов В.В дельфи ортасы 1999 – 2003жж. 10000бет

Громов В.Н Бағдарламалау орталары, Бином шығарылымы 2001 – 2004ж. 2000бет.

Синицын А.К. – дельфи бағдарламалыу ортасында жұмыс істеу. 993бет.

Федоров А.Г. дельфи ортасында жұмыс істеу 3000бет.

Қаазақстан Республикасы Ғылым және Білім министлігі
М.Бейсебаев атындағы агробизнес және менеджмен колледжі

Тақырыбы: Дельфиде логикалық ойын бағадарламасын құру

Орындаған: Ералиев Рустем
Тексерген: Аманғалиев Е.

Мазмұны

1.Кіріспе

1.1 Жалпыбөлім

1.2.Логикалық ойынды сипаттау
4

1.3.Алгоритмі
5

2.Бағдарламалау бөлімі
6

2.1Бағдаламау қадамдарының листингілері
7

3.Қорытынды
37

1. Кіріспе

Мен Ералаиев Рустем Мұхамбетұлы 3 Бағдарламашы 11 А тобының студенті
назарларыңызға мына курстық жобаны ұсынамын. Бұл курстық жобаның негізінде
мақсаты Офламерон (“Oflameron”) атты динамикалық-логикалық ойынның дельфиде
бағдарламасын жасау болып табылады. Бұл жоба болашақ бағдарламашыларға
арналған.
Бұл жобаның ерекшеліктері:
Бағдарламаудың барлық қадамдары құжатталған.
Әр өңделген қадамдардың листингілері қосымша тіркелген.
Жобаны индивидулизациялауға мүмкіндік беретін көп информациялармен
қамтылған.
Жоба бағдарламаның барлық элементтерін өңдеу процесі,
иллюстрациясы мен шығыс кодтары сипатталған 33 бетті құжатпен қамтылған.
Сонымен қатар бағдарламаның графикалық оформлениясын өңдеу процесі
сипатталған.
Осы курстық жобаны жасаудың
Мақсаты: Оflameron атты логикалық ойынның бағдарламасын Дельфи
бағдарламалау ортасында құрып керекті операторларды пайдаланып, бұл
жобаның әр өңделген кезеңдерінің толық листмнгілерін жазып, қолданушыға
бұл ойын бағдарламасы барынша түсінікті және бұл бағдарламамен жұмыс
жасай алатындай етіп құру болып табылады.
Бұл жобада негізі көбінесе StaticText операторлары және
көшіру операторлары, т.б. операторлар қолдданылған. Бұл жобаны басқа
да бағдарламалау орталарында орындауға болады, мысалы: Visiual Basic, Java
т.б. Осы берілген жоба ең қарапайым жолмен жасалынған, сол үшін қолданушы
бұл ойынның бағдарламасымен тез танысып, осы бағдарламаны Дельфи
бағдарламалау ортасында бағдарламасын өздігінен құрып, осы бағдарламаның
арқасында ұқсас бағдарламаларды құрып операторлардың көптеген түрлерімен
танысып кез келген бағдарламаны оңай орындай алатын дәрежеге жететіндей
болуы керек.

2 Жалпы Бөлім
2,1 Логикалық ойынның сипатталуы

1. сурет

Ойын алаңы(1.сурет) негізінен кестелерден тұрады(осы жағдайда олар екеу) –
бір бағаннан тұратын - ойын есебін жүргізетін және 8х5 кестесі(ойын алаңы).

1.2
сурет
Ойын кестесінің(1.1 сурет) барлық ұяшықтары символдармен толтырылады, олар
ұяшық номиналын білдіреді.
 [-1,-5,-10,-15,-25] – ойыншының есебіне сәйкес мөлшерлі ұпай сандарын
кемітеді.
 [1,5,10,15,25] – ойыншының есебіне сәйкес мөлшерлі ұпай сандарын
көбейтеді.
 [B] – ойыншының есебінен 200 ұпай кемітеді.
 [P] – ойыншы есебіне 100 ұпай қосады.
[T] – ойыншы есебіне 500 ұпай қосады.
 [Z] – ойыншы барлық ұпайларынан айырылады.
 [END] – ойынды аяқтайды.
Ойын жеңіл болуы үшін әр түрлі типті ұяшықтар – экран бетінде фонның әр
түрлі түстерімен көрсетіледі.
Ойынның динамикалық нұсқасында ойыншы не бары 2-ақ әрекет орындай алады.
1.Ойын басталғанда ойын кестесінің төменгі жолындағы ұяшыққа маркер қоя
алады.
2. Маркерді қойғаннан кейін оны кестенің төменгі жолында оңға-солға
жылжытуына болады .
Маркер қойылған барлық ұяшықтардың номиналы ойыншының есебіне қосылады.
Маркер – көк түспен көрсетілетін ұяшық. Маркерді қою үшін тышқан тетікпен
төменгі жолдағы кез келген ұяшықты шерту керек.Маркерді бірақ рет қоюға
болады - ойын басында ғана.Сосын оны кестенің төменгі жолы бойынша оңға-
солға жылжытып отыруға болады

1.3 Алгоритмі

Ойын алаңы 8х5 өлшемді кестеден тұрады.Оған сәйкесінше 8х6 сандық массивін
қоямыз(назар аударсаңыздар – 1 жолға көбірек).Принцип бойынша, сандық
массив өлшемі 8х5 болғандағы нұсқаны өңдеп шығаруға болады.Бірақ мына
жағдайда жеңіл және көрнекті бағдарламалау үшін 8х6 нұсқасы алынған. Барлық
жолдар жоғарыдан төменге жылжытылғаннан бұрын(бұл жолда экранда) , осы
артық жолға кездейсоқ сандар генераторының мағыналары орналаса бастайды.
Бұл артық жолдың элементтері ойын кестесінің жоғарыдағы босаған экранда
көрінетін жолына жазылылады. 5 жолға 8 элементтен орналасқан, экрандағы
ойын кестесінің ұяшықтары StaticText7 – StaticText46 элементтерінен
құралған.
Кездейсоқ сандар генераторы ойын ұяшықтарының номинал символдарын
тура генерация жасай алмайды. Сандық массив сандармен толтырылады, ал
экрандағы ойын кестесінің ұяшықтарын толтырудан бұрын номиналдардың
есептелуі, олардың суреттері, әр ұяшықтың түсті атрибутарының есептелуі
және олардың орнатылуы шығарылады.
Бағдарламаға StaticText56 қосымша ұяшығы ендірілген.Ол массивтің
сандық мағыналарының ұяшық номиналдары мен экранда суреттелуіне қайта
есептелуі процесінің бағдарламалауын оңайлату үшін
арналған.Принципте,экрандағы StaticText7 – StaticText46 ұяшықтарының
толтырылуының басқа механизмін қолданған жөн. Form1 фармасындағы объекілер
тізімін сұрыптау керек, яғни одан StaticText7 – StaticText46 элементтерін
таңдап және оларды есептеп шығарылған номиналдармен толтыру.Ойынның
тұтынушылық сапасының көзқарасы бойынша объектілер тізімімен жұмыс істеу
ешқандай ұтыс бермейді,бірақ өңделінген жобаның көрнектілігін қатты
төмендетеді.

2. Бағдарламалау бөлімі

Project1.pas деп дельфиде жаңа жоба ашамыз. Форма өлшемдері Form1 –
Height=302, Width=343. Формада мыналарды GroupBox1: TGroupBox (Height=145,
Width=313) орналастырамыз. GroupBox те керекті мөлшерде ойын алаңының
ұяшықтары болатын StaticText элементерін орналастырамыз. StaticText1 –
StaticText6 – ағымдағы деңгейді индикайиялау үшін (Level).
StaticTex7 – StaticText46 – ойын алаңында ойынға арналған ұяшықтарды
жасайды.Ал StaticText47 және StaticText48 – хабарлама және ойын есебін
жүргізу үшін қолданылатын ұяшықтар.

2.сурет

2.1 Бағдарламалау кезеңінің листингілері

Ұяшықтарға түрлі- түсті атрибуттарын қосып берейік және түрлі- түсті
сызықты индикатор суретін(1.1.сурет) саламыз(StaticText 49-55 элементерін
қолданамыз).

1.2 сурет

Ойын алаңы осылай көрінетін болады(1.2 сурет):

1.3 сурет
Және тағы бір StaticText 56 элементі ойын алаңы ұяшықтары мағыналарының
аралықтағы көшірілімі үшін
Кездейсоқ сандар генераторының кодын жазайық:

Randomize;
StaticText7.Caption :=IntToStr(Random(20)); 20 аралығындағы кездейсоқ
сандар генераторы.
Бұл жобаның толық листингі dlp1.zip фаилында :

StaticText49.Height :=8;
StaticText50.Height :=8;
StaticText51.Height :=8;
StaticText52.Height :=8;
StaticText53.Height :=8;
StaticText54.Height :=8;
StaticText55.Height :=8;

StaticText49.Width :=32;
StaticText50.Width :=32;
StaticText51.Width :=32;
StaticText52.Width :=32;
StaticText53.Width :=32;
StaticText54.Width :=32;
StaticText55.Width :=32;

field массиві мен i, j айнымалыларын жасаймыз:
var
Form1: TForm1;
St: systemtime;
field: array[0..20, 0..20] of Integer; ойын алаңының массиві
i: byte;
j: byte;

Кездейсоқ сандар генераторының мағыналарымен field[0..20, 0..20] массивін
толтыру функциясын жазамыз:
function FieldFill : integer;
begin
{ Field массивін кездейсоқ сандармен толтыру}

Randomize;
for i := 0 to 8 do
for j := 0 to 6 do

field[i, j] :=Random(20);

end;

procedure TForm1.FormShow(Sender: TObject) процедурасына field[0..20,
0..20] массивінің толтырылуын тексеретін кодты тізімге кіргіземіз.

procedure TForm1.FormShow(Sender: TObject);
begin
{ процедура Form1формасы тиелгенде орындалады}

StaticText49.Height :=8;
StaticText50.Height :=8;
StaticText51.Height :=8;
StaticText52.Height :=8;
StaticText53.Height :=8;
StaticText54.Height :=8;
StaticText55.Height :=8;

StaticText49.Width :=32;
StaticText50.Width :=32;
StaticText51.Width :=32;
StaticText52.Width :=32;
StaticText53.Width :=32;
StaticText54.Width :=32;
StaticText55.Width :=32;

FieldFill(); field[0..20, 0..20] массивін толтыру функциясын шақыру

StaticText7.Caption :=IntToStr(field[1,1]); Вывести на экран значение
элемента массива
StaticText8.Caption :=IntToStr(field[1,2]);
StaticText9.Caption :=IntToStr(field[1,3]);
StaticText10.Caption :=IntToStr(field[1,4]);
StaticText11.Caption :=IntToStr(field[1,5]);
StaticText12.Caption :=IntToStr(field[1,6]);

end;

Енді код

StaticText7.Caption :=IntToStr(field[1,1]); Вывести на экран значение
элемента массива
StaticText8.Caption :=IntToStr(field[1,2]);
StaticText9.Caption :=IntToStr(field[1,3]);
StaticText10.Caption :=IntToStr(field[1,4]);
StaticText11.Caption :=IntToStr(field[1,5]);
StaticText12.Caption :=IntToStr(field[1,6]);
Алып тастауға болады.
Енді ұяшық номиналын орнату және оның түрлі-түсті атрибуттары және оларды
StaticText56 аралықтық ұяшығына жазу мағынасына байланысты field[0..20,
0..20] массивінің элементтерін анализдейтін функцияны жазамыз.
function Color_Chars : integer;
begin
for i := 0 to 7 do
for j := 0 to 5 do

if field[i, j] = 0 then егер нөлдік мағынада болса
Form1.StaticText56.Caption := '+1'; онда ұяшық номиналы = +1
if field[i, j] = 0 then
Form1.StaticText56.Color := $00BBECF4; Ұяшық фонының түсі-сарғыш

if field[i, j] = 0 then
Form1.StaticText56.Font.Color := $00ffffff; Цвет +1 - қара

if field[i, j] = 1 then
Form1.StaticText56.Caption := '-1';
if field[i, j] = 1 then
Form1.StaticText56.Color := $00BBECF4;
if field[i, j] = 1 then
Form1.StaticText56.Font.Color := $00ffffff;

if field[i, j] = 2 then
Form1.StaticText56.Caption := '+5';
if field[i, j] = 2 then
Form1.StaticText56.Color := $00BBECF4;
if field[i, j] = 2 then
Form1.StaticText56.Font.Color := $00ffffff;

if field[i, j] = 3 then
Form1.StaticText56.Caption := '-5';
if field[i, j] = 3 then
Form1.StaticText56.Color := $00BBECF4;
if field[i, j] = 3 then
Form1.StaticText56.Font.Color := $00ffffff;

if field[i, j] = 4 then
Form1.StaticText56.Caption := '+10';
if field[i, j] = 4 then
Form1.StaticText56.Color := $00BBECF4;
if field[i, j] = 4 then
Form1.StaticText56.Font.Color := $00ffffff;

if field[i, j] = 5 then
Form1.StaticText56.Caption := '-10';
if field[i, j] = 5 then
Form1.StaticText56.Color := $00BBECF4;
if field[i, j] = 5 then
Form1.StaticText56.Font.Color := $00ffffff;

if field[i, j] = 6 then
Form1.StaticText56.Caption := '+15';
if field[i, j] = 6 then
Form1.StaticText56.Color := $00BBECF4;
if field[i, j] = 6 then
Form1.StaticText56.Font.Color := $00ffffff;

if field[i, j] = 7 then
Form1.StaticText56.Caption := '-15';
if field[i, j] = 7 then
Form1.StaticText56.Color := $00BBECF4;
if field[i, j] = 7 then
Form1.StaticText56.Font.Color := $00ffffff;

if field[i, j] = 8 then
Form1.StaticText56.Caption := '+25';
if field[i, j] = 8 then
Form1.StaticText56.Color := $00BBECF4;
if field[i, j] = 8 then
Form1.StaticText56.Font.Color := $00ffffff;

if field[i, j] = 9 then
Form1.StaticText56.Caption := 'T';
if field[i, j] = 9 then
Form1.StaticText56.Color := $00ABCFBB;
if field[i, j] = 9 then
Form1.StaticText56.Font.Color := $80000008;

if field[i, j] = 10 then
Form1.StaticText56.Caption := 'P';
if field[i, j] = 10 then
Form1.StaticText56.Color := $00FFC0C0;
if field[i, j] = 10 then
Form1.StaticText56.Font.Color := $80000008;

if field[i, j] = 11 then
Form1.StaticText56.Caption := 'B';
if field[i, j] = 11 then
Form1.StaticText56.Color := $0080FFFF;
if field[i, j] = 11 then
Form1.StaticText56.Font.Color := $80000008;

if field[i, j] = 12 then
Form1.StaticText56.Caption := 'Z';
if field[i, j] = 12 then
Form1.StaticText56.Color := $00000000;
if field[i, j] = 12 then
Form1.StaticText56.Font.Color := $00FFFFFF;

if field[i, j] = 13 then
Form1.StaticText56.Caption := 'Z';
if field[i, j] = 13 then
Form1.StaticText56.Color := $00000000;
if field[i, j] = 13 then
Form1.StaticText56.Font.Color := $00FFFFFF;

if field[i, j] = 14 then
Form1.StaticText56.Caption := 'End';
if field[i, j] = 14 then
Form1.StaticText56.Color := $000F0FFF;
if field[i, j] = 14 then
Form1.StaticText56.Font.Color := $00FFFFFF;

if field[i, j] = 15 then
Form1.StaticText56.Caption := '-10';
if field[i, j] = 15 then
Form1.StaticText56.Color := $00BBECF4;
if field[i, j] = 15 then
Form1.StaticText56.Font.Color := $80000008;

if field[i, j] = 16 then
Form1.StaticText56.Caption := '-5';
if field[i, j] = 16 then
Form1.StaticText56.Color := $00BBECF4;
if field[i, j] = 16 then
Form1.StaticText56.Font.Color := $80000008;

if field[i, j] = 17 then
Form1.StaticText56.Caption := '-1';
if field[i, j] = 17 then
Form1.StaticText56.Color := $00BBECF4;
if field[i, j] = 17 then
Form1.StaticText56.Font.Color := $80000008;

if field[i, j] = 18 then
Form1.StaticText56.Caption := '+1';
if field[i, j] = 18 then
Form1.StaticText56.Color := $00BBECF4;
if field[i, j] = 18 then
Form1.StaticText56.Font.Color := $80000008;

if field[i, j] = 19 then
Form1.StaticText56.Caption := '+5';
if field[i, j] = 19 then
Form1.StaticText56.Color := $00BBECF4;
if field[i, j] = 19 then
Form1.StaticText56.Font.Color := $80000008;

if field[i, j] = 20 then
Form1.StaticText56.Caption := '-25';
if field[i, j] = 20 then
Form1.StaticText56.Color := $00BBECF4;
if field[i, j] = 20 then
Form1.StaticText56.Font.Color := $80000008;

end;

Бұл функцияны қысқа нұсқа етіп істеуге болады, бірақ көрнектілік үшін-
field[i, j] массивінің мағыналарын ойын алаңы ұяшықтарының атрибуттары мен
номиналдарына қайта есептеудің ең жай тіке нұсқасы таңдап алынды. Сіз
функцияның оптималды кодын өзіңіз жазуыңызға болады.
Color_Chars функциясының жұмыс істеу қабілеттігін тексеру үшін уақытша
TForm1.StaticText56Click процедурасын жасаймыз.
procedure TForm1.StaticText56Click(Sender: TObject);
begin
FieldFill(); Кездейсоқ сандар генераторының мағыналарымен field[i, j]
массивін толтыру
Color_Chars(); Мағынасы бойынша ұяшықтың номиналы және түсінің
атрибуттарын есептеу
end;

Жай ғана StaticText56-ға тышқан тетікпен шертсек номиналдар қалай
ауысатынын көруге болады

Бұл жобаның толық листингі - dlp2.zip файлында кһрсетілген.

Енді ойын алаңының ұяшықтарына StaticText56-дан ұяшық мағыналары мен
түстік атрибуттарын көшіретін GameField_Fill функциясын жазамыз.

function GameField_Fill : integer; Ұяшықтардың номиналдары мен
атрибуттарын көшіру
begin

for i := 0 to 7 do
for j := 0 to 5 do
begin
Color_Chars(); Ұяшық номиналы мен түс атрибуттарын есептеу
және оларды StaticText56 аралық ұяшығына орналастыру
if k = 0 then
Form1.StaticText7.Caption := Form1.StaticText56.Caption;
if k = 0 then
Form1.StaticText7.Color := Form1.StaticText56.Color;
if k = 0 then
Form1.StaticText7.Font.Color := Form1.StaticText56.Font.Color;

if k = 1 then
Form1.StaticText8.Caption := Form1.StaticText56.Caption;
if k = 1 then
Form1.StaticText8.Color := Form1.StaticText56.Color;
if k = 1 then
Form1.StaticText8.Font.Color := Form1.StaticText56.Font.Color;

if k = 2 then
Form1.StaticText9.Caption := Form1.StaticText56.Caption;
if k = 2 then
Form1.StaticText9.Color := Form1.StaticText56.Color;
if k = 2 then
Form1.StaticText9.Font.Color := Form1.StaticText56.Font.Color;

if k = 3 then
Form1.StaticText10.Caption := Form1.StaticText56.Caption;
if k = 3 then
Form1.StaticText10.Color := Form1.StaticText56.Color;
if k = 3 then
Form1.StaticText10.Font.Color := Form1.StaticText56.Font.Color;

if k = 4 then
Form1.StaticText11.Caption := Form1.StaticText56.Caption;
if k = 4 then
Form1.StaticText11.Color := Form1.StaticText56.Color;
if k = 4 then
Form1.StaticText11.Font.Color := Form1.StaticText56.Font.Color;

if k = 5 then
Form1.StaticText12.Caption := Form1.StaticText56.Caption;
if k = 5 then
Form1.StaticText12.Color := Form1.StaticText56.Color;
if k = 5 then
Form1.StaticText12.Font.Color := Form1.StaticText56.Font.Color;

if k = 6 then
Form1.StaticText13.Caption := Form1.StaticText56.Caption;
if k = 6 then
Form1.StaticText13.Color := Form1.StaticText56.Color;
if k = 6 then
Form1.StaticText13.Font.Color := Form1.StaticText56.Font.Color;

if k = 7 then
Form1.StaticText14.Caption := Form1.StaticText56.Caption;
if k = 7 then
Form1.StaticText14.Color := Form1.StaticText56.Color;
if k = 7 then
Form1.StaticText14.Font.Color := Form1.StaticText56.Font.Color;

if k = 8 then
Form1.StaticText15.Caption := Form1.StaticText56.Caption;
if k = 8 then
Form1.StaticText15.Color := Form1.StaticText56.Color;
if k = 8 then
Form1.StaticText15.Font.Color := Form1.StaticText56.Font.Color;

if k = 9 then
Form1.StaticText16.Caption := Form1.StaticText56.Caption;
if k = 9 then
Form1.StaticText16.Color := Form1.StaticText56.Color;
if k = 9 then
Form1.StaticText16.Font.Color := Form1.StaticText56.Font.Color;

if k = 10 then
Form1.StaticText17.Caption := Form1.StaticText56.Caption;
if k = 10 then
Form1.StaticText17.Color := Form1.StaticText56.Color;
if k = 10 then
Form1.StaticText17.Font.Color := Form1.StaticText56.Font.Color;

if k = 11 then
Form1.StaticText18.Caption := Form1.StaticText56.Caption;
if k = 11 then
Form1.StaticText18.Color := Form1.StaticText56.Color;
if k = 11 then
Form1.StaticText18.Font.Color := Form1.StaticText56.Font.Color;

if k = 12 then
Form1.StaticText19.Caption := Form1.StaticText56.Caption;
if k = 12 then
Form1.StaticText19.Color := Form1.StaticText56.Color;
if k = 12 then
Form1.StaticText19.Font.Color := Form1.StaticText56.Font.Color;

if k = 13 then
Form1.StaticText20.Caption := Form1.StaticText56.Caption;
if k = 13 then
Form1.StaticText20.Color := Form1.StaticText56.Color;
if k = 13 then
Form1.StaticText20.Font.Color := Form1.StaticText56.Font.Color;

if k = 14 then
Form1.StaticText21.Caption := Form1.StaticText56.Caption;
if k = 14 then
Form1.StaticText21.Color := Form1.StaticText56.Color;
if k = 14 then
Form1.StaticText21.Font.Color := Form1.StaticText56.Font.Color;

if k = 15 then
Form1.StaticText22.Caption := Form1.StaticText56.Caption;
if k = 15 then
Form1.StaticText22.Color := Form1.StaticText56.Color;
if k = 15 then
Form1.StaticText22.Font.Color := Form1.StaticText56.Font.Color;

if k = 16 then
Form1.StaticText23.Caption := Form1.StaticText56.Caption;
if k = 16 then
Form1.StaticText23.Color := Form1.StaticText56.Color;
if k = 16 then
Form1.StaticText23.Font.Color := Form1.StaticText56.Font.Color;

if k = 17 then
Form1.StaticText24.Caption := Form1.StaticText56.Caption;
if k = 17 then
Form1.StaticText24.Color := Form1.StaticText56.Color;
if k = 17 then
Form1.StaticText24.Font.Color := Form1.StaticText56.Font.Color;

if k = 18 then
Form1.StaticText25.Caption := Form1.StaticText56.Caption;
if k = 18 then
Form1.StaticText25.Color := Form1.StaticText56.Color;
if k = 18 then
Form1.StaticText25.Font.Color := Form1.StaticText56.Font.Color;

if k = 19 then
Form1.StaticText26.Caption := Form1.StaticText56.Caption;
if k = 19 then
Form1.StaticText26.Color := Form1.StaticText56.Color;
if k = 19 then
Form1.StaticText26.Font.Color := Form1.StaticText56.Font.Color;

if k = 20 then
Form1.StaticText27.Caption := Form1.StaticText56.Caption;
if k = 20 then
Form1.StaticText27.Color := Form1.StaticText56.Color;
if k = 20 then
Form1.StaticText27.Font.Color := Form1.StaticText56.Font.Color;

if k = 21 then
Form1.StaticText28.Caption := Form1.StaticText56.Caption;
if k = 21 then
Form1.StaticText28.Color := Form1.StaticText56.Color;
if k = 21 then
Form1.StaticText28.Font.Color := Form1.StaticText56.Font.Color;

if k = 22 then
Form1.StaticText29.Caption := Form1.StaticText56.Caption;
if k = 22 then
Form1.StaticText29.Color := Form1.StaticText56.Color;
if k = 22 then
Form1.StaticText29.Font.Color := Form1.StaticText56.Font.Color;

if k = 23 then
Form1.StaticText30.Caption := Form1.StaticText56.Caption;
if k = 23 then
Form1.StaticText30.Color := Form1.StaticText56.Color;
if k = 23 then
Form1.StaticText30.Font.Color := Form1.StaticText56.Font.Color;

if k = 24 then
Form1.StaticText31.Caption := Form1.StaticText56.Caption;
if k = 24 then
Form1.StaticText31.Color := Form1.StaticText56.Color;
if k = 24 then
Form1.StaticText31.Font.Color := Form1.StaticText56.Font.Color;

if k = 25 then
Form1.StaticText32.Caption := Form1.StaticText56.Caption;
if k = 25 then
Form1.StaticText32.Color := Form1.StaticText56.Color;
if k = 25 then
Form1.StaticText32.Font.Color := Form1.StaticText56.Font.Color;

if k = 26 then
Form1.StaticText33.Caption := Form1.StaticText56.Caption;
if k = 26 then
Form1.StaticText33.Color := Form1.StaticText56.Color;
if k = 26 then
Form1.StaticText33.Font.Color := Form1.StaticText56.Font.Color;

if k = 27 then
Form1.StaticText34.Caption := Form1.StaticText56.Caption;
if k = 27 then
Form1.StaticText34.Color := Form1.StaticText56.Color;
if k = 27 then
Form1.StaticText34.Font.Color := Form1.StaticText56.Font.Color;

if k = 28 then
Form1.StaticText35.Caption := Form1.StaticText56.Caption;
if k = 28 then
Form1.StaticText35.Color := Form1.StaticText56.Color;
if k = 28 then
Form1.StaticText35.Font.Color := Form1.StaticText56.Font.Color;

if k = 29 then
Form1.StaticText36.Caption := Form1.StaticText56.Caption;
if k = 29 then
Form1.StaticText36.Color := Form1.StaticText56.Color;
if k = 29 then
Form1.StaticText36.Font.Color := Form1.StaticText56.Font.Color;

if k = 30 then
Form1.StaticText37.Caption := Form1.StaticText56.Caption;
if k = 30 then
Form1.StaticText37.Color := Form1.StaticText56.Color;
if k = 30 then
Form1.StaticText37.Font.Color := Form1.StaticText56.Font.Color;

if k = 31 then
Form1.StaticText38.Caption := Form1.StaticText56.Caption;
if k = 31 then
Form1.StaticText38.Color := Form1.StaticText56.Color;
if k = 31 then
Form1.StaticText38.Font.Color := Form1.StaticText56.Font.Color;

if k = 32 then
Form1.StaticText39.Caption := Form1.StaticText56.Caption;
if k = 32 then
Form1.StaticText39.Color := Form1.StaticText56.Color;
if k = 32 then
Form1.StaticText39.Font.Color := Form1.StaticText56.Font.Color;

if k = 33 then
Form1.StaticText40.Caption := Form1.StaticText56.Caption;
if k = 33 then
Form1.StaticText40.Color := Form1.StaticText56.Color;
if k = 33 then
Form1.StaticText40.Font.Color := Form1.StaticText56.Font.Color;

if k = 34 then
Form1.StaticText41.Caption := Form1.StaticText56.Caption;
if k = 34 then
Form1.StaticText41.Color := Form1.StaticText56.Color;
if k = 34 then
Form1.StaticText41.Font.Color := Form1.StaticText56.Font.Color;

if k = 35 then
Form1.StaticText42.Caption := Form1.StaticText56.Caption;
if k = 35 then
Form1.StaticText42.Color := Form1.StaticText56.Color;
if k = 35 then
Form1.StaticText42.Font.Color := Form1.StaticText56.Font.Color;

if k = 36 then
Form1.StaticText43.Caption := Form1.StaticText56.Caption;
if k = 36 then
Form1.StaticText43.Color := Form1.StaticText56.Color;
if k = 36 then
Form1.StaticText43.Font.Color := Form1.StaticText56.Font.Color;

if k = 37 then
Form1.StaticText44.Caption := Form1.StaticText56.Caption;
if k = 37 then
Form1.StaticText44.Color := Form1.StaticText56.Color;
if k = 37 then
Form1.StaticText44.Font.Color := Form1.StaticText56.Font.Color;

if k = 38 then
Form1.StaticText45.Caption := Form1.StaticText56.Caption;
if k = 38 then
Form1.StaticText45.Color := Form1.StaticText56.Color;
if k = 33 then
Form1.StaticText45.Font.Color := Form1.StaticText56.Font.Color;

if k = 39 then
Form1.StaticText46.Caption := Form1.StaticText56.Caption;
if k = 39 then
Form1.StaticText46.Color := Form1.StaticText56.Color;
if k = 39 then
Form1.StaticText46.Font.Color := Form1.StaticText56.Font.Color;

k := k + 1;
end;

end;
Бұл функция оптималды жазылмаған, бірақ көрнекті.

GameField_Fill қалай жұмыс істейді – TForm1.FormShow процедурасындағы
бағдарлама іске қосылған кезде k :=0 есептеуіші қойылады(ұяшық
есептеуіші), яғни ойын алаңының басқа ешқандай ұяшығы есептелінген
номиналдармен толтырылмаған. Одан кейін FieldFill(); field[i, j] массивін
сандық мағыналармен толтырады да Color_Chars(); функциясын шақыра отырып
field[i, j] сандық мағыналарын ұяшық номиналдарына және олардың түстік
атрибуттарын StaticText56 аралық ұяшығына жазатын GameField_Fill();
шақырылады. Функция GameField_Fill функциясы StaticText56 ұяшығының
мағынасын ойын алаңының StaticText7 - StaticText46 ұяшықтарына сәйкес
бөледі.
Бірнеше рет TForm1.StaticText56Click уақытша функциясының да коды
өзгерді:

procedure TForm1.StaticText56Click(Sender: TObject);

begin
k := 0;
FieldFill();
GameField_Fill();

end;

Ұяшық алаңында StaticText56 ны шерте отырып, ойын алаңының ұяшықтары қалай
толтырылып жатқанын көруге болады.
Бұл өңделген этаптың толық листингі - dlp3.zip фаилында.

Ойын алаңындағы ұяшықтардың мағынасы және түстік атрибуттарын жол бойынша,
жоғары- төмен(ойын кестесінің жолдарын жоғары – төмен жылжытатын)
көшіретін, Num_Move() процедурасын жасаймыз.Сонымен қатар – ойын алаңының
жоғарғы қатарын жаңа мағыналармен толтырады(яғни ұяшықтардың жаңа
мағыналары ойын алаңының жоғары жағында ендіріледі).

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

function Num_Move : integer; Кесте жолдарын жоғары-төмен жылжыту
begin
k := 0; Ұяшықтар есептеуіші
for j := 0 to 5 do
for i := 0 to 7 do
begin
field[i, j] := field[i, j + 1];
end;
GameField_Fill(); Экранға ұяшықтардың номиналдары мен атрибуттарын
шығару
end;

Ұяшықтардың атрибуттары мен мағыналарының жоғары – төмен көшірілуінің қалай
жұмыс істейтінін көру үшін StaticText6 элементінде
уақытшы өңдеу процедурасын жасаймыз.

procedure TForm1.StaticText6Click(Sender: TObject);
begin
Num_Move();Кесте жолдарын жоғары-төмен жылжыту
end;

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

Енді ойын алаңының жоғарғы жолының жаңа мағынамен толтыратын Up_Str_App
функциясының кодын қосамыз.

function Up_Str_App : integer; Жоғарғы жолды мағыналармен толтыру
begin
Randomize;
for i := 0 to 7 do
field[i, 5] :=Random(20);

end;

Бұл функция function Num_Move : тан шақырылатын болады

function Num_Move : integer; Кесте жолдарын жоғары-төмен жылжыту
begin
Up_Str_App();Жоғарғы жолды мағыналармен толтыру
k := 0; Ұяшықтар есептеуіші
for j := 0 to 5 do
for i := 0 to 7 do
begin
field[i, j] := field[i, j + 1];
end;
GameField_Fill();Экранға ұяшықтардың номиналдары мен атрибуттарын
шығару
end;

Осының барлығы қалай жұмыс істейтінін көру үшін, тышқан тетікпен ойын
алаңының төменгі қатарының сол жағындағы StaticText6 ұяшығына
шертіңіз(Сарғыш –қызыл белгімен көрсетілген).

Өңдеу процедурасы-тек қана жөндеуге арналған TForm1.StaticText6Click
уақытша процедурасы

Бұл өңделген кезеңнің толық листингі - dlp5.zip файлында көрсетілген.

Енді ойын алаңының төменгі жолындағы кез келген ұяшықтарға ойыншының ойын
маркерін орнатуының өңделу кодын жазу керек.

Firstset = 0 тригерін жасаймыз
Егер төменгі жолға маркерді қоймағанда , триггер =0 болады.
Маркер қойылған, төменгі деңгейіндегі ұяшық номеріне көрсететін markersave
айнымалысын жасаймыз.
Төменгі жолдағы маркердің орнатылуын өңдейтін кодтың жалпы фрагменті:

procedure TForm1.StaticText7Click(Sender: TObject);
begin
маркерді орнату процедурасы
if firstset = 0 then Form1.StaticText7.Color := $00FD1117;
if firstset = 0 then markersave := 0; Маркер орнатылған StaticText7
ұяшығына көрсетеді.
if firstset = 0 then firstset := 1; Әрі қарай өңдемеу
end;

procedure TForm1.StaticText8Click(Sender: TObject);
begin
маркерді орнату процедурасы
if firstset = 0 then Form1.StaticText8.Color := $00FD1117;
if firstset = 0 then markersave := 1; Маркер орнатылған StaticText8
ұяшығына көрсетеді.
if firstset = 0 then firstset := 1; Әрі қарай өңдемеу

end;

procedure TForm1.StaticText9Click(Sender: TObject);
begin
маркерді орнату процедурасы
if firstset = 0 then Form1.StaticText9.Color := $00FD1117;
if firstset = 0 then markersave := 2; Маркер орнатылған StaticText9
ұяшығына көрсетеді.
if firstset = 0 then firstset := 1; Әрі қарай өңдемеу
end;

procedure TForm1.StaticText10Click(Sender: TObject);
begin
Маркерді орнату процедурасы
if firstset = 0 then Form1.StaticText10.Color := $00FD1117;
if firstset = 0 then markersave := 3; Маркер орнатылған StaticText10
ұяшығына көрсетеді.
if firstset = 0 then firstset := 1; Әрі қарай өңдемеу

end;

procedure TForm1.StaticText11Click(Sender: TObject);
begin
Маркерді орнату процедурасы
if firstset = 0 then Form1.StaticText11.Color := $00FD1117;
if firstset = 0 then markersave := 4; Маркер орнатылған StaticText11
ұяшығына көрсетеді.
if firstset = 0 then firstset := 1; Әрі қарай өңдемеу

end;

procedure TForm1.StaticText12Click(Sender: TObject);
begin
Маркерді орнату процедурасы
if firstset = 0 then firstset := 1; Әрі қарай өңдемеу
if firstset = 0 then markersave := 5; Маркер орнатылған StaticText12
ұяшығына көрсетеді.
if firstset = 0 then Form1.StaticText12.Color := $00FD1117;

end;

procedure TForm1.StaticText13Click(Sender: TObject);
begin
Маркерді орнату процедурасы
if firstset = 0 then Form1.StaticText13.Color := $00FD1117;
if firstset = 0 then markersave := 6; Маркер орнатылған StaticText13
ұяшығына көрсетеді.
if firstset = 0 then firstset := 1; Әрі қарай өңдемеу

end;

procedure TForm1.StaticText14Click(Sender: TObject);
begin
Маркерді орнату процедурасы
if firstset = 0 then Form1.StaticText14.Color := $00FD1117;
if firstset = 0 then markersave := 7; Маркер орнатылған StaticText13
ұяшығына көрсетеді.
if firstset = 0 then firstset := 1; Әрі қарай өңдемеу

end;

Маркерді тек қана бір ұяшыққа қою мүмкіндігін тексеруге болады.Енді
ұяшықтардың жоғара- төмен жылжытылу кезінде маркердің (ұяшықтың көк түске
боялуы) есте сақталуын қамтамасыз ету керек.

Marker_Reset функциясы- ойын алаңы ұяшықтарының жоғарыдан- төменге қарай
ығысуы кезінде маркер түсінің қалпына келтірілуі.
function Marker_Reset : integer; Жолдардың жылжытылуынан кейін маркерді
қалпына келтіреді
if markersave = 0 then Form1.StaticText7.Color := $00FD1117;
if markersave = 1 then Form1.StaticText8.Color := $00FD1117;
if markersave = 2 then Form1.StaticText9.Color := $00FD1117;
if markersave = 3 then Form1.StaticText10.Color := $00FD1117;
if markersave ... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
Физика пәнінен интерактивті тапсырмалар жасақтау
Астана әуежайының суреті
Тақырыбы: Көп кестелік байланыс орнату
Delphi объектілі бағдарлы бағдарламалау тілінің мүмкіндіктері
Психология-медико-педагогикалық консилиумның қызметін ұйымдастыру
Нан өндірісіндегі бидай және қара бидай ұны
Компьютерлік вирустар және антивирустық бағдарламалар
Бағалы қағаздар нарығының даму болашағы
Эзоп мысалдары мен Крылов мысалдарын салыстыру
XXI ғасыр елімізде қоғамдық информатикаландыру
Пәндер