Суббота, 20 Апреля 2024, 04:22

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Форум игроделов » Программирование » Delphi/Pascal/Object Pascal » Мои вопросы по обучению на Delphi XE и помощь к созданию игр (Здесь буду задавать вопросы по Delphi.)
Мои вопросы по обучению на Delphi XE и помощь к созданию игр
TimKruzДата: Вторник, 05 Февраля 2013, 21:44 | Сообщение # 21
старожил
Сейчас нет на сайте
Цитата (Александр5)
все будет храниться в одном файле

Хранить картинки в файле карты чаще всего неэффективно и глупо, потому что одна картинка может использоваться в разных картах (например, изображение земли, дерева). Поэтому лучше всего хранить картинки либо по-отдельности в папке, либо в одном файле (лучше - в архиве, типа zip). А остальные данные карты (размещение картинок на карте и всякие там параметры объектов) - в другом файле.


Александр5Дата: Четверг, 14 Февраля 2013, 08:17 | Сообщение # 22
частый гость
Сейчас нет на сайте
Помогите мне разобраться с классом как сделать класс также конструктор и деструктор класса а главное запись рекорда из класса чтобы при открытие рекорда в текстовом формате примерно это высвечивалось и еще просьба написть создание класса масивов изображения с определенными координатами х и у каждое

Добавлено (14.02.2013, 08:17)
---------------------------------------------
Помогите разобраться с класом чтобы использовать его для игры в нем должен быть рекорд а также файл с текстами игры запись должна записывать рекорд через класс в итоге в рекорде должны быть символы на подобие таких

 TSK§ ќз /ц Gс cе {Щ ’ џ ЕЩ ’е {с cц Gз /П ѕ · к ?WЩ ’е {с c
h(h №q`qzҐ‚ Њ Ґ#З%д-лQуpШ \Ј^Йdдzт-ъ ` [‰ s© vЗ tй s)ЋH› Ќ А › л ¦ љ #Њ <Ѓ V 3#(э щ т Ю н ї к Ё Ъ ~mQ# Ю!Б!  %';кQуoЧ аьС¶-qPu&_6C;)1%щE 626ъ5 6° (М Х сШ Шв Кы є
Ў‡'h/ »’ Т® дВ сШ Х (М S) tN †d ’~ СN П= ±9 ”; v: 61 ,K
E цU

TimKruzДата: Четверг, 14 Февраля 2013, 17:27 | Сообщение # 23
старожил
Сейчас нет на сайте
Александр5, ты можешь выражаться яснее, что тебе нужно?
Цитата (Александр5)
как сделать класс

В самом общем виде простой класс выглядит так:
Код
type
TSomeClass=class({родитель класса, по умолчанию - }TObject)
   //описание переменных класса
   //описание процедур и функций класса, конструктор и деструктор
   constructor Create;
   destructor Destroy;
   //Тут ещё могут быть группы public/private и т.п., но тебе это не нужно
end;
//Когда напишешь названия процедур и функций в описании класса,
//нажми ctrl+shift+c и Delphi сама напишет шаблоны тел ниже, удобно

var SomeClass:TSomeClass; //экземпляр класса
//Экземпляр инициализируется командой ИмяЭкземпляра:=КлассЭкземпляра.Create;
//а удаляется либо через ИмяЭкземпляра.Destroy;, либо ИмяЭкземпляра.Free;
//(через Free безопаснее, т.к. Free проверяет существование экземпляра и
//вызывает Destroy только если удаление возможно)

{Тела процедур и функций класса в форме типа:
procedure TSomeClass.ИмяПроцедуры; - аргументы можно не переписывать
begin

end;}

constructor TSomeClass.Create;
begin
   //Твой код, выполняется один раз при создании экземпляра класса
end;

destructor TSomeClass.Destroy;
begin
   //Твой код, выполняется один раз при удалении экземпляра класса
end;

Как делать записи record сам знаешь.
Цитата (Александр5)
Помогите разобраться с класом чтобы использовать его для игры в нем должен быть рекорд а также файл с текстами игры запись должна записывать рекорд через класс

Ну ты просто хочешь, чтобы за тебя написали этот класс вместе с записью... Но при этом непонятно, что конкретно он должен записывать, а основные принципы я тебе раньше написал. Короче, изучай учебники по программированию, читай самоучители и руководства - там всё это есть, и очень подробно, так что, если будешь стараться понять и разобраться - обязательно во всём разберёшься и всё сам сможешь сделать.
Поверь, тебе будет полезнее разобраться самому, чем просить других написать тебе готовый код. smile

Цитата (Александр5)
в итоге в рекорде должны быть символы на подобие таких

Такие символы в блокноте отображаются тогда, когда в файле записаны какая-либо информация бинарном виде (например, числа integer в файле file of integer), т.е. там могут быть какие угодно байты, а не только те, которые соответствуют определённым символам-буквам.
Если же ты хочешь записывать текстовую информацию, которую нельзя прочитать обычным блокнотом (т.е. зашифровать текст) - ищи информацию о шифровании текста (можно взять для начала какой-нибудь простой тип шифра), ну или вообще статьи по криптографии...




Сообщение отредактировал TimKruz - Четверг, 14 Февраля 2013, 17:29
Александр5Дата: Пятница, 15 Февраля 2013, 08:30 | Сообщение # 24
частый гость
Сейчас нет на сайте
constructor TSomeClass.Create;
begin
//Твой код, выполняется один раз при создании экземпляра класса
end;

destructor TSomeClass.Destroy;
begin
//Твой код, выполняется один раз при удалении экземпляра класса
end;
А что именно должно тут происходить

Ну ты просто хочешь, чтобы за тебя написали этот класс вместе с записью... Но при этом непонятно, что конкретно он должен записывать, а основные принципы я тебе раньше написал. Короче, изучай учебники по программированию, читай самоучители и руководства - там всё это есть, и очень подробно, так что, если будешь стараться понять и разобраться - обязательно во всём разберёшься и всё сам сможешь сделать.
Поверь, тебе будет полезнее разобраться самому, чем просить других написать тебе готовый код.

Спасибо ты мне очень помог и писать код я буду сам только что именно должно быть в конструкторах и в деструкторах

Такие символы в блокноте отображаются тогда, когда в файле записаны какая-либо информация бинарном виде (например, числа integer в файле file of integer), т.е. там могут быть какие угодно байты, а не только те, которые соответствуют определённым символам-буквам.
Если же ты хочешь записывать текстовую информацию, которую нельзя прочитать обычным блокнотом (т.е. зашифровать текст) - ищи информацию о шифровании текста (можно взять для начала какой-нибудь простой тип шифра), ну или вообще статьи по криптографии...

странно я рекорд записываю таким способом
assignfile(fil,extractfilepath(application.ExeName)+'papka\filename');
rewrite(fil);
write(fil,g);
closefile(fil);
а рекорд сделан так
type
TPers=record
name:string[10]; //Volodorn
jizn:word; //Жизни 1000
oruj:boolean; //оружие доступно
patron:integer; //патроны
...
end;
но он все равно не такой результат выходит
TimKruzДата: Пятница, 15 Февраля 2013, 13:53 | Сообщение # 25
старожил
Сейчас нет на сайте
Цитата (Александр5)
А что именно должно тут происходить
Цитата (Александр5)
что именно должно быть в конструкторах и в деструкторах

В самом простом случае (когда предок класса - TObject) - что угодно (а может не быть ничего вовсе). Обычно в конструкторе задают начальные значения переменным, выделяют память под динамические переменные (например, задают размеры динамических массивов), а в деструкторе, соответственно, освобождают память, которая занята динамическими переменными.
Вот, например, класс TPolygon - он описывает многоугольник, позволяет с ним работать:
Код
TModel:array of TPoint; //TModel - массив записей TPoint, которые обозначают точки (поля x,y:integer)
TPolygon=class
   polygon:TModel; //Собственно, массив вершин многоугольника
   S:^longword; //Для примера: указатель (pointer) на переменную
   constructor Create(n:word); //n - число вершин
   destructor Destroy;
end;
<...>
constructor TPolygon.Create;
begin
   SetLength(polygon,n); //Задаём размер массива
   new(s); //Выделяем память для переменной
end;

destructor TPolygon.Destroy;
begin
   //Удаляем массив
   polygon:=nil; //или SetLength(polygon,0) - не знаю, что правильнее
   dispose(s); //Высвобождаем память от переменной
end;

Здесь переменные и задание их размеров, выделение памяти чисто для примера - в конструкторе и деструкторе может вообще не быть никакого кода, тогда Create/Destroy наследуются от TObject, но ничего не делают (хотя вызывать их, естественно, обязательно - без них нельзя создать или уничтожить экземпляр класса).
А вот если наш класс - потомок какого-то особого класса (=class(чего-то там)), то мы можем либо полностью наследовать конструктор/деструктор, либо частично, либо полностью перезаписать его:
Код
TNewObject=class(TParentObject) //TNewObject - потомок TParentObject
   constructor Create;
end;
<...>
constructor TNewObject.Create;
begin
   <тут может быть наш код>

   inherited; //Эта команда вызывает код TParentObject.Create, если он на нужен
   //Её может и не быть - тогда код TParentObject.Create перезаписывается нашим

   <тут может быть наш код>
end;
//Точно так же можно сделать с Destroy

В принципе, эта команда используется как inherited ИмяМетодаПредка(аргументы);, а просто inherited; вызывает одноимённый метод класса-предка.

Цитата (Александр5)
странно я рекорд записываю таким способом
но он все равно не такой результат выходит

Ну у тебя там строка string, которая будет выглядеть в файле как простой текст, а вот параметры jizn, oruj и patron уже будут выглядеть как непонятные крякозябры. Правда, если, например, jizn=0, то в файле окажется два нулевых символа (которые, вроде бы, никак не отображаются блокнотом). То есть, попробуй забивать различные числа - получишь непонятные символы...
А чтобы строку string привести в нечитабельный вид - нужно её шифровать. Правда, тогда тебе придётся перед записью строку шифровать, а после чтения - расшифровывать, а если будешь шифровать весь файл целиком - придётся писать свои методы чтения/записи (т.к. read(fil,g) считает зашифрованные данные) или мудрить с алгоритмами дешифровки (т.е. расшифровывать записи уже после чтения через read(fil,g))...


Александр5Дата: Пятница, 15 Февраля 2013, 14:01 | Сообщение # 26
частый гость
Сейчас нет на сайте
А чтобы строку string привести в нечитабельный вид - нужно её шифровать. Правда, тогда тебе придётся перед записью строку шифровать, а после чтения - расшифровывать, а если будешь шифровать весь файл целиком - придётся писать свои методы чтения/записи (т.к. read(fil,g) считает зашифрованные данные) или мудрить с алгоритмами дешифровки (т.е. расшифровывать записи уже после чтения через read(fil,g))...
Лучше строку шифровать и расшифровку слушай напиши мне шифровку и расшифровку или ссылку где про это пишут кстати непонемаю почему в делфи 5 не работает этот код
Код
type TObect_obj=class(TObject)
   type RObject_obj=record
     Kartinka:tbitmap;
     Names:string[20];
     typesPO:BOOLEAN;
     tormoz_procent:integer;
     BOOLEAN_OBJECT:boolean;
     TYPE_OBJECT:BYTE;
     STOP_PERSONAZ:BOOLEAN;
   end;
   var Object_obj1:RObject_obj;
end;
const OBR_YES:STRING='(Да)';
OBR_NO:STRING='(Нет)';
var
   Form1: TForm1;

implementation

а в раде все работает вот весь код модуля

Код
unit UN_OBject;

interface

uses
   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
   ExtCtrls, StdCtrls, Buttons, ComCtrls;

type
   TForm1 = class(TForm)
     BitBtn1: TBitBtn;
     Panel1: TPanel;
     Image1: TImage;
     Panel2: TPanel;
     RadioGroup2: TRadioGroup;
     RadioGroup1: TRadioGroup;
     Timer1: TTimer;
     CheckBox1: TCheckBox;
     Label1: TLabel;
     TrackBar1: TTrackBar;
     Label2: TLabel;
     OBR: TEdit;
     Label3: TLabel;
     procedure TrackBar1Change(Sender: TObject);
     procedure Timer1Timer(Sender: TObject);
   private
     { Private declarations }
   public
     { Public declarations }
   end;
type TObect_obj=class(TObject)
   type RObject_obj=record
     Kartinka:tbitmap;
     Names:string[20];
     typesPO:BOOLEAN;
     tormoz_procent:integer;
     BOOLEAN_OBJECT:boolean;
     TYPE_OBJECT:BYTE;
     STOP_PERSONAZ:BOOLEAN;
   end;
   var Object_obj1:RObject_obj;
end;
const OBR_YES:STRING='(Да)';
OBR_NO:STRING='(Нет)';
var
   Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
   Label1.Caption:=inttostr(TrackBar1.Position)+' %';
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
   If RadioGroup1.ItemIndex=0then begin panel2.Enabled:=false; end;
   If RadioGroup1.ItemIndex=1then begin Panel2.Enabled:=true; end;
   If CheckBox1.Checked=true then begin Label2.Caption:=OBR_YES;end else begin Label2.Caption:=OBR_NO;end;
end;

end.

вот собственно ошибки
Код
[Error] UN_OBject.pas(32): 'END' expected but 'TYPE' found
[Error] UN_OBject.pas(42): 'IMPLEMENTATION' expected but ';' found
[Error] UN_OBject.pas(48): '.' expected but 'IMPLEMENTATION' found
[Error] UN_OBject.pas(24): Unsatisfied forward or external declaration: 'TForm1.TrackBar1Change'
[Error] UN_OBject.pas(25): Unsatisfied forward or external declaration: 'TForm1.Timer1Timer'
[Fatal Error] Object_Edit.dpr(5): Could not compile used unit 'UN_OBject.pas'
TimKruzДата: Пятница, 15 Февраля 2013, 23:12 | Сообщение # 27
старожил
Сейчас нет на сайте
Цитата (Александр5)
Лучше строку шифровать и расшифровку слушай напиши мне шифровку и расшифровку или ссылку где про это пишут

Поищи сам в Яндексе, например. Типа "delphi шифрование текста".
Цитата (Александр5)
кстати непонемаю почему в делфи 5 не работает этот код

Хм... Сначала думал, что ты хочешь объявить запись без объявления типа (такое тоже возможно, только type не нужно писать), потом понял:
Код
type
   RObject_obj=record
     Kartinka:tbitmap;
     Names:string[20];
     typesPO:BOOLEAN;
     tormoz_procent:integer;
     BOOLEAN_OBJECT:boolean;
     TYPE_OBJECT:BYTE;
     STOP_PERSONAZ:BOOLEAN;
   end;
   TObect_obj=class(TObject)
     Object_obj1:RObject_obj;
   end;

Теоретически, можно вместо объявления RObject_obj сразу описание записи сделать, т.е. не описывать тип RObject_obj, но лучше всё-таки описывать так...


Александр5Дата: Пятница, 15 Февраля 2013, 23:26 | Сообщение # 28
частый гость
Сейчас нет на сайте
Спасибо тут с игрой в делфи 5 возникла сможешь разобраться
Код

unit UN4_GAMES;

interface
uses
   Windows, Messages, SysUtils, Classes, Graphics, Controls,Dialogs,
   StdCtrls, ExtCtrls;
TYPE
TGameRead=class(TThread) // класс для таймера игры
   private
   protected
   procedure Execute;override; // Запуск
   procedure Tic;              // Один тик программы
end;
Type TCreate_Graphic=class(TObject)
   OBJ_Stena:array[0..1] of TBitmap;
end;
  Procedure TCreate_new;
var i:integer;
   Graphics1:TCreate_Graphic;
   L1:TGameRead;
implementation
uses UN3_GAMES;
  procedure TGameRead.execute;
  begin
    repeat
      synchronize(Tic);
      until Terminated
  end;
procedure TGameRead.Tic;
   begin
   // Тут пишем все как в TTimer OnTime
end;
Procedure TCreate_new;
begin
   For i := 0 to 1 do begin
     Graphics1.OBJ_Stena[i]:=Tbitmap.Create;
   end;
   Graphics1.OBJ_Stena[0].LoadFromFile(ProgDir+'\Lefels1\Stena_1.bmp');
   Graphics1.OBJ_Stena[1].LoadFromFile(ProgDir+'Stena_2.bmp');
   L1:=TGameRead.Create(false); // Создаем поток
   L1.Priority:=TpHighest;      // Ставим приоритет
end;
end.

Ошибка системная вот тут
Код
For i := 0 to 1 do begin
     Graphics1.OBJ_Stena[i]:=Tbitmap.Create;
   end;
TimKruzДата: Суббота, 16 Февраля 2013, 12:06 | Сообщение # 29
старожил
Сейчас нет на сайте
Цитата (Александр5)
Ошибка системная вот тут

Ты, похоже, забыл инициализировать экземпляр класса, надо конструктор класса вызвать:
Код
Graphics1:=TCreate_Graphic.Create;
For i := 0 to 1 do begin
   Graphics1.OBJ_Stena[i]:=Tbitmap.Create;
end;

Дело в том, что конструктор класса, даже если он пустой, выполняет важную роль: выделяет память для статичных переменных экземпляра и возвращает указатель на выделенную память для экземпляра; значение этого указателя мы сохраняем в специальной переменной-указателе (собственно Graphics1), чтобы потом была возможность им пользоваться (если просто вызвать TCreate_Graphic.Create - то память выделится, т.е. будет создан экземпляр класса, но управлять мы им просто не сможем)... А деструктор высвобождает занятую память (после чего указатель становится недействительным). Подробнее - изучай работу с указателями (Pointer), это довольно сложная, но интересная тема. smile


Александр5Дата: Четверг, 21 Февраля 2013, 15:30 | Сообщение # 30
частый гость
Сейчас нет на сайте
Надешь тему и что в конструкторе и деконструторе писать

Добавлено (20.02.2013, 13:15)
---------------------------------------------
Как сделать запись класса
вот код

Код

unit UN_OBject;

interface

uses
   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
   ExtCtrls, StdCtrls, Buttons, ComCtrls, ExtDlgs, UN1_Object;

type
   TForm1 = class(TForm)
     BitBtn1: TBitBtn;
     Panel1: TPanel;
     Image1: TImage;
     Panel2: TPanel;
     RadioGroup2: TRadioGroup;
     RadioGroup1: TRadioGroup;
     Timer1: TTimer;
     CheckBox1: TCheckBox;
     Label1: TLabel;
     TrackBar1: TTrackBar;
     Label2: TLabel;
     OBR: TEdit;
     Label3: TLabel;
     Label4: TLabel;
     OpenPictureDialog1: TOpenPictureDialog;
     Button1: TButton;
     CheckBox2: TCheckBox;
     Label5: TLabel;
     procedure TrackBar1Change(Sender: TObject);
     procedure Timer1Timer(Sender: TObject);
     procedure BitBtn1Click(Sender: TObject);
     procedure Button1Click(Sender: TObject);
   private
     { Private declarations }
   public
     { Public declarations }
end;
type RObject_obj=record
     Kartinka:tbitmap;
     Names:string[20];
     typesPO:BOOLEAN;
     tormoz_procent:integer;
     BOOLEAN_OBJECT:boolean;
     TYPE_OBJECT:BYTE;
     STOP_PERSONAZ:BOOLEAN;
   end;
type TObject_obj=class(TObject)
   Object_obj1:RObject_obj;
end;
const OBR_YES:STRING='(Да)';
OBR_NO:STRING='(Нет)';
var
   Form1: TForm1;
   Object1:TObject_obj;
implementation

{$R *.DFM}

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
   Label1.Caption:=inttostr(TrackBar1.Position)+' %';
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
   If RadioGroup1.ItemIndex=0then begin panel2.Enabled:=false; end;
   If RadioGroup1.ItemIndex=1then begin Panel2.Enabled:=true; end;
   If CheckBox1.Checked=true then begin Label2.Caption:=OBR_YES;end else begin Label2.Caption:=OBR_NO;end;
   If CheckBox2.Checked=true then begin Label5.Caption:=OBR_YES;end else begin Label5.Caption:=OBR_NO;end;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
   If openpicturedialog1.Execute then begin
     image1.Picture.LoadFromFile(openpicturedialog1.FileName);
   end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   Object1.Object_obj1.Kartinka:=Tbitmap.Create;
   Object1.Object_obj1.Kartinka:=image1.Picture.Bitmap;
   Object1.Object_obj1.Names:=OBR.Text;
   case Radiogroup1.ItemIndex of
   0:begin
   Object1.Object_obj1.typesPO:=false;
   end;
   1:begin
   Object1.Object_obj1.typesPO:=true;
   end;
   end;
   if Object1.Object_obj1.typesPO=true then begin
   object1.Object_obj1.tormoz_procent:=0;
   object1.Object_obj1.BOOLEAN_OBJECT:=false;
   object1.Object_obj1.TYPE_OBJECT:=0;
   object1.Object_obj1.STOP_PERSONAZ:=false;
   end else begin
     object1.Object_obj1.tormoz_procent:=trackbar1.Position;
     object1.Object_obj1.BOOLEAN_OBJECT:=checkbox1.Checked;
     Object1.Object_obj1.TYPE_OBJECT:=Radiogroup2.ItemIndex+1;
     object1.Object_obj1.STOP_PERSONAZ:=checkbox2.Checked;
   end;
   //Remained to do record

   //Destroy picture
   object1.Object_obj1.Kartinka.FreeImage;
end;

end.

Добавлено (21.02.2013, 15:30)
---------------------------------------------
Как можно проверить существует ли папка в определенной директории или нет если нет то создать ее
функция function DirectoryExists ( const DirectoryName : string ) : Boolean; не работвает в Delphi 5 помоему ее там вобще нет а вот эта
CreateDir(dirName); работет

TimKruzДата: Четверг, 21 Февраля 2013, 18:46 | Сообщение # 31
старожил
Сейчас нет на сайте
Цитата (Александр5)
функция function DirectoryExists ( const DirectoryName : string ) : Boolean; не работвает в Delphi 5 помоему ее там вобще нет а вот эта
CreateDir(dirName); работет

Вот ответ: одна из первых ссылок в Яндексе.
В Delphi 5 функция DirectoryExists находится в модуле FileCtrl, а не в SysUtils, куда она потом переехала.
Вообще, советую использовать Delphi 7 (как достаточно популярную до сих пор) или одну из RAD-студий, например, 2007 (последняя не юникодовская).


Александр5Дата: Четверг, 21 Февраля 2013, 19:37 | Сообщение # 32
частый гость
Сейчас нет на сайте
Вообще, советую использовать Delphi 7 (как достаточно популярную до сих пор) или одну из RAD-студий, например, 2007 (последняя не юникодовская).

пасибо но делфи 7 у меня вирусная диск купил 150 нелицензионный падла мало того не совместима с виндой 7 так еще после установки 3 недели и винда литит. также код от 5 и 7 несовпадает а вобще желательно 7 но не нужна образ диска маленьким весом под виндовс 7 х64 и 86 и 32 короче на все и еще я тут запись класса сделал так мне не верится что данные будут весить 1 кб вот код

Код

unit UN2_Object;

interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
   ExtCtrls, StdCtrls, Buttons, ComCtrls, ExtDlgs;
type TObject_obj=class(TObject)
   Kartinka:tbitmap;
   Names:string[20];
   typesPO:BOOLEAN;
   tormoz_procent:integer;
   BOOLEAN_OBJECT:boolean;
   TYPE_OBJECT:BYTE;
   STOP_PERSONAZ:BOOLEAN;
end;
implementation

end.

unit UN_OBject;

interface

uses
   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
   ExtCtrls, StdCtrls, Buttons, ComCtrls, ExtDlgs,UN2_Object;

type
   TForm1 = class(TForm)
     BitBtn1: TBitBtn;
     Panel1: TPanel;
     Image1: TImage;
     Panel2: TPanel;
     RadioGroup2: TRadioGroup;
     RadioGroup1: TRadioGroup;
     Timer1: TTimer;
     CheckBox1: TCheckBox;
     Label1: TLabel;
     TrackBar1: TTrackBar;
     Label2: TLabel;
     OBR: TEdit;
     Label3: TLabel;
     Label4: TLabel;
     OpenPictureDialog1: TOpenPictureDialog;
     Button1: TButton;
     CheckBox2: TCheckBox;
     Label5: TLabel;
     procedure TrackBar1Change(Sender: TObject);
     procedure Timer1Timer(Sender: TObject);
     procedure BitBtn1Click(Sender: TObject);
     procedure Button1Click(Sender: TObject);
     procedure FormCreate(Sender: TObject);
   private
     { Private declarations }
   public
     { Public declarations }
end;
const OBR_YES:STRING='(Да)';
OBR_NO:STRING='(Нет)';
var
   Form1: TForm1;
   Object1:TObject_obj;
   FILE_Object:file of TObject_obj;
   il:integer;
   fs: TSearchRec;
implementation

{$R *.DFM}

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
   Label1.Caption:=inttostr(TrackBar1.Position)+' %';
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
   If RadioGroup1.ItemIndex=0then begin panel2.Enabled:=false; end;
   If RadioGroup1.ItemIndex=1then begin Panel2.Enabled:=true; end;
   If CheckBox1.Checked=true then begin Label2.Caption:=OBR_YES;end else begin Label2.Caption:=OBR_NO;end;
   If CheckBox2.Checked=true then begin Label5.Caption:=OBR_YES;end else begin Label5.Caption:=OBR_NO;end;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
   If openpicturedialog1.Execute then begin
     image1.Picture.LoadFromFile(openpicturedialog1.FileName);
   end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   Object1:=TObject_obj.Create;
   Object1.Kartinka:=tbitmap.Create;
   Object1.Kartinka:=image1.Picture.Bitmap;
   Object1.Names:=OBR.Text;
   case Radiogroup1.ItemIndex of
   0:begin
   Object1.typesPO:=false;
   end;
   1:begin
   Object1.typesPO:=true;
   end;
   end;
   if Object1.typesPO=true then begin
   object1.tormoz_procent:=0;
   object1.BOOLEAN_OBJECT:=false;
   object1.TYPE_OBJECT:=0;
   object1.STOP_PERSONAZ:=false;
   end else begin
     object1.tormoz_procent:=trackbar1.Position;
     object1.BOOLEAN_OBJECT:=checkbox1.Checked;
     Object1.TYPE_OBJECT:=Radiogroup2.ItemIndex+1;
     object1.STOP_PERSONAZ:=checkbox2.Checked;
   end;
   //Remained to do record
     assignfile(FILE_Object,extractfilepath(application.ExeName)+'\TObject_A\TObject_'+OBR.Text+'_'+inttostr(il+1)+'.TOBJ');
     rewrite(FILE_Object);
     write(FILE_Object,Object1);
     closefile(FILE_Object);
   //Destroy picture
   object1.Kartinka.FreeImage;
   Object1.Free;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
   if FindFirst(extractfilepath(application.ExeName)+'\TObject_A\'+'*.TOBJ',faAnyFile - faDirectory - faVolumeID, fs) = 0 then begin
     repeat
     inc(il);
     until FindNext(fs) <> 0;
     findclose(fs);
   end;
end;

end.


Поможешь чтото тут не так.

Кстати если код в делфи 5 и 7 индетичный и совпадает то дай ылку на 7 но маленький файл и совместимую с виндой 7 также как 5 рад у меня есть но на нем игру будет сложнее разрабатывать 1 код сильно отличается 2 стилей на много больше прийдется делать если учесть что на многие компоненты нельзя цвет поставить рад у меня XE3 и delphi 5
TimKruzДата: Пятница, 22 Февраля 2013, 00:27 | Сообщение # 33
старожил
Сейчас нет на сайте
Делфи 7 полностью совместима с семёркой, виндоус предупреждение первый раз выводит, но Делфи работает отлично. Правда, ей нужны права администратора для работы с файлами в её папке.
Диск ты зря покупал, уж лучше оригинальный образ скачать.
Данные у тебя килобайт весят, потому что ты используешь tbitmap, а там много информации хранится, да и сами битмапы много места занимают. Вообще, я уже говорил, что стандартными средствами не всегда удобно в файл писать, т.к., например, пустые строки и массивы будут забивать пространство в файле нулями.


Александр5Дата: Пятница, 01 Марта 2013, 15:26 | Сообщение # 34
частый гость
Сейчас нет на сайте
Цитата (TimKruz )
Диск ты зря покупал, уж лучше оригинальный образ скачать


Почему зря вобщета я за него 300 рублей платил и там за исключением этого 10 языков я его из за бейсика брал както интерисовался но это интерприатор и игру нормальную там не написать

Цитата (TimKruz )
Данные у тебя килобайт весят, потому что ты используешь tbitmap, а там много информации хранится, да и сами битмапы много места занимают. Вообще, я уже говорил, что стандартными средствами не всегда удобно в файл писать, т.к., например, пустые строки и массивы будут забивать пространство в файле нулями.


А как делать но игру я даже незнаю пока я решил сделать объекты для редактора карт редактор объектов но как сделать запись чтобы был бинарный файл мне честно говоря хочется поскорее закончить с редактором объектов и перейти редактору карт а ушь потом начать писать игровой движок 1 версия расчитываю сделать простую без стилей только компоненты и код.

Цитата (TimKruz )
Делфи 7 полностью совместима с семёркой, виндоус предупреждение первый раз выводит, но Делфи работает отлично. Правда, ей нужны права администратора для работы с файлами в её папке.


А есть маленький образ и без вирусов ну скажем весом 100 мб но не достигающие 200 вобще 5 весит 64 мб образ диска

Добавлено (22.02.2013, 08:57)
---------------------------------------------


Добавлено (22.02.2013, 16:55)
---------------------------------------------
Короче исправил код но даже рекорд по человечески не может записываться что еще можно использовать для бинарного файла чтобы сделать объекты для карты
Код

unit UN_OBject;

interface

uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    ExtCtrls, StdCtrls, Buttons, ComCtrls, ExtDlgs,UN2_Object,FileCtrl;

type
    TForm1 = class(TForm)
      BitBtn1: TBitBtn;
      Panel1: TPanel;
      Image1: TImage;
      Panel2: TPanel;
      RadioGroup2: TRadioGroup;
      RadioGroup1: TRadioGroup;
      Timer1: TTimer;
      CheckBox1: TCheckBox;
      Label1: TLabel;
      TrackBar1: TTrackBar;
      Label2: TLabel;
      OBR: TEdit;
      Label3: TLabel;
      Label4: TLabel;
      OpenPictureDialog1: TOpenPictureDialog;
      Button1: TButton;
      CheckBox2: TCheckBox;
      Label5: TLabel;
      procedure TrackBar1Change(Sender: TObject);
      procedure Timer1Timer(Sender: TObject);
      procedure BitBtn1Click(Sender: TObject);
      procedure Button1Click(Sender: TObject);
      procedure FormCreate(Sender: TObject);
    private
      { Private declarations }
    public
      { Public declarations }
end;
const OBR_YES:STRING='(Да)';
OBR_NO:STRING='(Нет)';
var
    Form1: TForm1;
    Object1:TObject_obj;
    FILE_Object:file of TObject_obj;
    il:integer;
    fs: TSearchRec;
implementation

{$R *.DFM}

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
    Label1.Caption:=inttostr(TrackBar1.Position)+' %';
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
    If RadioGroup1.ItemIndex=0then begin panel2.Enabled:=false; end;
    If RadioGroup1.ItemIndex=1then begin Panel2.Enabled:=true; end;
    If CheckBox1.Checked=true then begin Label2.Caption:=OBR_YES;end else begin Label2.Caption:=OBR_NO;end;
    If CheckBox2.Checked=true then begin Label5.Caption:=OBR_YES;end else begin Label5.Caption:=OBR_NO;end;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
    If openpicturedialog1.Execute then begin
      image1.Picture.LoadFromFile(openpicturedialog1.FileName);
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var r:word;
begin
    Object1.Kartinka:=tbitmap.Create;
    Object1.Kartinka:=image1.Picture.Bitmap;
    Object1.Names:=OBR.Text;
    case Radiogroup1.ItemIndex of
    0:begin
    Object1.typesPO:=false;
    end;
    1:begin
    Object1.typesPO:=true;
    end;
    end;
    if Object1.typesPO=true then begin
    object1.tormoz_procent:=0;
    object1.BOOLEAN_OBJECT:=false;
    object1.TYPE_OBJECT:=0;
    object1.STOP_PERSONAZ:=false;
    end else begin
      object1.tormoz_procent:=trackbar1.Position;
      object1.BOOLEAN_OBJECT:=checkbox1.Checked;
      Object1.TYPE_OBJECT:=Radiogroup2.ItemIndex+1;
      object1.STOP_PERSONAZ:=checkbox2.Checked;
    end;
     assignfile(FILE_Object,extractfilepath(application.ExeName)+'TObject_A\TObject_'+OBR.Text+'_'+inttostr(il)+'.TOBJ');
     rewrite(FILE_Object);
     write(FILE_Object,Object1);
     closefile(FILE_Object);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
    if FindFirst(extractfilepath(application.ExeName)+'\TObject_A\'+'*.TOBJ',faAnyFile - faDirectory - faVolumeID, fs) = 0 then begin
      repeat
      inc(il);
      until FindNext(fs) <> 0;
      findclose(fs);
    end;
end;

end.

unit UN2_Object;

interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    ExtCtrls, StdCtrls, Buttons, ComCtrls, ExtDlgs;
Type
TObject_obj=record
    Kartinka:tbitmap;
    Names:string[20];
    typesPO:BOOLEAN;
    tormoz_procent:integer;
    BOOLEAN_OBJECT:boolean;
    TYPE_OBJECT:BYTE;
    STOP_PERSONAZ:BOOLEAN;
end;
implementation

end.


Добавлено (22.02.2013, 17:30)
---------------------------------------------
Я нашел как решиить проблему нашел пример и теперь я буду записывать класс

Добавлено (22.02.2013, 18:03)
---------------------------------------------
Слушайти тут проблемка вот код записи строки мне нужно сделать запись не только строки
Код

procedure TMaterials.WriteString(Stream: TStream; Str: string);
var I : Integer;
begin
    I := Length(Str);
    Stream.Write(I, SizeOf(I));
    Stream.Write(Str[1], I);
end;


Как можно сделать еще на такие данные Integer,Byte,boolean,Word и т.п поможете

тоже самое и для чтения надо вот код чтения строки
Код

function TMaterials.ReadString(Stream: TStream): string;
var I : Integer;
begin
   Stream.Read(I, SizeOf(I));
   SetLength(Result, I);
   Stream.Read(Result[1], I);
end;

Добавлено (25.02.2013, 10:59)
---------------------------------------------
Как можно сделать мигание Модальной формы при попытки перейти на другие формы когда открыта модальная форма
То есть как можно отловить это а с миганием формя я сам разберусь а вот как отловить переход на другие формы в модальной форме с помощью таймера

Добавлено (01.03.2013, 15:26)
---------------------------------------------
Скажите мне как можно в текстовике сделать поиск слова и как определить на какой строке это слово находится.

И еще как считывать определенную строчку а не подряд

Сообщение отредактировал Александр5 - Пятница, 22 Февраля 2013, 18:07
TimKruzДата: Пятница, 01 Марта 2013, 23:31 | Сообщение # 35
старожил
Сейчас нет на сайте
Цитата (Александр5)
Скажите мне как можно в текстовике сделать поиск слова и как определить на какой строке это слово находится.
И еще как считывать определенную строчку а не подряд

Поиск подстроки в строке - pos(), возвращает номер символа.
Если используешь TMemo или ему подобный компонент - у него есть Lines, это массив строк string. Номер строки соответствует номеру в массиве.
То есть ищешь слово, проходя в цикле с помощью pos по всем строкам lines.


Александр5Дата: Пятница, 01 Марта 2013, 23:37 | Сообщение # 36
частый гость
Сейчас нет на сайте
Нет я в текстовике это значит в текстовом файле но я тут подумал что лучше сделать рекордом рекорд будет содержать весь текст игры но сейчас занят редактором карт и никак не могу найти формулу для того чтобы узнать в какую ячейку засовывать картинку

Масив ячеек будет выглядить так

Maps_Games : array of Bitmap;

Или может предложете как лучше сделать массив карты с ячейками

1 файл = 1 карта

И еще мне нужно узнать что использовать для записи картинок

решил для записи переменных Integer, boolean, string, byte использовать рекорд но для картинок не подойдет нужен спицальная запись с памятью например TMemoryStream
TimKruzДата: Суббота, 02 Марта 2013, 14:59 | Сообщение # 37
старожил
Сейчас нет на сайте
Цитата (Александр5)
Нет я в текстовике это значит в текстовом файле

Ну строчки в текстовом файле разделяются специальной парой символов, проверить конец строки можно командой eoln(файловаяпеременная), которая вернёт true, если достигнут конец строки и false в противном случае (кстати, eof(файловаяпеременная) работает так же, как eoln, только проверяет конец файла и работает с любыми типами файлов). Тогда для поиска по файлу можно либо читать по строкам (readln(str)) и искать в каждой строке через pos() необходимый текст, или перебирать все символы по одиночке и вручную сравнивать, а конец строки регистрировать через eoln.
Цитата (Александр5)
лучше сделать рекордом рекорд будет содержать весь текст игры

Как ты себе это представляешь? wacko
Цитата (Александр5)
Масив ячеек будет выглядить так
Maps_Games : array of Bitmap;
Или может предложете как лучше сделать массив карты с ячейками

Вот представь себе: ты хочешь сделать поле 10x10 клеток, на котором растёт трава. Трава представляет собой одну картинку, которая всегда одинаковая. Если использовать твой способ, то получится 10x10=100 экземпляров TBitmap, т.е. 100 копий одной и той же картинки, и если картинка весит 100 КБ, то поле 10x10 будет весить чуть меньше 10 МБ. Поэтому этот способ крайне нерационален и вообще не имеет смысла. Правильнее делать массив типа map:array of word (лучше двумерный, если карта двумерная (типа с видом сверху), то есть нужно map:array of array of word, а длина такого динамического массива задаётся как length(map,a,b), где a и b - размеры получаемой матрицы). Именно word нужен если типов клеток будет больше 256, если меньше - хватит и byte. В итоге получаем массив чисел. Но что эти числа обозначают и как ими пользоваться? Всё просто. Числа обозначают тип клетки и/или соответствующую ей картинку, например, если map[2,4]=0, то клетка с координатами (2,4) имеет тип "простая трава" и при прорисовке карты нужно будет рисовать в месте этой клетки картинку травы. Но где хранятся картинки? А они хранятся в "банке картинок", например, таком: Image:array of TBitmap, в котором индекс картинки обозначает её тип, т.е. в ячейке Image[0] хранится изображение травы, которое должно быть нарисовано в клетке (2,4).
В итоге получаем 10x10x1=100 Б (это если byte, а если word - то 200 Б) плюс 100 КБ сама картинка.
Цитата (Александр5)
И еще мне нужно узнать что использовать для записи картинок

Слушай, ты слишком слабо разбираешься в программировании, так что используй TBitmap.LoadFromFile('имяфайлакартинки.bmp') для загрузки картинок (и, соответственно TBitmap.SaveToFile('имяфайлакартинки.bmp') для сохранения, если очень надо) и не парься с тем, что картинки всем будут видны. Ты ведь редактор делаешь к своему движку, значит, любой должен мочь редактировать карты и картинки, поэтому будет логично хранить их открыто (например, в папке images).
Цитата (Александр5)
нужен спицальная запись с памятью например TMemoryStream

Ну вот сам найди и прочитай статьи по TMemoryStream и разберёшься с ним сам. А если не разберёшься - сделай как-нибудь по-проще...




Сообщение отредактировал TimKruz - Суббота, 02 Марта 2013, 15:02
Александр5Дата: Суббота, 02 Марта 2013, 15:17 | Сообщение # 38
частый гость
Сейчас нет на сайте
TimKruz, Спасибо но Word не хранит картинок или ты предлагаешь чтобы ворд хранил код картинки например трава или еще что либо а Image:array of TBitmap хранил картики 1 тип = 1 картинка

правдо эфективно но тут вопрос зайдет о количестве картинок

map:array of array of word это массив который будет хранить тип картинки с заданными координатами

Image:array of TBitmap это сами картинки

Вопрос пойдет о том как на имадже показывать эти картики если учесть что не будет известно в каких координатах какая картинка

это прийдется делать определенный информационный масив и его запись для этого

Запись как ты говоришь сделать я не могу так как это карта а не набор картинок если карта будет состоятьиз усков картинок то сами карты будут состоять из файлов и их будет более 1000.

Как ты себе это представляешь?

Ну сделать редктор текст едит он будетпризводить загрузку и сохранения рекорда. В рекорде будут несколько 10 масивов string для текста.

несколько 10 потомучто хочу чтобы все по полочкам лежало
TimKruzДата: Суббота, 02 Марта 2013, 21:57 | Сообщение # 39
старожил
Сейчас нет на сайте
Цитата (Александр5)
Вопрос пойдет о том как на имадже показывать эти картики если учесть что не будет известно в каких координатах какая картинка

Можно, например, так:
Код
const mapw=100; maph=200; //ширина и высота карты
imgw=40; imgh=40; //ширина и высота картинок карты
<--->
for x:=0 to mapw do
   for y:=0 to maph do
     Display.Canvas.Draw(x*imgw,y*imgh,image[map[x,y]]);

Image[map[x,y]] выдаёт битмап, соответствующий конкретной клетке поля, а Canvas.Draw(x,y,tgraphic) рисует его на компоненте Display (TImage).


Александр5Дата: Среда, 06 Марта 2013, 19:23 | Сообщение # 40
частый гость
Сейчас нет на сайте
Ответ те на это пожалуйста

1)

Код

unit Unit1;

interface
uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    ExtCtrls, StdCtrls, Menus, AppEvnts, TeeProcs, TeEngine, Chart,UN_Type,UN_DrawGrid;

type
    TForm1 = class(TForm)
      Create_Maps_btn: TButton;
      Mini_Map_scrl1: TScrollBox;
      Maps1: TImage;
      MX_lbl: TLabel;
      MY_lbl: TLabel;
      MX1Y1X2Y2_lbl: TLabel;
      Memo1: TMemo;
      PopupMenu1: TPopupMenu;
      N1: TMenuItem;
      PopupMenu2: TPopupMenu;
      N2: TMenuItem;
      N3: TMenuItem;
      Button1: TButton;
      Image1: TImage;
      Edit1: TEdit;
      Edit2: TEdit;
      Button2: TButton;
      procedure Create_Maps_btnClick(Sender: TObject);
      procedure Maps1MouseMove(Sender: TObject; Shift: TShiftState; X,
        Y: Integer);
      procedure N1Click(Sender: TObject);
      procedure Maps1MouseDown(Sender: TObject; Button: TMouseButton;
        Shift: TShiftState; X, Y: Integer);
      procedure FormCreate(Sender: TObject);
      procedure FormClose(Sender: TObject; var Action: TCloseAction);
      procedure Button2Click(Sender: TObject);
      procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
        Shift: TShiftState; X, Y: Integer);

    private
      { Private declarations }
      procedure MouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);

// îáðàáîòêà ïðîêðóòêè êîëåñà âíèç
procedure MouseWheelDown(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);

// îáðàáîòêà ïðîêðóòêè êîëåñà ââåðõ
procedure MouseWheelUp(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
    public
      { Public declarations }
    end;
var
    Form1: TForm1;
    DStream:TDStream;
    i,o,p:Integer;
    IM1:Integer;
    IM2:Integer;
    cs,str1,lki:string;
    KX,KY,JX,JY:Integer;
    lk:Word;{Ïåðåìåííàÿ êîòîðàÿ áóäåò õðàíèòü êîä êàðòèíêè}
    files:TextFile;
    krt,krg:integer;
    Bmp_Image:array of string;
    fs:TSearchRec;
    list:TStringList;
implementation

{$R *.DFM}
procedure TForm1.Create_Maps_btnClick(Sender: TObject);
begin
    i := StrToInt(InputBox('Ââåäèòå ÷èñëî ÿ÷ååê','Ââîä ÷èñëà ÿ÷ååê','32'));
    if i >= 20 then begin
      DStream.InputStream:=TMemoryStream.Create;
      AssignFile(files,ExtractFilePath(Application.ExeName)+'Maps_Bin.bin');
      ReWrite(files);
      CloseFile(files);
      o:=i*50;
      Form1.Maps1.Height:=o;
      Form1.Maps1.Width:=o;
      Form1.Mini_Map_scrl1.Visible:=True;
      SetLength(DStream.Maps_Cells,i,i);
      DStream.InputStream.Free;
    end else begin
      AllocConsole;
      cs:='\\Èçâèíèòå ÷èñëî äîëæíî áûòü áîëüøå 20. Ââåäèòå ÷èñëî ÿ÷ååê';
      CharToOEM (PChar(cs), PChar(cs));
      Writeln(cs);
      readln;
      repeat
        lki:='Èçâèíèòå. Íî äëÿ çàêðûòèÿ êîíñîëüíîãî ïðèëîæåíèÿ íóæíî ââåñòè Close';
        CharToOEM (PChar(lki), PChar(lki));
        Writeln(lki);
        readln(str1);
      until AnsiUpperCase(str1) = 'CLOSE';
        FreeConsole;
      end;
    end;

procedure TForm1.Maps1MouseMove(Sender: TObject; Shift: TShiftState; X,
    Y: Integer);
begin
    Form1.MX_lbl.Caption:=IntToStr(X);
    Form1.MY_lbl.Caption:=IntToStr(Y);
end;

procedure TForm1.N1Click(Sender: TObject);
begin
    Memo1.Lines.SaveToFile(ExtractFilePath(Application.ExeName)+'Èíôîðìàöèÿ.txt');
end;

procedure TForm1.Maps1MouseDown(Sender: TObject; Button: TMouseButton;
    Shift: TShiftState; X, Y: Integer);
begin
    KX:= X div 50;
    KY:= Y div 50;
    Form1.MX1Y1X2Y2_lbl.Caption:='X = '+inttostr(KX)+':'+ 'Y = ' + inttostr(KY);
      
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
    list:=TStringList.Create;
    if FindFirst(ExtractFilePath(Application.ExeName)+'Bitmaps_Png\'+'*.bmp',faAnyFile-faDirectory-faVolumeID, fs)=0 then begin
      repeat
        inc(krg);
        list.Add(fs.Name);
      until FindNext(fs)<>0;
      findclose(fs);
    end;
    Form1.OnMouseWheel:=MouseWheel;
    Form1.OnMouseWheelDown:=MouseWheelDown;
    Form1.OnMouseWheelUp:=MouseWheelUp;
    Form1.AutoSize:=True;
end;

procedure TForm1.MouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
begin
    Form1.Image1.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'Bitmaps_Png\'+list.Strings[krt]);
    Form1.Edit2.Text:=list.Strings[krt]+' : '+inttostr(krt);
end;

procedure TForm1.MouseWheelDown(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
begin
    If krt > 0 then begin
      krt := krt - 1;
    end;
    Form1.Edit1.Text:='Ââíèç';
end;

procedure TForm1.MouseWheelUp(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
begin
    if krt < krg -1 then begin
      krt := krt + 1;
    end;
    Form1.Edit1.Text:='Ââåðõ';
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
    Form1.OnMouseWheel:=nil;
    Form1.OnMouseWheelDown:=nil;
    Form1.OnMouseWheelUp:=nil;
    Application.Terminate;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
    Form1.OnMouseWheel:=nil;
    Form1.OnMouseWheelDown:=nil;
    Form1.OnMouseWheelUp:=nil;
    Application.Terminate;
end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
    Shift: TShiftState; X, Y: Integer);
begin
     Create_Draw_Grid_Modal('Âûáåðèòå êàðòèíêó');
end;

end.


procedure TForm1.MouseWheelUp(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
begin
if krt < krg -1 then begin
krt := krt + 1;
end;
Form1.Edit1.Text:='Ââåðõ';
end;

procedure TForm1.MouseWheelDown(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
begin
If krt > 0 then begin
krt := krt - 1;
end;
Form1.Edit1.Text:='Ââíèç';
end;

Он почемута прибавляет 2 а не 1

2)

Как можно сделаить загрузку всех картинок в Draw grid используя Find first

функции FindFirst,FindNext,FindClose я знаю но незнаю как организовать загрузку картинок в DrawGrid


Сообщение отредактировал Александр5 - Среда, 06 Марта 2013, 19:24
Форум игроделов » Программирование » Delphi/Pascal/Object Pascal » Мои вопросы по обучению на Delphi XE и помощь к созданию игр (Здесь буду задавать вопросы по Delphi.)
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг