аналог pockey ball. Программа Scratch 7 Создание интерактивной игры Шарики в среде Scratch 8 Заключение 11
Скачать 414.51 Kb.
|
map();*f2, *sg;a[10] [10];/*ochki*/fin,/*key, key_all,*/level, lkl, payse, sav, loaod;:TBitmap* gBitmap;:TBitmap* gBitmap2;:TBitmap* gBitmap3;:TBitmap* gBitmap4;:TBitmap* gBitmap5;:TBitmap* gBitmap6;СодержаниеВведение… 3 Алгоритм 4 Программа Scratch 7 Создание интерактивной игры «Шарики» в среде Scratch 8 Заключение… 11 Список использованной литературы… 11 Приложение_А ВведениеScratch - инструмент создания разнообразных программных проектов: мультфильмов, игр, рекламных роликов, музыки, “живых” рисунков, интерактивных историй и презентаций, компьютерных моделей, обучающих программ. Для создания программных проектов Scratch имеет все необходимые средства: язык программирования, удобная визуальная оболочка. Все можно сделать здесь - в самой программе, и сейчас - сразу, без установки дополнительных программ. Актуальность – мы живем в век информатизации общества. Информационные технологии проникают в нашу жизнь с разных сторон. Одно из самых удивительных и увлекательных занятий настоящего времени - программирование. Изучение Scratch может помочь освоить азы алгоритмизации и программирования, создавать и исследовать компьютерные модели, а полученные знания пригодятся для дальнейшего и более серьезного изучения программирования. Анимационная среда Scratch сочетает в себе программирование, графику и моделирование. Цель работы – создание интерактивной игры «Шарики» в среде Scratch. Для достижения цели мы поставили следующие задачи: Изучить виды алгоритмов. Изучить программу Scratch. Создать игру с помощью программы Scratch. АлгоритмАлгори́тм — набор инструкций, описывающих порядок действий исполнителя для достижения результата решения задачи за конечное число действий. В старой трактовке вместо слова «порядок» использовалось слово «последовательность», но по мере развития параллельности в работе компьютеров слово «последовательность» стали заменять более общим словом «порядок». Это связано с тем, что работа каких-то инструкций алгоритма может быть зависима от других инструкций или результатов их работы. Таким образом, некоторые инструкции должны выполняться строго после завершения работы инструкций, от которых они зависят. Независимые инструкции или инструкции, ставшие независимыми из-за завершения работы инструкций, от которых они зависят, могут выполняться в произвольном порядке, параллельно или одновременно, если это позволяют используемые процессор и операционная система. Само слово «алгоритм» происходит от имени хорезмского учёного Абу Абдуллах Мухаммеда ибн Муса аль-Хорезми(алгоритм — аль-Хорезми). Около 825 года он написал сочинение, в котором впервые дал описание придуманной в Индии позиционной десятичной системы счисления. Аль- Хорезми сформулировал правила вычислений в новой системе и, вероятно, впервые использовал цифру 0 для обозначения пропущенной позиции в записи числа (её индийское название арабы перевели как as-sifr или просто sifr, отсюда такие слова, как «цифра» и «шифр»). Приблизительно в это же время индийские цифры начали применять и другие арабские учёные. В первой половине XII века книга аль-Хорезми в латинском переводе проникла в Европу. Переводчик, имя которого до нас не дошло, дал ей название Algoritmi de numero Indorum («Алгоритмы о счёте индийском»). По-арабски же книга именовалась Китаб аль-джебр валь-мукабала («Книга о сложении и вычитании»). Из оригинального названия книги происходит слово Алгебра (алгебра — аль-джебр — восполнение). Часто в качестве исполнителя выступает некоторый механизм (компьютер, токарный станок, швейная машина), но понятие алгоритма необязательно относится к компьютерным программам, так, например, чётко описанный рецепт приготовления блюда также является алгоритмом, в таком случае исполнителем является человек. Общие свойства алгоритмов:Дискретность (прерывность, раздельность) – алгоритм должен представлять процесс решения задачи как последовательное выполнение простых (или ранее определенных) шагов. Каждое действие, предусмотренное алгоритмом, исполняется только после того, как закончилось исполнение предыдущего. Определенность – каждое правило алгоритма должно быть четким, однозначным и не оставлять места для произвола. Благодаря этому свойству выполнение алгоритма носит механический характер и не требует никаких дополнительных указаний или сведений о решаемой задаче. Результативность (конечность) – алгоритм должен приводить к решению задачи за конечное число шагов. Массовость – алгоритм решения задачи разрабатывается в общем виде, то есть, он должен быть применим для некоторого класса задач, различающихся только исходными данными. При этом исходные данные могут выбираться из некоторой области, которая называется областью применимости алгоритма. На основании этих свойств иногда дается определение алгоритма, например: “Алгоритм – это последовательность математических, логических или вместе взятых операций, отличающихся детерменированностью, массовостью, направленностью и приводящая к решению всех задач данного класса за конечное числошагов”. Виды алгоритмов:Линейный алгоритм – набор команд (указаний), выполняемых последовательно во времени друг за другом. Разветвляющийся алгоритм – алгоритм, содержащий хотя бы одно условие, в результате проверки которого ЭВМ обеспечивает переход на один из двух возможных шагов. Циклический алгоритм – алгоритм, предусматривающий многократное повторение одного и того же действия (одних и тех же операций) над новыми исходными данными. К циклическим алгоритмам сводится большинство методов вычислений, перебора вариантов. Цикл программы – последовательность команд (серия, тело цикла), которая может выполняться многократно (для новых исходных данных) до удовлетворения некоторого условия. Программа Scratch.В 2003 году группа исследователей под руководством Митчела Резника из MIT Media Lab решила сделать общедоступный язык программирования. Через 4 года появился Scratch (англ. Scratch - линия старта). Scratch - инструмент создания разнообразных программных проектов: мультфильмов, игр, рекламных роликов, музыки, “живых” рисунков, интерактивных историй и презентаций, компьютерных моделей, обучающих программ для решения проблем: обучения, обработки и отображения данных, моделирования, управления устройствами и развлечения. В Scratch нет слов, которые нужно знать наизусть и уметь писать без ошибок. Программы в Scratch не пишут, а собирают с помощью мышки из готовых блоков-команд, похожих на блоки конструктора Лего. В любой момент в программу можно вносить любые изменения. При этом можно сразу увидеть, как они отражаются на ее работе. В основе программного продукта Scratch лежит графический язык программирования, включающий различные типы данных и структуры управления, реализованный в понятном, дружественном интерфейсе, доступном для понимания и использования учениками даже начальных классов. Кроме того, развитые алгоритмические конструкции языка Scratch и концепции объектно-ориентированного программирования позволяют создавать достаточно сложные и эффективные программы, делают эту среду полезной и для старшеклассников. Это объектно-ориентированная среда, в которой блоки программ собираются из разноцветных кирпичиков команд точно так же как машины собираются из разноцветных кирпичиков в конструкторах Лего. Простая форма позволяет даже самым маленьким приобщаться к программированию, превращая обучение в увлекательную игру. Создаваемые в Scratch программы называют проектами. Этот термин используется во всех сферах человеческой деятельности. Проект — это создание чего-то нового для решения проблемы. Мы живем среди проблем (от греч. problema — преграда, задача): маленьких и больших, простых и сложных, временных и вечных. Все вещи, машины, произведения искусства, компьютерные программы - созданы людьми для их решения, это - результаты проектов. Для создания программных проектов Scratch имеет все необходимые средства: язык программирования, удобная визуальная оболочка, графический редактор, систему помощи, образцы проектов, библиотеку рисунков и звуковых файлов. Все можно сделать здесь - в самой программе, и сейчас - сразу, без установки дополнительных программ. Создание интерактивной игры «Мячики» в среде Scratch.На уроках информатики изучены алгоритмы описания порядка действий исполнителя для достижения результата решения задач. А анимационная среда Scratch сочетает в себе программирование, графику и моделирование. Она оказалась очень увлекательной. Изучив программу, захотелось использовать Scratch для создания игры. Ход работы: Нарисовала картинки для фона, шарики, доску. Рисунки выполняются на графическом редакторе программы Scratch. Алгоритм составлен в среде Scratch. Создание алгоритма для спрайтов «шарики». Выбираем спрайт «шарики». Путем перетаскивания из блоков «контроль», «внешность», «сенсоры» составляем для костюма «скрипты». Составляем циклический алгоритм следующего вида. Для спрайта «шарики» из блока «операторы» устанавливаем команду «выдать случайное число» с изменением заданных координат. Когда «шарик» касается зеленого цвета, то игра останавливается. Когда спрайт «шарик» касается спрайта «Доска», то передает «Очко». Создание алгоритма для спрайта «Доска». Выбираем спрайт «Доска». Путем перетаскивания из блоков «контроль», «движение», «сенсоры» составляем для костюма «скрипты». «Доска» двигается только по координатной оси (0х). Когда спрайт «Доска» получает «Очко», то изменяет очки на +1. В конце получаем количество баллов. Таким образом, мы использовали все виды алгоритма: линейные, циклические и разветвляющиеся. Создаем название и описание проекта. Сохраняем проект. В результате у нас получилась интерактивная игра «Мячики». Наша игра имеет 2 уровня: простой и сложный. Ведется подсчет очков. Готовую игру мы загрузили на сайт Российского сообщества Скретч. Заключение.Создание алгоритма анимации с помощью программы Scratch, развивает логическое мышление, творческую способность учащихся. В школе мы изучаем основы алгоритмизации и программирования, компьютерное моделирование, графику. В ходе работы познакомилась с очень интересной программой Scratch, которая сочетает в себе все эти темы. Особенностью этой среды является то, что в ней можно создавать мультики, анимации и даже простейшие игры. Для создания программных проектов Скретч имеет все необходимые средства: язык программирования, удобная визуальная оболочка, графический редактор, систему помощи, образцы проектов, библиотеку рисунков и звуковых файлов. Все можно сделать здесь - в самой программе, без установки дополнительных программ. Отличием от других средств разработки является то, что все это могут делать дети младших классов, благодаря ее простоте и удобному интерфейсу. Буду дальше изучать эту программу, так как она очень интересная, полезная и нужная. В дальнейшем планирую улучшить данную игру. А созданная игра очень понравилась моим друзьям и одноклассникам. Список использованной литературыhttps://ru.wikipedia.org/wiki/ http://setilab.ru/scratch http://scratch.uvk6.info/home/prakticeskaa-rabota-no1/poradok-zapuska-skretc-proekta Приложение А Текст программы #include #pragma hdrstop #include #include #include «Unit1.h» #include «Unit2.h» // - #pragma package (smart_init) #pragma resource «*.dfm» // ***************************************************************************** gg {:() {x=30; y=30; up=false; down=false; left=false; right=false;} // // Graphics:TBitmap* gBitmap7;mod, levelup;check (TCheckBox *CheckBox1, TForm *Form1, gg *c); //void allkey();pause (TImage *Image3p, TTimer *Timer5, TTimer *Timer1, TTimer *Timer666);savegame (TLabel *Label3s, TTimer *Timer2, liv *l);loadgame (TLabel *Label5h, TForm *Form1, TTimer *Timer5, TTimer *Timer1, TTimer *Timer666, liv *l);Paint_Map (TForm *Form1, TImage *Image1, gg a2, key *k);finish (TImage *Image4, gg p, TTimer *Timer1, TTimer *Timer5, TTimer *Timer666, TImage *Image7, TCheckBox *CheckBox1, TTimer *Timer2, TTimer *Timer4, TTimer *Timer3, TImage *Image1, TLabel *Label3h, TLabel *Label4h, TLabel *Label5h, class EnemyB a3, key *k, liv *l);newlevel (map *m, TForm *Form1, gg *a2, TTimer *Timer1, TTimer *Timer3, TTimer *Timer5, key *k, class mine *mm);class gg; }; // -Obj {:void test (TForm *Form1, map *n)=0; }; go: public Obj {:test (TForm *Form1, map *n); }; // -key: public go {:key_all, ky;();test (TForm *Form1, map *n); }; :key() {=0;_all=0;; } // -liv: public go {:ochki;();test (TForm *Form1, map *n); }; liv: test (TForm *Form1, map *n) {=2; } :liv() {=1;; } // -mine: public Obj {:x, y;test (TForm *Form1, map *n);();:TBitmap* gBitmap13; }; :mine() {= new Graphics:TBitmap();->LoadFromFile (ExtractFilePath(Application->ExeName)+ «ico\\15.bmp»); } mine:test (TForm *Form1, map *n) { (n->level==2) {>a[5] [7]='m';->Canvas->Draw (210,150, gBitmap13); }(n->level==4) {>a[1] [2]='m';->Canvas->Draw (60,30, gBitmap13); }(n->level==5) {>a[4] [3]='m';->Canvas->Draw (90,120, gBitmap13); } } // -go:test (TForm *Form1, map *n) {->BorderStyle=bsSizeable; } // -EnemyA {:() {x3=7; y3=1; aa=0;}x1, y1, x3, y3, aa;MoveA (map *n, gg ob, TTimer *Timer2, TLabel *Label4); }; // -EnemyB: public EnemyA {:() {fl=0; fl2=0; aa=0; ab=0; x4=5; y4=1; ff2=0;}x2, y2, x4, y4;fl, fl2, aa, ab, ac, ad, ff2;MoveB (map *c, gg ob2, TTimer *Timer2, TLabel *Label4); }; // - map:check (TCheckBox *CheckBox1, TForm *Form1, gg *c) {(CheckBox1->Checked==true) mod=true;{mod=false; c->left=false; c->right=false; c->up=false; c->down=false;} } map:pause (TImage *Image3p, TTimer *Timer5, TTimer *Timer1, TTimer *Timer666) {(payse==0) {=1;->Enabled=false;->Enabled=false;->Enabled=false;p->Visible=true;p->BringToFront(); }if (payse==1) {=0;p->Visible=false;->Enabled=true;->Enabled=true;->Enabled=true; } } map:savegame (TLabel *Label3s, TTimer *Timer2, liv *l) {k;->Enabled=true;s->Visible=true;*lst=new TStringList; //sg=fopen («save\\game.txt», «w»);=level;=k+'\n';=k+l->ochki;>Text=k;>SaveToFile («save\\game.txt»); //fclose(sg); } void map:loadgame (TLabel *Label5h, TForm *Form1, TTimer *Timer5, TTimer *Timer1, TTimer *Timer666, liv *l) {o, l2;*list = new TStringList;->Enabled=false;->Enabled=false;->Enabled=false;>LoadFromFile («\save\\game.txt»);=list->Strings[0];=list->Strings[1];list;h->Caption=o;=StrToInt(l2);>ochki=StrToInt(o);=1; //level=StrToInt(l);(«ok!»);->Enabled=true;->Enabled=true;->Enabled=true;->FocusControl(0); } // -gg:paint (map *m, TTimer *Timer3, TTimer *Timer2, TLabel *Label4, key *k, liv *l) {(left)(m->a [y/30] [x/30-1]!=1) {(m->a [y/30] [x/30-1]==2) {m->a [y/30] [x/30-1]=0; l->ochki++;} //star // if ((m->a [y/30] [x/30-1]==3)||(m->a [y/30] [x/30-1]==4)) {m->a [y/30] [x/30-1]=0; Label4->Visible=true; Timer2->Enabled=true; m->ochki- ;} //enemy(m->a [y/30] [x/30-1]==5) {m->a [y/30] [x/30-1]=0; k->ky++;} //key=30;}(right) if (m->a [y/30] [x/30+1]!=1) {(m->a [y/30] [x/30+1]==2) {m->a [y/30] [x/30+1]=0; l->ochki++;} //star // if ((m->a [y/30] [x/30+1]==3)||(m->a [y/30] [x/30+1]==4)) {m->a [y/30] [x/30+1]=0; Label4->Visible=true; Timer2->Enabled=true; m->ochki- ;} //enemy(m->a [y/30] [x/30+1]==5) {m->a [y/30] [x/30+1]=0; k->ky++;} //key+=30;}(up) if (m->a [y/30-1] [x/30]!=1) {(m->a [y/30-1] [x/30]==2) {m->a [y/30-1] [x/30]=0; l->ochki++;} //star // if((m->a [y/30-1] [x/30]==3)||(m->a [y/30-1] [x/30]==4)) {m->a [y/30-1] [x/30]=0; Label4->Visible=true; Timer2->Enabled=true; m->ochki- ;} //enemy(m->a [y/30-1] [x/30]==5) {m->a [y/30-1] [x/30]=0; k->ky++;} //key=30;}(down) if (m->a [y/30+1] [x/30]!=1) {(m->a [y/30+1] [x/30]==2) {m->a [y/30+1] [x/30]=0; l->ochki++;} //star // if((m->a [y/30+1] [x/30]==3)||(m->a [y/30+1] [x/30]==4)) {m->a [y/30+1] [x/30]=0; Label4->Visible=true; Timer2->Enabled=true; m->ochki- ;} //enemy(m->a [y/30+1] [x/30]==5) {m->a [y/30+1] [x/30]=0; k->ky++;} // key+=30;} } // -key:test (TForm *Form1, map *n) {(int i=0; i<10; i++)(int j=0; j<10; j++)(n->a[i] [j]==5) key_all++; } // -gg:drawgg (TImage *Image1, TForm *Form1) { //Graphics:TBitmap* gg = new Graphics:TBitmap; //gg->LoadFromFile (ExtractFilePath(Application->ExeName)+ «ico\\gg.bmp»); //Form1->Canvas->Draw (x*30, y*30, gg);->Visible=true;->BringToFront();->Left=x;->Top=y; } // - map:newlevel (map *m, TForm *Form1, gg *a2, TTimer *Timer1, TTimer *Timer3, TTimer *Timer5, key *k, mine *mm) {->FocusControl(0); //FILE *f2;(level==1) f2=fopen («101.txt», «r»);if (level==2) f2=fopen («2.txt», «r»);if (level==3) f2=fopen («3.txt», «r»);if (level==4) f2=fopen («4.txt», «r»);if (level==5) f2=fopen («5.txt», «r»);->Enabled=true;->Enabled=true;->left=false; a2->right=false; a2->down=false; a2->up=false;>ky=0;=0;>key_all=0;(int i=0; i<10; i++)(int j=0; j<11; j++) {t=fgetc(f2);(t) {'0': a[j] [i]=0; break;'1': a[j] [i]=1; break;'2': a[j] [i]=2; break;'3': a[j] [i]=3; break;'4': a[j] [i]=4; break;'5': a[j] [i]=5; break; } }>test (Form1, m);(f2);(level==1) {a2->x=30; a2->y=30; Timer1->Interval=100; Timer5->Interval=85; lkl=0;}(level==2) {a2->x=240; a2->y=240;}(level==3) {a2->x=30; a2->y=240; Timer5->Interval=100;}(level==4) {a2->x=120; a2->y=30; Timer5->Interval=95; Timer1->Interval=125;}(level==5) {a2->x=30; a2->y=30;}=false; // рандом(level==2) {(int i=0; i<10; i++)(int j=0; j<11; j++) {if (i==2)((j>3)&&(j<7)) {a[i] [j]=random(2);}(i==3)((j>3)&&(j<7)) {a[i] [j]=random(2);}(i==5)((j==2)||(j==3)||(j==6)) {a[i] [j]=random(2);}(i==6)((j==2)||(j==6)||(j==8)) {a[i] [j]=random(2);}(i==8)(j==6) {a[i] [j]=random(2);} } }(level==3) {(int i=0; i<10; i++)(int j=0; j<11; j++) {if (i==1)(j==1) {a[i] [j]=random(2);}(i==3)((j==5)||(j==7)) {a[i] [j]=random(2);}(i==6)((j==5)||(j==7)) {a[i] [j]=random(2);}(i==7)((j==2)||(j==4)||(j==5)||(j==7)) {a[i] [j]=random(2);} } } >test (Form1, m); } map: Paint_Map (TForm *Form1, TImage *Image1, gg a2, key *k) {/* Graphics:TBitmap* gBitmap = new Graphics:TBitmap();:TBitmap* gBitmap2 = new Graphics:TBitmap();:TBitmap* gBitmap3 = new Graphics:TBitmap();:TBitmap* qBitmap4 = new Graphics:TBitmap();:TBitmap* qBitmap5 = new Graphics:TBitmap();:TBitmap* qBitmap6 = new Graphics:TBitmap(); */ (int i=0; i<10; i++) {(int j=0; j<10; j++) {(a[j] [i]) {1: Form1->Canvas->Draw (i*30, j*30, gBitmap2); break;0: if((i==a2.x/30)&&(j==a2.y/30)) {break;} Form1->Canvas->Draw (i*30, j*30, gBitmap); break;2: Form1->Canvas->Draw (i*30, j*30, gBitmap3); break;3: if((i==a2.x/30)&&(j==a2.y/30)) {break;} Form1->Canvas->Draw (i*30, j*30, gBitmap5); break;7: if((i==a2.x/30)&&(j==a2.y/30)) {break;} Form1->Canvas->Draw (i*30, j*30, gBitmap5); break;4: if((i==a2.x/30)&&(j==a2.y/30)) {break;} Form1->Canvas->Draw (i*30, j*30, gBitmap6); break;8: if((i==a2.x/30)&&(j==a2.y/30)) {break;} Form1->Canvas->Draw (i*30, j*30, gBitmap6); break;5: Form1->Canvas->Draw (i*30, j*30, gBitmap4); break; } } } if (level==2) a[7] [1]==7; // избежание патовых ситуаций if (level==1) {((a[2] [1]==1)&&(a[2] [2]==1)&&(a[2] [3]==1)&&(a[1] [3]==1)) {a[1] [3]=0; ShowMessage («1»);}((a[2] [1]==1)&&(a[2] [2]==1)&&(a[2] [3]==1)&&(a[1] [3]==4)) {a[1] [4]=0; ShowMessage («2»);}((a[2] [1]==1)&&(a[2] [2]==1)&&(a[2] [3]==1)&&(a[2] [4]==1)&&(a[2] [5]==1)&&(a[1] [5]==1)) {a[2] [4]=0; ShowMessage («3»);}((a[2] [1]==1)&&(a[2] [2]==1)&&(a[2] [3]==1)&&(a[1] [4]==1)) {a[2] [2]=0; ShowMessage («4»);}((a[2] [1]==1)&&(a[2] [2]==1)&&(a[1] [3]==1)) {a[2] [1]==0; ShowMessage («5»);} ///////////////////////////////////////////////////////////////// ((a[1] [3]==1)&&(a[1] [6]==1)&&(a[2] [3]==1)&&(a[2] [4])&&(a[2] [5]==1)&&(a[2] [6]==1)) {a[2] [5]=0; ShowMessage («6»);}((a[1] [4]==1)&&(a[2] [4]==1)&&(a[2] [5]==1)&&(a[2] [6]==1)&&(a[1] [6]==1)) {a[1] [6]=0; ShowMessage («7»);}((a[1] [3]==1)&&(a[2] [3]==1)&&(a[1] [5]==1)&&(a[2] [5]==1)&&(a[2] [4]==1)) {a[1] [3]=0; ShowMessage («8»);} } } map:finish (TImage *Image4, gg p, TTimer *Timer1, TTimer *Timer5, TTimer *Timer666, TImage *Image7, TCheckBox *CheckBox1, TTimer *Timer2, TTimer *Timer4, TTimer *Timer3, TImage *Image1, TLabel *Label3h, TLabel *Label4h, TLabel *Label5h, class EnemyB a3, key *k, liv *l) { if (level==1) {[1] [0]='f';[8] [4]=1;[4] [4]=1; //a[2] [4]=1;->Left=0; Image4->Top=30; Image4->Visible=true;((p.x/30==0)&&(p.y/30==1)) fin=1; } (level==2) {[5] [6]='f';->Left=180; Image4->Top=150; Image4->Visible=true;((p.x/30==6)&&(p.y/30==5)) fin=1; } (level==3) {[1] [5]='f';->Left=150; Image4->Top=30; Image4->Visible=true;((p.x/30==5)&&(p.y/30==1)) fin=1; }(level==4) {a[1] [5]='f';->Left=150; Image4->Top=30; Image4->Visible=true;((p.x/30==5)&&(p.y/30==1)) fin=1; }(level==5) {a[3] [2]='f';->Left=60; Image4->Top=90; Image4->Visible=true;((p.x/30==2)&&(p.y/30==3)) fin=1; }((l->ochki>0)&&(fin==1)) {(level==5) {=1;short res;->Enabled=false;->Enabled=false;->Enabled=false;->Enabled=false;->Enabled=false;->Enabled=false;->Visible=false;->Visible=false;h->Visible=false;h->Visible=false;h->Visible=false;->Picture->LoadFromFile (ExtractFilePath(Application->ExeName)+ «ico\\767.bmp»);->Top=0;->Width=511;->Height=326;->Left=0;->Visible=true; // res=MessageDlg («Congratulations! You are win! Start a New Game?», mtInformation, TMsgDlgButtons()< } }{->Enabled=false;->Enabled=false; // if (lkl==1) ShowMessage («Are you ready?»);(lkl==0) ShowMessage («Next level»);->Visible=false; level++;->Enabled=true;=true; } }->Interval=120; } // - void EnemyA: MoveA (map *n, gg ob, TTimer *Timer2, TLabel *Label4) {(n->level==1) {(int i=0; i<10; i++)(int j=0; j<10; j++)(n->a[i] [j]==3) {x1=i; y1=j;} ((y1+1!=6)&&(x1==6)) {n->a[x1] [y1]=0; n->a[x1] [y1+1]=3;} // вправоif((x1-1!=2)&&(y1==5)) {n->a[x1] [y1]=0; n->a [x1-1] [y1]=3;} // вверхif (y1-1!=0) {n->a[x1] [y1]=0; n->a[x1] [y1-1]=3;} // влевоif((x1+1!=7)&&(y1==1)) {n->a[x1] [y1]=0; n->a [x1+1] [y1]=3;} // вниз // if ((ob.x/30==y1)&&(ob.y/30==x1)) {Label4->Visible=true; Timer2->Enabled=true; n->ochki- ;} } (n->level==2) { (int i=0; i<10; i++)(int j=0; j<10; j++) {if (n->a[i] [j]==3) {x1=i; y1=j;}(n->a[i] [j]==7) {x3=i; y3=j;} }((n->a[x1] [y1+1]!=1)&&(x1==4)) {n->a[x1] [y1]=0; n->a[x1] [y1+1]=3;} // вправоif ((n->a [x1+1] [y1]!=1)&&(y1==5)) {n->a[x1] [y1]=0; n->a [x1+1] [y1]=3;} // внизif (n->a[x1] [y1-1]!=1) {n->a[x1] [y1]=0; n->a[x1] [y1-1]=3;} // влевоif((n->a [x1-1] [y1]!=1)&&(y1==1)) {n->a[x1] [y1]=0; n->a [x1-1] [y1]=3;} // вверх((n->a[x3] [y3+1]!=1)&&(aa==0)) {n->a[x3] [y3]=0; n->a[x3] [y3+1]=7;} // вправо(y3==8) aa=1;((n->a[x3] [y3-1]!=1)&&(aa==1)) {n->a[x3] [y3]=0; n->a[x3] [y3-1]=7;} // влево(y3==3) aa=0; } (n->level==3) {(int i=0; i<10; i++)(int j=0; j<10; j++)(n->a[i] [j]==3) {x1=i; y1=j;}(x1==8) aa=1;(x1==1) aa=0;((n->a [x1+1] [y1]!=1)&&(aa==0)) {n->a[x1] [y1]=0; n->a [x1+1] [y1]=3;} // вниз((n->a [x1-1] [y1]!=1)&&(aa==1)) {n->a[x1] [y1]=0; n->a [x1-1] [y1]=3;} // вверх } (n->level==4) {(int i=0; i<10; i++)(int j=0; j<10; j++)(n->a[i] [j]==3) {x1=i; y1=j;}((n->a [x1+1] [y1]!=1)&&(x1!=6)&&(y1!=8)) {n->a[x1] [y1]=0; n->a [x1+1] [y1]=3;} // внизif ((n->a[x1] [y1+1]!=1)&&(x1==6)) {n->a[x1] [y1]=0; n->a[x1] [y1+1]=3;} // вправоif ((n->a [x1-1] [y1]!=1)&&(y1==8)) {n->a[x1] [y1]=0; n->a [x1-1] [y1]=3;} // вверхif ((n->a[x1] [y1-1]!=1)&&(x1==3)) {n->a[x1] [y1]=0; n->a[x1] [y1-1]=3;} // влево }(n->level==5) {(int i=0; i<10; i++)(int j=0; j<10; j++)(n->a[i] [j]==3) {x1=i; y1=j;}((x1==1)&&(y1==4)) aa=1;((x1==3)&&(y1==1)) aa=0; ((n->a [x1+1] [y1]!=1)&&(y1==1)&&(x1!=5)&&(aa==0)) {n->a[x1] [y1]=0; n->a [x1+1] [y1]=3;} // внизif ((n->a[x1] [y1+1]!=1)&&(aa==0)) {n->a[x1] [y1]=0; n->a[x1] [y1+1]=3;} // вправоif ((n->a [x1-1] [y1]!=1)&&(aa==0)&&(y1==4)) {n->a[x1] [y1]=0; n->a [x1-1] [y1]=3;} // вверхif ((n->a [x1+1] [y1]!=1)&&(aa==1)&&(y1==4)) {n->a[x1] [y1]=0; n->a [x1+1] [y1]=3;} // вниз2if ((n->a[x1] [y1-1]!=1)&&(aa==1)) {n->a[x1] [y1]=0; n->a[x1] [y1-1]=3;} // влевоif ((n->a [x1-1] [y1]!=1)&&(y1==1)&&(aa==1)) {n->a[x1] [y1]=0; n->a [x1-1] [y1]=3;} // вверх2 } } // -EnemyB: MoveB (map *c, gg ob2, TTimer *Timer2, TLabel *Label4) {if (c->level==1) { /*!!!!!!*/ for (int i=0; i<10; i++)(int j=0; j<10; j++)(c->a[i] [j]==4) {x2=i; y2=j;} ((c->a [x2+1] [y2]!=1)&&(ff2==0)&&(x2!=7)) {c->a[x2] [y2]=0; c->a [x2+1] [y2]=4;} // внизif ((c->a[x2] [y2-1]!=1)&&(x2==7)&&(ff2==0)) {c->a[x2] [y2]=0; c->a[x2] [y2-1]=4;} // влевоif ((c->a[x2] [y2+1]!=1)&&(x2==7)&&(ff2==1)) {c->a[x2] [y2]=0; c->a[x2] [y2+1]=4;} // вправоif ((c->a [x2-1] [y2]!=1)&&(y2==8)&&(ff2==1)) {c->a[x2] [y2]=0; c->a [x2-1] [y2]=4;} // вверх((x2==7)&&(y2==2)) ff2=1; /*!!!!!!!*/ if ((x2==2)&&(y2==8)) ff2=0; // if ((ob2.x/30==y2)&&(ob2.y/30==x2)) {Label4->Visible=true; Timer2->Enabled=true; c->ochki- ;} } (c->level==2) {(int i=0; i<10; i++)(int j=0; j<10; j++)(c->a[i] [j]==4) {x2=i; y2=j;}((c->a[x2] [y2+1]!=1)&&(ab<4)) {c->a[x2] [y2]=0; c->a[x2] [y2+1]=4;} // вправоif ((x2!=5)&&(ab<4)) {c->a[x2] [y2]=0; c->a [x2+1] [y2]=4; ab++;} // внизif (c->a [x2-1] [y2]!=1) {c->a[x2] [y2]=0; c->a [x2-1] [y2]=4;} // вверхif (c->a[x2] [y2-1]!=1) {c->a[x2] [y2]=0; c->a[x2] [y2-1]=4;} // влево((x2==1)&&(y2==1)) ab=0; } (c->level==3) {(int i=0; i<10; i++)(int j=0; j<10; j++)(c->a[i] [j]==4) {x4=i; y4=j;}((c->a[x4] [y4+1]!=1)&&(x4!=4)) {c->a[x4] [y4]=0; c->a[x4] [y4+1]=4;} // вправоif ((c->a [x4-1] [y4]!=1)&&(x4!=4)) {c->a[x4] [y4]=0; c->a [x4-1] [y4]=4;} // вверхif ((c->a[x4] [y4-1]!=1)&&(y4!=1)) {c->a[x4] [y4]=0; c->a[x4] [y4-1]=4;} // влевоif ((c->a [x4+1] [y4]!=1)&&(x4!=5)) {c->a[x4] [y4]=0; c->a [x4+1] [y4]=4;} // вниз }(c->level==4) {(int i=0; i<10; i++)(int j=0; j<10; j++)(c->a[i] [j]==4) {x4=i; y4=j;}((c->a[x4] [y4-1]!=1)&&(y4!=2)&&(x4==8)) {c->a[x4] [y4]=0; c->a[x4] [y4-1]=4;} // влевоif ((c->a [x4-1] [y4]!=1)&&(y4==2)&&(x4!=2)) {c->a[x4] [y4]=0; c->a [x4-1] [y4]=4;} // вверхif ((c->a[x4] [y4-1]!=1)&&(y4==2)&&(x4==4)) {c->a[x4] [y4]=0; c->a[x4] [y4-1]=4;} // влево2if ((c->a [x4-1] [y4]!=1)&&(y4==1)&&(x4!=2)) {c->a[x4] [y4]=0; c->a [x4-1] [y4]=4;} // вверх2if ((c->a[x4] [y4+1]!=1)&&(x4==2)) {c->a[x4] [y4]=0; c->a[x4] [y4+1]=4;} // вправо2if ((c->a [x4+1] [y4]!=1)&&(y4==4)) {c->a[x4] [y4]=0; c->a [x4+1] [y4]=4;} // внизif ((c->a[x4] [y4+1]!=1)&&(x4==6)&&(y4!=7)) {c->a[x4] [y4]=0; c->a[x4] [y4+1]=4;} // вправо3if ((c->a [x4+1] [y4]!=1)&&(y4==7)) {c->a[x4] [y4]=0; c->a [x4+1] [y4]=4;} // вниз2 } (c->level==5) {(int i=0; i<10; i++)(int j=0; j<10; j++)(c->a[i] [j]==4) {x4=i; y4=j;}((x4==1)&&(y4==8)) ac=1;((x4==8)&&(y4==1)) ac=0;((c->a[x4] [y4+1]!=1)&&(x4==8)&&(ac==0)) {c->a[x4] [y4]=0; c->a[x4] [y4+1]=4;} // вправоif ((c->a [x4-1] [y4]!=1)&&(y4==8)&&(ac==0)) {c->a[x4] [y4]=0; c->a [x4-1] [y4]=4;} // вверхif ((c->a [x4+1] [y4]!=1)&&(ac==1)) {c->a[x4] [y4]=0; c->a [x4+1] [y4]=4;} // внизif ((c->a[x4] [y4-1]!=1)&&(ac==1)) {c->a[x4] [y4]=0; c->a[x4] [y4-1]=4;} // влево } }ob;m;*m²;r;q;l1, l2, l3;kl;ll;min; // ******************************************************************************Form1; // - __fastcall TForm1:TForm1 (TComponent* Owner) : TForm(Owner) {(); //q.fl=0; //q.fl2=0; ->Enabled=true;*f; =fopen («1.txt», «r»); («font\\PERTIBD.ttf»);(«font\\PERTILI_0.ttf»);->Picture->LoadFromFile (ExtractFilePath(Application->ExeName)+»\\ico\\gg.bmp»);->Picture->LoadFromFile (ExtractFilePath(Application->ExeName)+»\\ico\\65.bmp»);->Picture->LoadFromFile (ExtractFilePath(Application->ExeName)+»\\ico\\background.bmp»);->Picture->LoadFromFile (ExtractFilePath(Application->ExeName)+»\\ico\\final.bmp»);->Picture->LoadFromFile (ExtractFilePath(Application->ExeName)+ «ico\\767.bmp»);p->Picture->LoadFromFile (ExtractFilePath(Application->ExeName)+ «ico\\pause.bmp»);p->Width=200;p->Height=100;p->Left=60;p->Top=100; //if (f=fopen((ExtractFilePath (Application->ExeName) + «1.txt»).c_str(), «r»)) {for (int i=0; i<10; i++) {(int j=0; j<11; j++) {t=fgetc(f);(t) {'0': m.a[i] [j]=0; break;'1': m.a[i] [j]=1; break;'2': m.a[i] [j]=2; break;'3': m.a[i] [j]=3; break;'4': m.a[i] [j]=4; break;'5': m.a[i] [j]=5; break; } } } } // рандомное заполнение первого левела(int i=0; i<10; i++) for (int j=0; j<11; j++) {if (i==1)((j>2)&&(j<7)) {m.a[i] [j]=random(2);}(i==2)((j>0)&&(j<7)) {m.a[i] [j]=random(2);}(i==5)((j==6)||(j==7)) {m.a[i] [j]=random(2);}(i==6)(j==6) {m.a[i] [j]=random(2);} } (f);.test (Form1,&m); } // - __fastcall TForm1: FormKeyDown (TObject *Sender, WORD &Key,Shift) {(m.payse==0) {->Enabled=true;->Enabled=true;->Enabled=true; }.check (CheckBox1, Form1,&ob);->Visible=false;->Visible=true; // картинка-фоон Label11->Font->Name= «Perpetua Titling MT»;->Font->Name= «Perpetua Titling MT»;->Font->Name= «Perpetua Titling MT»;->Font->Name= «Perpetua Titling MT»;->Font->Name= «Perpetua Titling MT»;->Font->Name= «Perpetua Titling MT»;->Font->Name= «Perpetua Titling MT»;->Font->Name= «Perpetua Titling MT»;->Font->Name= «Perpetua Titling MT»;s->Font->Name= «Perpetua Titling MT»;p->Visible=true;h->Visible=true;h->Visible=true;h->Visible=true;->Visible=true;->Visible=true;->Visible=true;->Visible=true;->Visible=true;->Visible=true;->Visible=true;->Visible=true;->Visible=true;->Width=80;->Visible=true; (m.mod) {(Key) {VK_LEFT: {if (m.payse==0) {ob.left=true; ob.right=false; ob.up=false; ob.down=false; break;}}VK_RIGHT: {if (m.payse==0) {ob.left=false; ob.right=true; ob.up=false; ob.down=false;} break;}VK_UP: {if (m.payse==0) {ob.left=false; ob.right=false; ob.up=true; ob.down=false;} break;}VK_DOWN: {if (m.payse==0) {ob.left=false; ob.right=false; ob.up=false; ob.down=true;} break;}VK_F1: {m.pause (Image3p, Timer5, Timer1, Timer666); break;}VK_F2: {m.savegame (Label3s, Timer2,&ll); break;}VK_F3: {m.loadgame (Label5h, Form1, Timer1, Timer5, Timer666,&ll); break;} }} {(Key) {'1': {kl.ky=kl.key_all; break;}VK_F1: {m.pause (Image3p, Timer5, Timer1, Timer666); break;}VK_F2: {m.savegame (Label3s, Timer2,&ll); break;}VK_F3: {m.loadgame (Label5h, Form1, Timer1, Timer5, Timer666,&ll); break;}VK_LEFT: if (m.payse==0) {(m.a [ob.y/30] [ob.x/30-1]!=1) {(m.a [ob.y/30] [ob.x/30-1]==2) {m.a [ob.y/30] [ob.x/30-1]=0; ll.ochki++;} //star // if ((m.a [ob.y/30] [ob.x/30-1]==3)||(m.a [ob.y/30] [ob.x/30-1]==4)) {m.a [ob.y/30] [ob.x/30-1]=0; Form1->Label4->Visible=true; Timer2->Enabled=true; m.ochki- ;} //enemy(m.a [ob.y/30] [ob.x/30-1]==5) {m.a [ob.y/30] [ob.x/30-1]=0; kl.ky++;} //key.x-=30;} break;}VK_RIGHT: if (m.payse==0) {(m.a [ob.y/30] [ob.x/30+1]!=1) {(m.a [ob.y/30] [ob.x/30+1]==2) {m.a [ob.y/30] [ob.x/30+1]=0; ll.ochki++;} //star // if ((m.a [ob.y/30] [ob.x/30+1]==3)||(m.a [ob.y/30] [ob.x/30+1]==4)) {m.a [ob.y/30] [ob.x/30+1]=0; Form1->Label4->Visible=true; Timer2->Enabled=true; m.ochki- ;} //enemy(m.a [ob.y/30] [ob.x/30+1]==5) {m.a [ob.y/30] [ob.x/30+1]=0; kl.ky++;} //key.x+=30;} break;}VK_UP: if (m.payse==0) {(m.a [ob.y/30-1] [ob.x/30]!=1) {(m.a [ob.y/30-1] [ob.x/30]==2) {m.a [ob.y/30-1] [ob.x/30]=0; ll.ochki++;} //star // if((m.a [ob.y/30-1] [ob.x/30]==3)||(m.a [ob.y/30-1] [ob.x/30]==4)) {m.a [ob.y/30-1] [ob.x/30]=0; Form1->Label4->Visible=true; Timer2->Enabled=true; m.ochki- ;} //enemy(m.a [ob.y/30-1] [ob.x/30]==5) {m.a [ob.y/30-1] [ob.x/30]=0; kl.ky++;} //key.y-=30;} break;}VK_DOWN: if (m.payse==0) {(m.a [ob.y/30+1] [ob.x/30]!=1) {(m.a [ob.y/30+1] [ob.x/30]==2) {m.a [ob.y/30+1] [ob.x/30]=0; ll.ochki++;} //star // if((m.a [ob.y/30+1] [ob.x/30]==3)||(m.a [ob.y/30+1] [ob.x/30]==4)) {m.a [ob.y/30+1] [ob.x/30]=0; Form1->Label4->Visible=true; Timer2->Enabled=true; m.ochki- ;} //enemy(m.a [ob.y/30+1] [ob.x/30]==5) {m.a [ob.y/30+1] [ob.x/30]=0; kl.ky++;} // key.y+=30;} break;} } } //Caption= «Жизни:» + String (m.ochki); } // - __fastcall TForm1: Timer1Timer (TObject *Sender) {int n;. MoveA (&m, ob, Timer2, Label4); // q. MoveB (&m, ob, Timer2, Label4); // m. Paint_Map (Form1, Image1, ob); // ob.drawgg (Image1, Form1); /**/ if (ll.ochki==0) {Timer1->Enabled=false;->Enabled=false;->Enabled=false;->Enabled=false;->Enabled=false;->Enabled=false;short res2;=MessageDlg («You are Lost! Start a New Game?», mtInformation, TMsgDlgButtons()< // CheckBox1->Visible=true; // Image1->Visible=true; // Image7->Visible=false;.newlevel (&m, Form1,&ob, Timer1, Timer3, Timer5,&kl,&min); // m.finish (Image4, ob, Timer1, Timer5, Timer666, Image7, CheckBox1, Timer2, Timer4, Timer3, Image1); } }->Caption=ll.ochki;->Caption=kl.ky;->Caption=m.level;->Caption=kl.key_all;= «Жизни:» + String (ll.ochki);(int i=0; i<10; i++)(int j=0; j<10; j++)(m.a[i] [j]==2) n++;((kl.ky==kl.key_all)&&(ll.ochki>0)) {m.finish (Image4, ob, Timer1, Timer5, Timer666, Image7, CheckBox1, Timer2, Timer4, Timer3, Image1, Label3h, Label4h, Label5h, q,&kl,&ll);}((m.level==2)&&(m.levelup)) {m.newlevel (&m, Form1,&ob, Timer1, Timer3, Timer5,&kl,&min);}((m.level==3)&&(m.levelup)) {m.newlevel (&m, Form1,&ob, Timer1, Timer3, Timer5,&kl,&min);}((m.level==4)&&(m.levelup)) {m.newlevel (&m, Form1,&ob, Timer1, Timer3, Timer5,&kl,&min);}((m.level==5)&&(m.levelup)) {m.newlevel (&m, Form1,&ob, Timer1, Timer3, Timer5,&kl,&min);}((m.level==1)&&(m.levelup)) {q.ff2=0; m.newlevel (&m, Form1,&ob, Timer1, Timer3, Timer5,&kl,&min);}(m.loaod==1) {m.newlevel (&m, Form1,&ob, Timer1, Timer3, Timer5,&kl,&min); m.loaod=0;} } // - __fastcall TForm1: Timer2Timer (TObject *Sender) // покраснение live {->Label4->Visible=false;->Label3s->Visible=false; } // - __fastcall TForm1: Timer3Timer (TObject *Sender) // передвижение гг в режиме хард {.paint (&m, Timer3, Timer2, Label4,&kl,&ll); } // -__fastcall TForm1: CheckBox1Click (TObject *Sender) // хард моде {(0); } // - void __fastcall TForm1: Timer4Timer (TObject *Sender) // пересечение гг с енеми {((m.a [ob.y/30] [ob.x/30]==3)||(m.a [ob.y/30] [ob.x/30]==4)||(m.a [ob.y/30] [ob.x/30]==7)||(m.a [ob.y/30] [ob.x/30]==8)) {->Enabled=false;->Enabled=false;->Label4->Visible=true;(m.level==1) {ob.x=30; ob.y=30;}if (m.level==2) {ob.x=240; ob.y=240;}if (m.level==3) {ob.x=30; ob.y=240;}if (m.level==4) {ob.x=120; ob.y=30;}if (m.level==5) {ob.x=30; ob.y=30;}. Paint_Map (Form1, Image1, ob,&kl);.ochki -;.left=false; ob.right=false; ob.down=false; ob.up=false;(«CatchYou!»);(0);->Enabled=true;->Enabled=true;->Enabled=true; }((m.a [ob.y/30] [ob.x/30]=='m')) {.a [ob.y/30] [ob.x/30]=0;.left=false; ob.right=false; ob.down=false; ob.up=false;->Enabled=false;->Enabled=false;->Label4->Visible=true;(«ACHTUNG!»);. Paint_Map (Form1, Image1, ob,&kl);.ochki -;(0);->Enabled=true;->Enabled=true;->Enabled=true; } } // - __fastcall TForm1: Timer5Timer (TObject *Sender) //enemy B {. MoveB (&m, ob, Timer2, Label4); } // - __fastcall TForm1: Timer666Timer (TObject *Sender) // проприсовка карты передвиж гг {. Paint_Map (Form1, Image1, ob,&kl); .drawgg (Image1, Form1); } // - |