Программная реализация сражения в Borland C++ Builder, создание и взаимодействие объектов
Объектно-ориентированный анализ информационной модели. Объекты и их иерархия, жизненный цикл программы. Объектно-ориентированное проектирование. Программная реализация и ее качество. Руководство пользователя Borland C++ Builder, тестирование программы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 05.12.2012 |
Размер файла | 53,4 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Содержание
Введение
1. Постановка задачи
1.1 Цель разработки
2. Объектно-ориентированный анализ
2.1 Основные объекты и их иерархия
2.2 Жизненный цикл программы
3. Объектно-ориентированное проектирование
4. Программная реализация
4.1 Объектно-ориентированные свойства программы
4.2 Критерии качества программы
5. Руководство пользователя
6. Тестирование программы
Заключение
Библиографический список
Приложение А. Исходные тексты программы
Введение
Цель настоящей курсовой работы по дисциплине "Объектно-ориентированное программирование" - детальное проектирование и программная реализация сражения, в которой в соответствии с вариантом задания реализуются процессы создания и взаимодействия объектов.
Данная программа написана на языке программирования Borland C++ Builder, с использованием объектно-ориентированного программирования и проектирования.
Использование ООП позволяет обойти ряд сложных проблем в программировании с минимальными потерями, сводя необходимую модификацию программы к её расширению и дополнению.
Систематическое применение объектно-ориентированного подхода позволяет разрабатывать достаточно хорошо структурированные, надежные в эксплуатации, просто модифицируемые программные системы. Элементы объектно-ориентированного программирования получили своё развитие, и в настоящее время ООП принадлежит к числу ведущих технологий программирования.
1. Постановка задачи
1.1 Цель разработки
Очевидно, что технология объектно-ориентированного программирования -- один из современных методов реализации программных систем. Наиболее эффективно применение объектного подхода для больших программных систем, со сложным характером взаимодействия значительного количества элементов.
Исследованиям этих вопросов и посвящена настоящая курсовая работа.
Рассматриваемые модели учитывают влияние различных факторов на многие элементы системы. Таким образом, цель настоящей курсовой работы - проектирование и программная реализация стратегии поведения системы, которая в соответствии с заданным вариантом реализует процессы создания и взаимодействия группы объектов.
По варианту задания на базе объектного подхода необходимо спроектировать и разработать модель стратегической игры.
2. Объектно-ориентированный анализ
2.1 Основные объекты и их иерархия
Объектом в данной информационной модели является:
-главный герой со следующими атрибутами: количество жизней, максимально возможное количество жизней, координаты на игровом поле.
-карта, со следующими атрибутами: координаты игрового поля, пауза, режим игры, возможность сохранения.
-враги, со следующими атрибутами: начальное количество объектов каждого типа у каждой воюющей стороны, общее количество врагов, координаты врагов на карте.
2.2 Жизненный цикл программы
При запуске исполняемого файла проекта загружается основное окно игры. Повляется стартовый экран, при нажатии на любую клавишу начинается игра.
Следовательно, можно выделить следующие состояния программы:
S1 - Запуск программы;
S2 - Создание нового файла;
S3 - Открытие файла;
S4 - Редактирование;
S5 - Сохранить;
S6 - Выход из программы.
Жизненный цикл программы изображен на рисунке 3.2.
Размещено на http://www.allbest.ru/
Рисунок 3.2 - Жизненный цикл программы
3. Объектно-ориентированное проектирование
Процесс объектно-ориентированного проектирования является возвратным проектированием и состоит в идентификации классов и объектов, определения свойств этих классов и объектов с точки зрения взаимосвязей с другими классами и создания классов и объектов.
Идентификации классов и объектов, определение свойств этих классов и объектов с точки зрения взаимосвязей с другими классами и создание классов и объектов необходимо вести с учетом особенностей средств, предоставляемых выбранной средой программирования. Эти процессы необходимо производить также с учетом результатов проведения объектно-ориентированного анализа.
Используя результаты проведения ООА, а также возможностей среды программирования Borland С++ Builder, были разработаны классы, необходимые для функционирования системы. Интерфейс и реализация этих классов представлены в приложении А.
На базе построенных классов была реализована программа, моделирующая сражения противоборствующих сторон.
Корнем иерархии являються объекты классов map, gg, obj, enemyA далее по иерархии наследниками класса obj являются классы go mine, наследник класса enemyA является класс enemyB. Третей ступенью иерархии являются классы key, liv, являющиеся наследниками класса go.
Класс gg содержит следующие свойства:
int x int y - текущие координаты;
bool left,right,up,down - переменные для второго типа движения
Класс map содержит следующие свойства:
gBitmap = new Graphics::TBitmap(); - загружаемые изображения
FILE *f2, *sg; - файлы, используемые для сохранения и считывания
int a[10][10]; - массив карты
bool mod,levelup - переменные перехода на следующие уровень и другой тип движения.
Класс EnemyA cсодержит следующие свойства:
int x1,y1,x3,y3,aa - перменные-координаты и вспомогательная переменная, используемая при движении.
4. Программная реализация
Программное описание классов.
class gg{
public:
gg() {x=30; y=30; up=false; down=false; left=false; right=false;}
// ~gg();
int x;
int y;
friend class map;
friend class key;
friend class liv;
bool left,right,up,down;
void paint(map *m,TTimer *Timer3,TTimer *Timer2,TLabel *Label4,key *k,liv *l);
void drawgg(TImage *Image1,TForm *Form1);
};
Данный класс является одним из базовых и содержит координаты главного героя, переменные для второго типа движения герой, также класс является дружественным с тремя другими: map,key,liv.
class map{
public:
map() {/*key_all=0;*/ /*ochki=1;*/ /*key=0;*/ fin=0; mod=false; level=1; payse=0; loaod=0;
gBitmap = new Graphics::TBitmap();
gBitmap3 = new Graphics::TBitmap();
gBitmap2 = new Graphics::TBitmap();
gBitmap4 = new Graphics::TBitmap();
gBitmap5 = new Graphics::TBitmap();
gBitmap6 = new Graphics::TBitmap();
gBitmap->LoadFromFile(ExtractFilePath(Application->ExeName)+"ico\\1.bmp");
gBitmap2->LoadFromFile(ExtractFilePath(Application->ExeName)+"ico\\12.bmp");
gBitmap3->LoadFromFile(ExtractFilePath(Application->ExeName)+"ico\\14.bmp");
gBitmap4->LoadFromFile(ExtractFilePath(Application->ExeName)+"ico\\13.bmp");
gBitmap5->LoadFromFile(ExtractFilePath(Application->ExeName)+"ico\\ea.bmp");
gBitmap6->LoadFromFile(ExtractFilePath(Application->ExeName)+"ico\\eb.bmp");
}
//~map();
FILE *f2, *sg;
int a[10][10];
int /*ochki*/fin,/*key, key_all,*/level,lkl,payse,sav,loaod;
Graphics::TBitmap* gBitmap;
Graphics::TBitmap* gBitmap2;
Graphics::TBitmap* gBitmap3;
Graphics::TBitmap* gBitmap4;
Graphics::TBitmap* gBitmap5;
Graphics::TBitmap* gBitmap6;
// Graphics::TBitmap* gBitmap7;
bool mod,levelup;
void check(TCheckBox *CheckBox1,TForm *Form1,gg *c);
//void allkey();
void pause(TImage *Image3p,TTimer *Timer5, TTimer *Timer1,TTimer *Timer666);
void savegame(TLabel *Label3s,TTimer *Timer2,liv *l);
void loadgame(TLabel *Label5h,TForm *Form1,TTimer *Timer5, TTimer *Timer1,TTimer *Timer666,liv *l);
void Paint_Map(TForm *Form1,TImage *Image1,gg a2,key *k);
void 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);
void newlevel(map *m,TForm *Form1,gg *a2,TTimer *Timer1,TTimer *Timer3, TTimer *Timer5,key *k,class mine *mm);
friend class gg;
};
Данный класс отвечает за прорисовку карты, поэтому содержит большое количество загружаемых изображений, содержит такие методы как окончание уровня, пауза, новый уровень, конец игры, сохранения игры, загрузка, подключемые карты. Класс является дружественным с классом gg.
class Obj {
public:
virtual void test(TForm *Form1,map *n)=0;
};
Данный класс является абстрактным.
class go : public Obj {
public:
void test(TForm *Form1,map *n);
};
Класс является наследником абстрактного класса Obj, содержит функцию изменения типа окна.
class key: public go {
public:
int key_all,ky;
key();
void test(TForm *Form1,map *n);
};
Класс является наследником класса go, содержит функцию нахождения всех клчей и две переменных - ky и key_all
class liv: public go{
public:
int ochki;
liv();
void test(TForm *Form1,map *n);
};
Класс предназначен размещения жизней на карте. Осуществляет обработку перемеенной ochki во время игры.
class mine : public Obj {
public:
int x,y;
void test(TForm *Form1,map *n);
mine();
Graphics::TBitmap* gBitmap13;
};
Класс, отвечающий за отображение и обработку мин, содержит координаты x,y, функцию test, конструктор, в котором осуществляется инициализация переменных и загружаемое изображение.
class EnemyA{
public:
EnemyA() {x3=7; y3=1; aa=0; }
int x1,y1,x3,y3,aa;
void MoveA(map *n, gg ob, TTimer *Timer2,TLabel *Label4);
};
Данный класс так же как и gg является одним из базовых. Содердит переменные x1,y1,x3,y3,aa отвечающие за координаты врагов и дополнительную переменную для движения. Класс содержит конструктор и функцию передвижения врага).
class EnemyB : public EnemyA {
public:
EnemyB() {fl=0; fl2=0; aa=0; ab=0; x4=5; y4=1; ff2=0;}
int x2,y2,x4,y4;
int fl,fl2,aa,ab,ac,ad,ff2;
void MoveB(map *c, gg ob2, TTimer *Timer2,TLabel *Label4);
};
Класс является наследником класса EnemyA, применяется в программе для отображения другого типа врага, имеет множество дополнительных переменных для задания движения врага.
4.1 Объектно-ориентированные свойства программы
При написании программы были использованы все свойства объектно-ориентированного подхода:
Абстракция - объекты представляют собою упрощенное, идеализированное описание реальных сущностей предметной области;
Инкапсуляция - данные и код объединены в объекты, а реализации объекта скрыты от пользователя;
Наследование - в ходе проектирования была разработана трехурованевая иерархия классов, в которой класс-потомок порождается от родительского с сохранением свойств и методов, и добавляется, при необходимости, новые свойства и методы;
Полиморфизм - в процессе описания объектов были разработаны виртуальные функции, которые реализуются различными методами в зависимости от класса объекта, вызывающего их.
Также были реализованы такие свойства ООП, как иерархичность (упорядочивание системы классов), типизация (на свойства объектов наложены ограничения, препятствующее взаимозаменяемости абстракций различных типов), параллелизм (в процессе работы программы несколько объектов одновременно находятся в активном состоянии).
Так как были соблюдены все свойства объектно-ориентированного подхода, то, как и было сказано ранее в пункте «Введение», программа обладает достаточной гибкостью, что позволяет легко ее модифицировать.
4.2 Критерии качества программы
Критерии качества с точки зрения выполнения критериев объектно-ориентированного подхода:
- разработанные объекты содержат инкапсулированные данные и процедуры, сгруппированные вместе, что позволяет защитить данные;
- в достаточной степени достигнута реализация абстрагирования, полиморфизма и наследования;
С точки зрения функциональности:
- игра соответствует назначению.
- данный продукт способен взаимодействовать со средой;
- завершенность, то есть данный продукт обладает всеми необходимыми чертами, требующимися для комфортабельной игры.
С точки зрения надежности:
- программа в достаточной мере протестирована, произведены исправления обнаруженных ошибок;
- устойчивость - программа способна продолжать корректное функционирование, в течении длительного времени.
С точки зрения пригодности к использованию:
- программа обладает интуитивно понятным и простым интерфейсом;
С точки зрения эффективности:
- данный программный продукт обладает высоким быстродействием и коротким временем отклика;
- программный продукт обладает достаточной эффективностью по устройствам, то есть экономичностью использования устройств машины для решения поставленной задачи;
С точки зрения сопровождаемости:
- программа пригодна к изменениям, то есть при появлении новых требований имеется возможность модифицирования программного кода;
- программа обладает стабильностью;
С точки зрения переносимости:
- программа обладает хорошей адаптируемостью и независимостью от устройств (способна работать на разнообразном аппаратном обеспечении);
- продукт не требует инсталляции, то есть осуществляется запуск.exe-файла;
- программа обладает заменяемостью, то есть она способна заменить свои аналоги.
5. Руководство пользователя
После запуска программы происходит вызов игрового окна с загрузочым изображением. После нажатия любой клавиши автоматически наченается игра. По нажатии на клавишу «F1» происходит пауза игры, при нажатии клавиши «F2» сохранение игры, при нажатии клавиши «F3» - загрузка. Выход из программы осуществляет нажатием на кнопку крестика в верхнем правом углу приложения.
программная реализация сражение взаимодействие объект
6. Тестирование программы
На стадии тестирования программы были устранены ошибки взаимодействия объектов. Объекты стали правильно обнаруживать ближайшую цель.
Тестирование программы показывает, что программа корректно выполняет обработку данных и демонстрацию взаимодействия объектов различных классов в соответствии с вариантом
Заключение
Данная программа разработана в соответствии с постановкой задачи на курсовое проектирование по теме “СТРАТЕГИЧЕСКИЕ ИГРЫ И МОДЕЛИ СЛОЖНЫХ СИСТЕМ» по дисциплине «Объектно-ориентированное программирование».
При написании программы были использованы методические указания по курсовому проектированию по дисциплине «Объектно-ориентированное программирование». Интерфейс программы прост и удобен для использования.
Тестирование программы подтвердило, что программа корректно выполняет взаимодействие объектов различных классов в соответствии с вариантом.
Были повторены, более детально рассмотрены и закреплены знания об объектно-ориентированном подходе в программировании, рассмотрены основные преимущества ООП над структурным подходом в программировании.
Преимущества ООП:
Позволяет создавать более гибкие программы, которые легко модифицировать;
Позволяет проводить конструирование из полезных компонентов, обдадающих простыми инструментами, что позволяет абстрагироваться от деталей реализации;
Данные и операции над ними образуют определенную сущность, и они не разносятся по всей программе;
ООП дает возможность создавать расширяемые системы;
Повышает читаемость кода;
Является эффективным методом программирования;
Сокращает время на разработку;
Так как графический редактор опирается на стандартные компоненты, его структура и пользовательский интерфейс при использовании ООП становятся более унифицированными, что облегчает понимание и использование программы.
Библиографический список
Архангельский А.Я. Программирование в C++ Builder 6 / А.Я. Архангельский. - М.: БИНОМ, 2003. - 1152 с.
Глушаков С.В. Язык программирования С++ / С.В. Глушаков. - Харьков: «Фолио», 2002. - 500 с.
Культин Н.Б. Самоучитель C++ Builder / Н.Б. Культин. - СПб.: БХВ-Петербург, 2004. - 320с.: ил.
Оверленд Б.С++ без страха: [учебное пособие: пер. с англ.] / Брайан Оверленд. - М.:Триумф, 2005. - 432с.: ил.
Шилдт Г. Самоучитель С ++: Пер. с англ. / Г. Шилдт. - 3-е изд. - СПб.: БХВ-Петербург, 2006. - 688с.
Приложение А. Исходные тексты программы
Текст программы
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <stdio.h>
#include <windows.h>
#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
//*****************************************************************************
class gg{
public:
gg() {x=30; y=30; up=false; down=false; left=false; right=false;}
// ~gg();
int x;
int y;
friend class map;
friend class key;
friend class liv;
bool left,right,up,down;
void paint(map *m,TTimer *Timer3,TTimer *Timer2,TLabel *Label4,key *k,liv *l);
void drawgg(TImage *Image1,TForm *Form1);
};
class map{
public:
map() {/*key_all=0;*/ /*ochki=1;*/ /*key=0;*/ fin=0; mod=false; level=1; payse=0; loaod=0;
gBitmap = new Graphics::TBitmap();
gBitmap3 = new Graphics::TBitmap();
gBitmap2 = new Graphics::TBitmap();
gBitmap4 = new Graphics::TBitmap();
gBitmap5 = new Graphics::TBitmap();
gBitmap6 = new Graphics::TBitmap();
gBitmap->LoadFromFile(ExtractFilePath(Application->ExeName)+"ico\\1.bmp");
gBitmap2->LoadFromFile(ExtractFilePath(Application->ExeName)+"ico\\12.bmp");
gBitmap3->LoadFromFile(ExtractFilePath(Application->ExeName)+"ico\\14.bmp");
gBitmap4->LoadFromFile(ExtractFilePath(Application->ExeName)+"ico\\13.bmp");
gBitmap5->LoadFromFile(ExtractFilePath(Application->ExeName)+"ico\\ea.bmp");
gBitmap6->LoadFromFile(ExtractFilePath(Application->ExeName)+"ico\\eb.bmp");
}
//~map();
FILE *f2, *sg;
int a[10][10];
int /*ochki*/fin,/*key, key_all,*/level,lkl,payse,sav,loaod;
Graphics::TBitmap* gBitmap;
Graphics::TBitmap* gBitmap2;
Graphics::TBitmap* gBitmap3;
Graphics::TBitmap* gBitmap4;
Graphics::TBitmap* gBitmap5;
Graphics::TBitmap* gBitmap6;
// Graphics::TBitmap* gBitmap7;
bool mod,levelup;
void check(TCheckBox *CheckBox1,TForm *Form1,gg *c);
//void allkey();
void pause(TImage *Image3p,TTimer *Timer5, TTimer *Timer1,TTimer *Timer666);
void savegame(TLabel *Label3s,TTimer *Timer2,liv *l);
void loadgame(TLabel *Label5h,TForm *Form1,TTimer *Timer5, TTimer *Timer1,TTimer *Timer666,liv *l);
void Paint_Map(TForm *Form1,TImage *Image1,gg a2,key *k);
void 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);
void newlevel(map *m,TForm *Form1,gg *a2,TTimer *Timer1,TTimer *Timer3, TTimer *Timer5,key *k,class mine *mm);
friend class gg;
};
//------------------------------------------------------------------------------
class Obj {
public:
virtual void test(TForm *Form1,map *n)=0;
};
class go : public Obj {
public:
void test(TForm *Form1,map *n);
};
//------------------------------------------------------------------------------
class key: public go {
public:
int key_all,ky;
key();
void test(TForm *Form1,map *n);
};
key::key() {
ky=0;
key_all=0;
return;
}
//------------------------------------------------------------------------------
class liv: public go{
public:
int ochki;
liv();
void test(TForm *Form1,map *n);
};
void liv:: test(TForm *Form1,map *n){
ochki=2;
}
liv::liv(){
ochki=1;
return;
}
//------------------------------------------------------------------------------
class mine : public Obj {
public:
int x,y;
void test(TForm *Form1,map *n);
mine();
Graphics::TBitmap* gBitmap13;
};
mine::mine() {
gBitmap13 = new Graphics::TBitmap();
gBitmap13->LoadFromFile(ExtractFilePath(Application->ExeName)+"ico\\15.bmp");
}
void mine::test(TForm *Form1,map *n) {
if (n->level==2) {
n->a[5][7]='m';
Form1->Canvas->Draw(210,150,gBitmap13);
}
if (n->level==4) {
n->a[1][2]='m';
Form1->Canvas->Draw(60,30,gBitmap13);
}
if (n->level==5) {
n->a[4][3]='m';
Form1->Canvas->Draw(90,120,gBitmap13);
}
}
//----------------------------------------------------------------------------
void go::test(TForm *Form1,map *n){
Form1->BorderStyle=bsSizeable;
}
//------------------------------------------------------------------------------
class EnemyA{
public:
EnemyA() {x3=7; y3=1; aa=0; }
int x1,y1,x3,y3,aa;
void MoveA(map *n, gg ob, TTimer *Timer2,TLabel *Label4);
};
//------------------------------------------------------------------------------
class EnemyB : public EnemyA {
public:
EnemyB() {fl=0; fl2=0; aa=0; ab=0; x4=5; y4=1; ff2=0;}
int x2,y2,x4,y4;
int fl,fl2,aa,ab,ac,ad,ff2;
void MoveB(map *c, gg ob2, TTimer *Timer2,TLabel *Label4);
};
//------------------------------------------------------------------------------
void map::check(TCheckBox *CheckBox1,TForm *Form1,gg *c) {
if (CheckBox1->Checked==true) mod=true;
else {mod=false; c->left=false; c->right=false; c->up=false; c->down=false; }
}
void map::pause(TImage *Image3p,TTimer *Timer5, TTimer *Timer1,TTimer *Timer666) {
if (payse==0) {
payse=1;
Timer1->Enabled=false;
Timer5->Enabled=false;
Timer666->Enabled=false;
Image3p->Visible=true;
Image3p->BringToFront();
}
else if (payse==1) {
payse=0;
Image3p->Visible=false;
Timer1->Enabled=true;
Timer5->Enabled=true;
Timer666->Enabled=true;
}
}
void map::savegame(TLabel *Label3s, TTimer *Timer2,liv *l) {
AnsiString k;
Timer2->Enabled=true;
Label3s->Visible=true;
TStringList *lst=new TStringList;
//sg=fopen("save\\game.txt","w");
k=level;
k=k+'\n';
k=k+l->ochki;
lst->Text=k;
lst->SaveToFile("save\\game.txt");
//fclose(sg);
}
void map::loadgame(TLabel *Label5h,TForm *Form1,TTimer *Timer5, TTimer *Timer1,TTimer *Timer666,liv *l) {
AnsiString o,l2;
TStringList *list = new TStringList;
Timer1->Enabled=false;
Timer5->Enabled=false;
Timer666->Enabled=false;
list->LoadFromFile("\save\\game.txt");
l2=list->Strings[0];
o=list->Strings[1];
delete list;
Label5h->Caption=o;
level=StrToInt(l2);
l->ochki=StrToInt(o);
loaod=1;
//level=StrToInt(l);
ShowMessage("ok!");
Timer1->Enabled=true;
Timer5->Enabled=true;
Timer666->Enabled=true;
Form1->FocusControl(0);
}
//------------------------------------------------------------------------------
void gg::paint(map *m,TTimer *Timer3,TTimer *Timer2,TLabel *Label4, key *k,liv *l) {
if (left)
if(m->a[y/30][x/30-1]!=1) {
if (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
if (m->a[y/30][x/30-1]==5) {m->a[y/30][x/30-1]=0; k->ky++; } //key
x-=30; }
if (right) if(m->a[y/30][x/30+1]!=1) {
if (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
if (m->a[y/30][x/30+1]==5) {m->a[y/30][x/30+1]=0; k->ky++; } //key
x+=30; }
if (up) if(m->a[y/30-1][x/30]!=1) {
if(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
if(m->a[y/30-1][x/30]==5) {m->a[y/30-1][x/30]=0; k->ky++; } //key
y-=30; }
if (down) if(m->a[y/30+1][x/30]!=1) {
if(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
if(m->a[y/30+1][x/30]==5) {m->a[y/30+1][x/30]=0; k->ky++; } // key
y+=30; }
}
//-----------------------------------------------------------------------------
void key::test(TForm *Form1,map *n) {
for(int i=0; i<10; i++)
for (int j=0; j<10; j++)
if (n->a[i][j]==5) key_all++;
}
//------------------------------------------------------------------------------
void 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);
Image1->Visible=true;
Image1->BringToFront();
Image1->Left=x;
Image1->Top=y;
}
//------------------------------------------------------------------------------
void map::newlevel(map *m,TForm *Form1,gg *a2,TTimer *Timer1,TTimer *Timer3, TTimer *Timer5,key *k, mine *mm)
{
Form1->FocusControl(0);
//FILE *f2;
if (level==1) f2=fopen("101.txt", "r");
else if (level==2) f2=fopen("2.txt","r");
else if (level==3) f2=fopen("3.txt","r");
else if (level==4) f2=fopen("4.txt","r");
else if (level==5) f2=fopen("5.txt","r");
Timer1->Enabled=true;
Timer3->Enabled=true;
a2->left=false; a2->right=false; a2->down=false; a2->up=false;
k->ky=0;
fin=0;
k->key_all=0;
for(int i=0;i<10;i++)
for(int j=0;j<11;j++)
{
char t=fgetc(f2);
switch(t)
{
case '0' : a[j][i]=0; break;
case '1' : a[j][i]=1; break;
case '2' : a[j][i]=2; break;
case '3' : a[j][i]=3; break;
case '4' : a[j][i]=4; break;
case '5' : a[j][i]=5; break;
}
}
k->test(Form1,m);
fclose(f2);
if (level==1) { a2->x=30; a2->y=30; Timer1->Interval=100 ; Timer5->Interval=85; lkl=0;}
if (level==2) { a2->x=240; a2->y=240; }
if (level==3) { a2->x=30; a2->y=240; Timer5->Interval=100; }
if (level==4) { a2->x=120; a2->y=30; Timer5->Interval=95; Timer1->Interval=125;}
if (level==5) { a2->x=30; a2->y=30; }
levelup=false;
//рандом
if (level==2) {
for (int i=0; i<10; i++)
for (int j=0; j<11; j++)
{ if (i==2)
if ((j>3)&&(j<7)){a[i][j]=random(2);}
if (i==3)
if ((j>3)&&(j<7)) {a[i][j]=random(2); }
if (i==5)
if ((j==2)||(j==3)||(j==6)) {a[i][j]=random(2); }
if (i==6)
if ((j==2)||(j==6)||(j==8)) {a[i][j]=random(2); }
if (i==8)
if (j==6) {a[i][j]=random(2); }
}
}
if (level==3) {
for(int i=0; i<10; i++)
for (int j=0; j<11; j++)
{ if (i==1)
if (j==1) {a[i][j]=random(2); }
if (i==3)
if ((j==5)||(j==7)) {a[i][j]=random(2); }
if (i==6)
if ((j==5)||(j==7)) {a[i][j]=random(2); }
if (i==7)
if ((j==2)||(j==4)||(j==5)||(j==7)) {a[i][j]=random(2); }
}
}
mm->test(Form1,m);
}
void map::Paint_Map(TForm *Form1,TImage *Image1,gg a2,key *k)
{ /*
Graphics::TBitmap* gBitmap = new Graphics::TBitmap();
Graphics::TBitmap* gBitmap2 = new Graphics::TBitmap();
Graphics::TBitmap* gBitmap3 = new Graphics::TBitmap();
Graphics::TBitmap* qBitmap4 = new Graphics::TBitmap();
Graphics::TBitmap* qBitmap5 = new Graphics::TBitmap();
Graphics::TBitmap* qBitmap6 = new Graphics::TBitmap();
*/
for(int i=0;i<10;i++)
{
for(int j=0;j<10;j++)
{
switch(a[j][i])
{
case 1 : Form1->Canvas->Draw(i*30,j*30,gBitmap2); break;
case 0 : if((i==a2.x/30)&&(j==a2.y/30)) { break; } Form1->Canvas->Draw(i*30,j*30,gBitmap); break;
case 2 : Form1->Canvas->Draw(i*30,j*30,gBitmap3); break;
case 3 : if((i==a2.x/30)&&(j==a2.y/30)){break;} Form1->Canvas->Draw(i*30,j*30,gBitmap5); break;
case 7 : if((i==a2.x/30)&&(j==a2.y/30)){break;} Form1->Canvas->Draw(i*30,j*30,gBitmap5); break;
case 4 : if((i==a2.x/30)&&(j==a2.y/30)){break;} Form1->Canvas->Draw(i*30,j*30,gBitmap6); break;
case 8 : if((i==a2.x/30)&&(j==a2.y/30)){break;} Form1->Canvas->Draw(i*30,j*30,gBitmap6); break;
case 5 : Form1->Canvas->Draw(i*30,j*30,gBitmap4); break;
}
}
}
if (level==2) a[7][1]==7;
//избежание патовых ситуаций
if (level==1) {
if ((a[2][1]==1)&&(a[2][2]==1)&&(a[2][3]==1)&&(a[1][3]==1)) { a[1][3]=0; ShowMessage("1");}
if ((a[2][1]==1)&&(a[2][2]==1)&&(a[2][3]==1)&&(a[1][3]==4)) { a[1][4]=0; ShowMessage("2");}
if ((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");}
if ((a[2][1]==1)&&(a[2][2]==1)&&(a[2][3]==1)&&(a[1][4]==1)) { a[2][2]=0; ShowMessage("4");}
if ((a[2][1]==1)&&(a[2][2]==1)&&(a[1][3]==1)) {a[2][1]==0; ShowMessage("5");}
/////////////////////////////////////////////////////////////////
if ((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");}
if ((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");}
if ((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");}
}
}
void 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) {
a[1][0]='f';
a[8][4]=1;
a[4][4]=1;
//a[2][4]=1;
Image4->Left=0; Image4->Top=30; Image4->Visible=true;
if ((p.x/30==0)&&(p.y/30==1)) fin=1;
}
if (level==2) {
a[5][6]='f';
Image4->Left=180; Image4->Top=150; Image4->Visible=true;
if ((p.x/30==6)&&(p.y/30==5)) fin=1;
}
if (level==3) {
a[1][5]='f';
Image4->Left=150; Image4->Top=30; Image4->Visible=true;
if ((p.x/30==5)&&(p.y/30==1)) fin=1;
}
if (level==4) { a[1][5]='f';
Image4->Left=150; Image4->Top=30; Image4->Visible=true;
if ((p.x/30==5)&&(p.y/30==1)) fin=1;
}
if (level==5) { a[3][2]='f';
Image4->Left=60; Image4->Top=90; Image4->Visible=true;
if ((p.x/30==2)&&(p.y/30==3)) fin=1;
}
if ((l->ochki>0)&&(fin==1)) {
if (level==5) {
lkl=1;
unsigned short res ;
Timer1->Enabled=false;
Timer2->Enabled=false;
Timer3->Enabled=false;
Timer4->Enabled=false;
Timer5->Enabled=false;
Timer666->Enabled=false;
CheckBox1->Visible=false;
Image1->Visible=false;
Label3h->Visible=false;
Label4h->Visible=false;
Label5h->Visible=false;
Image7->Picture->LoadFromFile(ExtractFilePath(Application->ExeName)+"ico\\767.bmp");
Image7->Top=0;
Image7->Width=511;
Image7->Height=326;
Image7->Left=0;
Image7->Visible=true;
// res=MessageDlg("Congratulations! You are win! Start a New Game? ",mtInformation,TMsgDlgButtons()<<mbYes<<mbNo,0);
res=MessageDlgPos("Congratulations! You are win! Start a New Game? ",mtInformation,TMsgDlgButtons()<<mbYes<<mbNo, 0,495, 550);
if (res==mrNo) { Application->Terminate(); }
else if (res==mrYes) {
l->ochki=1;
level=0;
a3.ff2=0;
k->ky=0;
Timer1->Enabled=true;
Timer2->Enabled=true;
Timer3->Enabled=true;
Timer4->Enabled=true;
Timer5->Enabled=true;
Timer666->Enabled=true;
CheckBox1->Visible=true;
Image1->Visible=true;
Label3h->Visible=false;
Label4h->Visible=false;
Label5h->Visible=false;
Image7->Visible=false;
finish(Image4, p,Timer1,Timer5, Timer666, Image7,CheckBox1,Timer2,Timer4,Timer3,Image1,Label3h,Label4h, Label5h,a3,k,l);
}
}
else {
Timer1->Enabled=false;
Timer5->Enabled=false;
// if (lkl==1) ShowMessage("Are you ready?");
if (lkl==0) ShowMessage("Next level ");
Image4->Visible=false; level++;
Timer5->Enabled=true;
levelup=true;
}
}
Timer1->Interval=120;
}
//------------------------------------------------------------------------------
void EnemyA:: MoveA(map *n, gg ob,TTimer *Timer2, TLabel *Label4)
{
if (n->level==1) {
for(int i=0;i<10;i++)
for(int j=0;j<10;j++)
if(n->a[i][j]==3) {x1=i;y1=j;}
if((y1+1!=6)&&(x1==6)) { n->a[x1][y1]=0; n->a[x1][y1+1]=3; } //вправо
else if((x1-1!=2)&&(y1==5)) {n->a[x1][y1]=0; n->a[x1-1][y1]=3; } //вверх
else if(y1-1!=0) {n->a[x1][y1]=0; n->a[x1][y1-1]=3; } //влево
else 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--; }
}
if (n->level==2) {
for (int i=0; i<10; i++)
for(int j=0; j<10; j++)
{ if (n->a[i][j]==3) {x1=i; y1=j; }
if (n->a[i][j]==7) {x3=i; y3=j; }
}
if ((n->a[x1][y1+1]!=1)&&(x1==4)) { n->a[x1][y1]=0; n->a[x1][y1+1]=3; } // вправо
else if ((n->a[x1+1][y1]!=1)&&(y1==5)) {n->a[x1][y1]=0; n->a[x1+1][y1]=3; } // вниз
else if (n->a[x1][y1-1]!=1) {n->a[x1][y1]=0; n->a[x1][y1-1]=3;} //влево
else if((n->a[x1-1][y1]!=1)&&(y1==1)) { n->a[x1][y1]=0; n->a[x1-1][y1]=3; } //вверх
if ((n->a[x3][y3+1]!=1)&&(aa==0)) { n->a[x3][y3]=0; n->a[x3][y3+1]=7; } // вправо
if (y3==8) aa=1;
if ((n->a[x3][y3-1]!=1)&&(aa==1)) { n->a[x3][y3]=0; n->a[x3][y3-1]=7; } //влево
if (y3==3) aa=0;
}
if (n->level==3) {
for (int i=0; i<10; i++)
for (int j=0; j<10; j++)
if (n->a[i][j]==3) {x1=i; y1=j; }
if (x1==8) aa=1;
if (x1==1) aa=0;
if ((n->a[x1+1][y1]!=1)&&(aa==0)) { n->a[x1][y1]=0; n->a[x1+1][y1]=3; } // вниз
if ((n->a[x1-1][y1]!=1)&&(aa==1)) {n->a[x1][y1]=0; n->a[x1-1][y1]=3; } // вверх
}
if (n->level==4) {
for (int i=0; i<10; i++)
for (int j=0; j<10; j++)
if (n->a[i][j]==3) {x1=i; y1=j; }
if ((n->a[x1+1][y1]!=1)&&(x1!=6)&&(y1!=8)) {n->a[x1][y1]=0; n->a[x1+1][y1]=3; } //вниз
else if ((n->a[x1][y1+1]!=1)&&(x1==6)) {n->a[x1][y1]=0; n->a[x1][y1+1]=3; } //вправо
else if ((n->a[x1-1][y1]!=1)&&(y1==8)) {n->a[x1][y1]=0; n->a[x1-1][y1]=3; } //вверх
else if ((n->a[x1][y1-1]!=1)&&(x1==3)) {n->a[x1][y1]=0; n->a[x1][y1-1]=3; } //влево
}
if (n->level==5) {
for (int i=0; i<10; i++)
for (int j=0; j<10; j++)
if (n->a[i][j]==3) {x1=i; y1=j; }
if ((x1==1)&&(y1==4)) aa=1;
if ((x1==3)&&(y1==1)) aa=0;
if ((n->a[x1+1][y1]!=1)&&(y1==1)&&(x1!=5)&&(aa==0)) {n->a[x1][y1]=0; n->a[x1+1][y1]=3; } //вниз
else if ((n->a[x1][y1+1]!=1)&&(aa==0)) {n->a[x1][y1]=0; n->a[x1][y1+1]=3; } // вправо
else if ((n->a[x1-1][y1]!=1)&&(aa==0)&&(y1==4)) {n->a[x1][y1]=0; n->a[x1-1][y1]=3; } //вверх
else if ((n->a[x1+1][y1]!=1)&&(aa==1)&&(y1==4)) { n->a[x1][y1]=0; n->a[x1+1][y1]=3; } //вниз2
else if ((n->a[x1][y1-1]!=1)&&(aa==1)) {n->a[x1][y1]=0; n->a[x1][y1-1]=3; } //влево
else if ((n->a[x1-1][y1]!=1)&&(y1==1)&&(aa==1)) {n->a[x1][y1]=0; n->a[x1-1][y1]=3; } //вверх2
}
}
//------------------------------------------------------------------------------
void EnemyB::MoveB(map *c, gg ob2,TTimer *Timer2, TLabel *Label4)
{ if (c->level==1) {
/*!!!!!!*/ for(int i=0;i<10;i++)
for(int j=0;j<10;j++)
if(c->a[i][j]==4) {x2=i;y2=j;}
if ((c->a[x2+1][y2]!=1)&&(ff2==0)&&(x2!=7)) { c->a[x2][y2]=0; c->a[x2+1][y2]=4; } //вниз
else if ((c->a[x2][y2-1]!=1)&&(x2==7)&&(ff2==0)) {c->a[x2][y2]=0; c->a[x2][y2-1]=4; } //влево
else if ((c->a[x2][y2+1]!=1)&&(x2==7)&&(ff2==1)) {c->a[x2][y2]=0; c->a[x2][y2+1]=4; } //вправо
else if ((c->a[x2-1][y2]!=1)&&(y2==8)&&(ff2==1)) { c->a[x2][y2]=0; c->a[x2-1][y2]=4;} //вверх
if ((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--; }
}
if (c->level==2) {
for (int i=0; i<10; i++)
for (int j=0; j<10; j++)
if (c->a[i][j]==4) {x2=i; y2=j; }
if ((c->a[x2][y2+1]!=1)&&(ab<4)) { c->a[x2][y2]=0; c->a[x2][y2+1]=4; } //вправо
else if ((x2!=5)&&(ab<4)) { c->a[x2][y2]=0; c->a[x2+1][y2]=4; ab++;} // вниз
else if (c->a[x2-1][y2]!=1) {c->a[x2][y2]=0; c->a[x2-1][y2]=4; } // вверх
else if (c->a[x2][y2-1]!=1) {c->a[x2][y2]=0; c->a[x2][y2-1]=4; } //влево
if ((x2==1)&&(y2==1)) ab=0;
}
if (c->level==3) {
for (int i=0; i<10; i++)
for (int j=0; j<10; j++)
if (c->a[i][j]==4) {x4=i; y4=j; }
if ((c->a[x4][y4+1]!=1)&&(x4!=4)) {c->a[x4][y4]=0; c->a[x4][y4+1]=4; } //вправо
else if ((c->a[x4-1][y4]!=1)&&(x4!=4)) {c->a[x4][y4]=0; c->a[x4-1][y4]=4; } // вверх
else if ((c->a[x4][y4-1]!=1)&&(y4!=1)) { c->a[x4][y4]=0; c->a[x4][y4-1]=4; } //влево
else if ((c->a[x4+1][y4]!=1)&&(x4!=5)) {c->a[x4][y4]=0; c->a[x4+1][y4]=4; } //вниз
}
if (c->level==4) {
for (int i=0; i<10; i++)
for (int j=0; j<10; j++)
if (c->a[i][j]==4) {x4=i; y4=j; }
if ((c->a[x4][y4-1]!=1)&&(y4!=2)&&(x4==8)) { c->a[x4][y4]=0; c->a[x4][y4-1]=4; } //влево
else if ((c->a[x4-1][y4]!=1)&&(y4==2)&&(x4!=2)) {c->a[x4][y4]=0; c->a[x4-1][y4]=4; } //вверх
else if ((c->a[x4][y4-1]!=1)&&(y4==2)&&(x4==4)) {c->a[x4][y4]=0; c->a[x4][y4-1]=4; } // влево2
else if ((c->a[x4-1][y4]!=1)&&(y4==1)&&(x4!=2)) {c->a[x4][y4]=0; c->a[x4-1][y4]=4; } //вверх2
else if ((c->a[x4][y4+1]!=1)&&(x4==2)) {c->a[x4][y4]=0; c->a[x4][y4+1]=4; } //вправо2
else if ((c->a[x4+1][y4]!=1)&&(y4==4)) { c->a[x4][y4]=0; c->a[x4+1][y4]=4; } //вниз
else if ((c->a[x4][y4+1]!=1)&&(x4==6)&&(y4!=7)) { c->a[x4][y4]=0; c->a[x4][y4+1]=4; } //вправо3
else if ((c->a[x4+1][y4]!=1)&&(y4==7)) {c->a[x4][y4]=0; c->a[x4+1][y4]=4; } //вниз2
}
if (c->level==5) {
for (int i=0; i<10; i++)
for (int j=0; j<10; j++)
if (c->a[i][j]==4) {x4=i; y4=j; }
if ((x4==1)&&(y4==8)) ac=1;
if ((x4==8)&&(y4==1)) ac=0;
if ((c->a[x4][y4+1]!=1)&&(x4==8)&&(ac==0)) {c->a[x4][y4]=0; c->a[x4][y4+1]=4; } // вправо
else if ((c->a[x4-1][y4]!=1)&&(y4==8)&&(ac==0)) { c->a[x4][y4]=0; c->a[x4-1][y4]=4; } //вверх
else if ((c->a[x4+1][y4]!=1)&&(ac==1)) {c->a[x4][y4]=0; c->a[x4+1][y4]=4; } //вниз
else if ((c->a[x4][y4-1]!=1)&&(ac==1)) {c->a[x4][y4]=0; c->a[x4][y4-1]=4; } // влево
}
}
gg ob;
map m;
map *m2;
EnemyA r;
EnemyB q;
AnsiString l1,l2,l3;
key kl;
liv ll;
mine min;
//*****************************************************************************
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
randomize();
//q.fl=0;
//q.fl2=0;
Timer3->Enabled=true;
FILE *f;
f=fopen("1.txt", "r");
AddFontResourceA("font\\PERTIBD.ttf");
AddFontResourceA("font\\PERTILI_0.ttf");
Image1->Picture->LoadFromFile(ExtractFilePath(Application->ExeName)+"\\ico\\gg.bmp");
Image2->Picture->LoadFromFile(ExtractFilePath(Application->ExeName)+"\\ico\\65.bmp");
Image6->Picture->LoadFromFile(ExtractFilePath(Application->ExeName)+"\\ico\\background.bmp");
Image4->Picture->LoadFromFile(ExtractFilePath(Application->ExeName)+"\\ico\\final.bmp");
Image7->Picture->LoadFromFile(ExtractFilePath(Application->ExeName)+"ico\\767.bmp");
Image3p->Picture->LoadFromFile(ExtractFilePath(Application->ExeName)+"ico\\pause.bmp");
Image3p->Width=200;
Image3p->Height=100;
Image3p->Left=60;
Image3p->Top=100;
//if(f=fopen((ExtractFilePath(Application->ExeName) + "1.txt").c_str(),"r"))
{for(int i=0;i<10;i++)
{
for(int j=0;j<11;j++)
{
char t=fgetc(f);
switch(t)
{
case '0' : m.a[i][j]=0; break;
case '1' : m.a[i][j]=1; break;
case '2' : m.a[i][j]=2; break;
case '3' : m.a[i][j]=3; break;
case '4' : m.a[i][j]=4; break;
case '5' : m.a[i][j]=5; break;
}
}
}
} //рандомное заполнение первого левела
for (int i=0; i<10; i++)
for (int j=0; j<11; j++)
{ if (i==1)
if ((j>2)&&(j<7)){m.a[i][j]=random(2);}
if (i==2)
if ((j>0)&&(j<7)) {m.a[i][j]=random(2); }
if (i==5)
if ((j==6)||(j==7)) {m.a[i][j]=random(2); }
if (i==6)
if (j==6) {m.a[i][j]=random(2); }
}
fclose(f);
kl.test(Form1,&m);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if (m.payse==0) {
Timer666->Enabled=true;
Timer1->Enabled=true;
Timer5->Enabled=true;
}
m.check(CheckBox1,Form1,&ob);
Image6->Visible=false;
Image2->Visible=true; //картинка-фоон // из-за этой фигни косяк с передвижением, нужно че нить придумать
Label11->Font->Name="Perpetua Titling MT";
Label10->Font->Name="Perpetua Titling MT";
Label1->Font->Name="Perpetua Titling MT";
Label2->Font->Name="Perpetua Titling MT";
Label4->Font->Name="Perpetua Titling MT";
Label5->Font->Name="Perpetua Titling MT";
Label6->Font->Name="Perpetua Titling MT";
Label7->Font->Name="Perpetua Titling MT";
Label8->Font->Name="Perpetua Titling MT";
Label3s->Font->Name="Perpetua Titling MT";
Label3p->Visible=true;
Label3h->Visible=true;
Label4h->Visible=true;
Label5h->Visible=true;
Label11->Visible=true;
CheckBox1->Visible=true;
Label1->Visible=true;
Label2->Visible=true;
Label5->Visible=true;
Label6->Visible=true;
Label7->Visible=true;
Label8->Visible=true;
Label9->Visible=true;
Label9->Width=80;
Label10->Visible=true;
if (m.mod) {
switch(Key) {
case VK_LEFT: { if (m.payse==0) {ob.left=true; ob.right=false; ob.up=false; ob.down=false; break;} }
case VK_RIGHT: { if (m.payse==0) {ob.left=false; ob.right=true; ob.up=false; ob.down=false;} break; }
case VK_UP: { if (m.payse==0) {ob.left=false; ob.right=false; ob.up=true; ob.down=false;} break;}
case VK_DOWN: { if (m.payse==0) {ob.left=false; ob.right=false; ob.up=false; ob.down=true;} break; }
case VK_F1: { m.pause(Image3p,Timer5,Timer1,Timer666); break; }
case VK_F2: { m.savegame(Label3s,Timer2,&ll); break; }
case VK_F3: { m.loadgame(Label5h,Form1,Timer1,Timer5,Timer666,&ll); break; }
} }
else {
switch(Key) {
case '1' : {kl.ky=kl.key_all; break; }
case VK_F1: { m.pause(Image3p,Timer5,Timer1,Timer666); break; }
case VK_F2: { m.savegame(Label3s,Timer2,&ll); break; }
case VK_F3: { m.loadgame(Label5h,Form1,Timer1,Timer5,Timer666,&ll); break; }
case VK_LEFT: if (m.payse==0) {
if(m.a[ob.y/30][ob.x/30-1]!=1) {
if (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
if (m.a[ob.y/30][ob.x/30-1]==5) {m.a[ob.y/30][ob.x/30-1]=0; kl.ky++; } //key
ob.x-=30; } break; }
case VK_RIGHT: if (m.payse==0) {
if(m.a[ob.y/30][ob.x/30+1]!=1) {
if (m.a[ob.y/30][ob.x/30+1]==2) {m.a[ob.y/30][ob.x/30+1]=0; ll.ochki++; } //star
Подобные документы
Работа в Borland C++ Builder. Среда разработки и компоненты C++ Builder. Свойства компонентов. Менеджер проектов. Создание приложений в C++ Builder. Выбор компонентов для групповых операций. Работа с базами данных в Borland C++ Builder.
курсовая работа [35,8 K], добавлен 11.06.2007Разработка учебного приложения, играющего роль клавиатурного тренажёра. Установка различных опций. Использование средств Borland C++Builder 6.0. Объектно-ориентированное проектирование и программирование системы. Тестирование и отладка программы.
курсовая работа [730,4 K], добавлен 23.07.2013Разработка программного продукта (лабиринт с входом и выходом, состоящий из комнат) в среде разработки Borland C++ Builder 6. Требования пользователя к программному изделию. Программные ограничения, совместимость. Основные процессы разработки программы.
курсовая работа [819,9 K], добавлен 14.01.2013Описание проектного решения стратегической системы, этапы объектно-ориентированного анализа и проектирования. Описание связей между объектами. Программная реализация, построение модели состояний объекта. Руководство пользователя и описание программы.
курсовая работа [388,8 K], добавлен 17.11.2011Анализ временных рядов. Разработка программы для среды визуального проектирования Borland Delphi 7.0. Математическая формулировка задачи. Структурная схема программы. Описание реализации технологии COM, динамических библиотек, возможностей программы.
курсовая работа [4,3 M], добавлен 14.11.2010Базовые принципы правового регулирования трудовых отношений. Проектирование автоматизированной информационной системы "Отдел кадров", программная реализация, тестирование. Состав базы данных, методы анализа надежности системы, руководство пользователя.
дипломная работа [3,6 M], добавлен 11.03.2010Создание консольных приложений с использованием графического интерфейса пользователя. Содержание палитры компонентов программы С++ Builder. Использование возможностей объектно-ориентированного программирования, особенности редактора кода и форм в С++.
лекция [27,0 K], добавлен 22.12.2010Разработка прикладной программы для операций создания и уничтожения объектов в системе визуального объектно-ориентированного программирования C++Builder. Алгоритм работы программы, набор функций и операторов, компонент и модулей, кнопки событий.
дипломная работа [672,5 K], добавлен 16.08.2012Разработка программы учета занятости компьютеров в лаборатории. Анализ требований, метод решения. Разработка алгоритма в виде структурных схем. Программная реализация в среде Borland Delphi. Минимальные системные требования для ее корректной работы.
дипломная работа [6,3 M], добавлен 10.06.2013Реализация программного кода "Organizer 1.0". Разработка приложений баз данных с помощью Borland C++ Builder 6. Компоненты системы программирования для работы по технологии InterBase. Программный код и интерфейс "Organizer 1.0", структура приложения.
курсовая работа [466,9 K], добавлен 28.07.2009Этапы проектирования и программная реализация интернет-магазина. Методы разработки его интерфейса - элементов и компонентов программы, которые способны оказывать влияние на взаимодействие пользователя с программным обеспечением. Защита интернет-магазина.
контрольная работа [28,7 K], добавлен 02.10.2010Разработка приложений для работы с графикой в Borland C++ Builder. Вывод изображения на экран, изменение цвета и толщины линии контура, перемещение объекта по экрану, получение нового объекта вычитанием двух существующих. Основные обработчики событий.
контрольная работа [1,5 M], добавлен 28.03.2012C# как объектно-ориентированный язык программирования. Объектно-ориентированный анализ и проектирование системы на языке UML. Сущность программы "Учёт пациентов в регистратуре поликлиники", ее достоинства и недостатки, пошаговая инструкция пользователя.
курсовая работа [1,5 M], добавлен 17.02.2013Информационное, структурно-функциональное и объектно-ориентированное проектирования. Разработка и реализация информационной системы для авиазаводов. Разработка прототипа программного продукта – Borland Delphi 7.0. Автоматизирование документооборота.
курсовая работа [4,4 M], добавлен 26.02.2014Borland и C++Builder 6.0 как совершенная интерактивная среда программирования на языке C++. Проектирование программы, глобальные переменные. Форма создания нового каталога. Объекты на Form Dialog Delete. Блок-схема взаимодействия компонентов программы.
курсовая работа [836,2 K], добавлен 27.08.2014Создание программы для обработки информации об объектах предметной области "Бытовая техника" в среде визуального программирования C++. Иерархия родственных классов. Описание логической структуры программы. Реализация файлового ввода/вывода данных.
курсовая работа [711,4 K], добавлен 27.07.2014Разработка программы, моделирующей процесс падения шариков в Доске Гальтона - приборе, наглядно иллюстрирующем некоторые законы теории вероятностей. Структура метода решения. Блок-схема меню программы. Процедуры, интерфейс, руководство пользователя.
курсовая работа [1,4 M], добавлен 15.01.2013Понятие объектно-ориентированного программирования, характеристика используемых языков. Практическая разработка средств объектно-ориентированного программирования в задачах защиты информации: программная реализация на языке С++, а также Turbo Pascal.
курсовая работа [275,9 K], добавлен 22.12.2011Создание программы, автоматизирующей расчет коэффициента ритмичности продукции с использованием электронных таблиц средствами языка программирования Си. Консолидация данных в MSExcel. Программная реализация алгоритма. Тестирование разработанного ПО.
курсовая работа [3,0 M], добавлен 07.06.2014Нормализация предметной области "Сайт знакомств" и ее программная реализация с использованием СУБД MySQL, языка HTML, технологии PHP и ADO, скриптовых языков VBScript или JavaScript. Руководство программиста, тестирование, исходный текст приложения.
реферат [29,0 K], добавлен 09.09.2010