Пятница, 19 Апреля 2024, 08:45

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

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

Добавлено (11.01.2013, 05:13)
---------------------------------------------
Забыл код вотон только 1 модуль из 10

Код
unit Glaw_Unite;

interface

uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   Dialogs, Menus, ExtDlgs, StdCtrls, Buttons, ExtCtrls,Dir_Folder,pngimage,Mini_Games,
   PlatformDefaultStyleActnCtrls, ActnPopup, ToolWin, ComCtrls,Point_collision;

type
   TForm1 = class(TForm)
     MainMenu1: TMainMenu;
     N1: TMenuItem;
     N2: TMenuItem;
     N3: TMenuItem;
     N4: TMenuItem;
     Gthcjyfb1: TMenuItem;
     OpenPictureDialog1: TOpenPictureDialog;
     Panel1: TPanel;
     Panel2: TPanel;
     Label1: TLabel;
     BitBtn1: TBitBtn;
     BitBtn2: TBitBtn;
     BitBtn3: TBitBtn;
     ScrollBox1: TScrollBox;
     ListBox1: TListBox;
     Img_Map: TImage;
     ComboBox1: TComboBox;
     ComboBox2: TComboBox;
     CheckBox1: TCheckBox;
     Image1: TImage;
     N5: TMenuItem;
     StatusBar1: TStatusBar;
     Timer1: TTimer;
     N6: TMenuItem;
     procedure N2Click(Sender: TObject);
     procedure N4Click(Sender: TObject);
     procedure BitBtn1Click(Sender: TObject);
     procedure CheckBox1Click(Sender: TObject);
     procedure N5Click(Sender: TObject);
     procedure FormCreate(Sender: TObject);
     procedure Timer1Timer(Sender: TObject);
     procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
     procedure ListBox1DrawItem(Control: TWinControl; Index: Integer;
       Rect: TRect; State: TOwnerDrawState);
     procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
       Y: Integer);
   private
     { Private declarations }
   public
     { Public declarations }
   end;
list = ^spisok;

   spisok = record
     fil: string;
     nextsp: list;
   end;
const
   Cur_X:integer=0;
   Cur_Y:integer=0;
var
   Form1: TForm1;
   fajlo: list;
   ProgDir:string;
   Cursor_X:integer;
   Cursor_Y:integer;
   text_cursor:string;
   Text_True_and_lie:string;
   activ_mouse_move:boolean;
implementation
{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
var
   i_png: Integer;
   fs: TSearchRec;
   i:integer;
begin
    if openpicturedialog1.Execute then begin
    img_map.Picture.LoadFromFile(openpicturedialog1.FileName);
    img_map.Height:=strtoint(combobox1.Text);
    img_map.Width:=strtoint(combobox2.Text);
    img_map.Transparent:=CheckBox1.Checked;
    end;
   i := 0;
   if FindFirst(progdir + 'картинки для создания мира\' + '*.png*',faAnyFile - faDirectory - faVolumeID, fs) = 0 then
     repeat
       inc(i);

       if (fajlo = nil) then
       begin
         new(fajlo);
       end
       else
       begin
         new(fajlo^.nextsp);
         fajlo := fajlo^.nextsp;
       end;
       fajlo^.fil := fs.Name;
       fajlo^.nextsp := nil;
       ListBox1.items.Add(fs.Name);
     until FindNext(fs) <> 0;
   findclose(fs);
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if checkbox1.Checked=true then begin checkbox1.Caption:='Карта прозрачная'end else begin checkbox1.Caption:='Карта не прозрачная';end;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
   with img_map do begin
     Left:=Cur_X;
     Top:=Cur_Y;
     height:=cur_x;
     width:=cur_y;
   end;
   with image1 do begin
     Left:=Cur_X;
     Top:=Cur_Y;
     height:=cur_x;
     width:=cur_y;
   end;
   activ_mouse_move:=false;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
   Y: Integer);
begin
   if (True_and_lie(X,Y,form1.Left,form1.Top,form1.Height,form1.Width) = true) then begin Text_True_and_lie:='Курсор находиться на форме'; end;
   if (True_and_lie(X,Y,form1.Left,form1.Top,form1.Height,form1.Width) = false) then begin Text_True_and_lie:='Курсор за пределами формы'; end;
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
   Y: Integer);
   var
   x_y:tpoint;
begin
   if (x >= Scrollbox1.Left + image1.Left)and(y >= scrollbox1.top + scrollbox1.Top) then begin
     image1.Left:=x + 25;
     image1.Top:=y + 25;
   end;

end;

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
   Rect: TRect; State: TOwnerDrawState);
begin
   With ListBox1 do
begin
    If odSelected in State then
      Canvas.Brush.Color:=clred { твой цвет }
    else
      Canvas.Brush.Color:=clWindow;
    Canvas.FillRect(Rect);
    Canvas.TextOut(Rect.Left+2,Rect.Top,Items[Index]);
end
end;

procedure TForm1.N2Click(Sender: TObject);
begin
   Application.Terminate;
end;

procedure TForm1.N4Click(Sender: TObject);
begin
   if panel1.Visible = true then panel1.Visible:=false else Panel1.Visible:=true;

end;

procedure TForm1.N5Click(Sender: TObject);
begin
   New_image_games;
   form2.Timer1.Interval:=1;
   form2.Timer1.Enabled:=true;
   form2.Panel1.Align:=alclient;
   form2.Show;
   form1.Hide;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
   Curs_X_Y:Tpoint;
   Rtext:string;
begin
   getCursorPos(Curs_X_Y);
   text_cursor:=inttostr(Curs_X_Y.X) + ' , Y =  ' + inttostr(Curs_X_Y.Y);
   if (True_and_lie(curs_x_y.X, curs_x_y.Y, scrollbox1.Left, scrollbox1.Top, scrollbox1.Width, scrollbox1.Height) = true) and (panel1.Visible = true) then begin
     activ_mouse_move:=true;
     Rtext:='находиться';
   end else begin
     activ_mouse_move:=false;
     Rtext:='не находиться';
   end;
   StatusBar1.Panels.Items[0].Text := 'Координаты курсора: X = ' + text_cursor + '! ' + Text_True_and_lie + '! Размер карты: Высота = ' + inttostr(img_map.Height) + ' , Ширина = ' + inttostr(img_map.Width) + '! Мышка ' + Rtext + ' на панели';
   end;

end.
Jlovenpk1Дата: Пятница, 11 Января 2013, 23:10 | Сообщение # 2
участник
Сейчас нет на сайте
Delphi?)
Игры?)
Охх, лучше забудь Делфи и Игры)
Я в смысле - В Делфи писать игры, это просто садизм.


DjanStudio

Сообщение отредактировал Jlovenpk1 - Пятница, 11 Января 2013, 23:10
karuyДата: Пятница, 11 Января 2013, 23:41 | Сообщение # 3
заслуженный участник
Сейчас нет на сайте
Цитата (Александр5)
могу использовать игровой движок, но какой не знаю, интересуюсь только 2D графикой

ZenGL советую.
daunДата: Суббота, 12 Января 2013, 00:38 | Сообщение # 4
постоянный участник
Сейчас нет на сайте
Много мусора.
Зачем читать где мышка, когда так видно?
Зачем в редакторе таймер? smile

Цитата (Александр5)
if checkbox1.Checked=true then begin

if checkbox1.Checked then begin
if not checkbox1.Checked then begin

Код


const
      max=50;
//....
type
      TMapa=record
            img:byte;
            zona:byte;
            prohodimost:boolean;
      end;
      TData=record
            sila:integer;
            jizn:word;
            skorost:byte;
      end;
      Tpovelitel=record
            tip:TData;
            zombi:array[1..max]of TData;
      end;
      TIgra=record
            povelitel:array[1..5]of Tpovelitel;
            gg:TData;
            mapa:array[1..100,1..100]of TMapa;
      end;
//....
var g:TIgra;
//....
     g.povelitel[2].zombi[5].sila:=100;
     g.povelitel[3]:=g.povelitel[1];



Сообщение отредактировал daun - Суббота, 12 Января 2013, 01:17
Александр5Дата: Суббота, 12 Января 2013, 09:43 | Сообщение # 5
частый гость
Сейчас нет на сайте
Цитата ( daun, )
Зачем в редакторе таймер?

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

Добавлено (12.01.2013, 09:43)
---------------------------------------------

Цитата ( daun )
Зачем читать где мышка, когда так видно?

Ну мышка где находятся вино но координаты ее лучше читать програмно говорю хотелд сделать движение имаге по скролу чтобы потом отрисовывать то что в имаге на карту которая находжиться на скроле карта тоже обьект Image есть другой путь но немогу додуматься может и смогу если скажете о спрайтах OpenGl так как Canvas не поддерживает Png
daunДата: Суббота, 12 Января 2013, 11:01 | Сообщение # 6
постоянный участник
Сейчас нет на сайте
sad Тута как ба все понятно не совсем поставленная задача экстрасенсав задача ждем
Александр5Дата: Суббота, 12 Января 2013, 15:41 | Сообщение # 7
частый гость
Сейчас нет на сайте
daun,Может скажешь как сделать редактор карт чтобы составлялся мир картинки есть для этого есть вообще 15 смогу весь проект скинуть но будет работать только на рад студио на 5 и 7 проект не будет работать но сам ехе будет есть кое какие недоработки в этом коде потом исправлю
daunДата: Суббота, 12 Января 2013, 16:30 | Сообщение # 8
постоянный участник
Сейчас нет на сайте
Гугл переводчик отмазался, попробую сам перевести:
Цитата (Александр5)
Может скажешь как сделать редактор карт чтобы составлялся мир

Чо за мир та? Статический, анимированный, параллакс, сверху, с низу, с подвижной камерой или вообще текст с картинками...

Цитата (Александр5)
картинки есть для этого есть вообще 15

штук, фиолетово, не критично
У меня 7 и еще 2
Дальше вроде понятно.
А в общем не очень.
Александр5Дата: Суббота, 12 Января 2013, 17:50 | Сообщение # 9
частый гость
Сейчас нет на сайте
Цитата
Delphi?)
Игры?)
Охх, лучше забудь Делфи и Игры)
Я в смысле - В Делфи писать игры, это просто садизм.

Чего. Кром написал игру, которую можно полностью менять и добавлять свои кампании, множество редакторов и все это на Delphi 7 при том Delphi и c++ отличаются только кодом и что C++ сложнее, чем Delphi. Честно говоря, до этого работал на Visual basic net, но так как я услышал, что он не язык, а интерпретатор и сложные игры на нем не напишешь, то я решил перейти к Delphi, оказалась Delphi сложнее намного сложнее, чем Visual basic net, но я не отступаю не в этом случае. Я желаю обучиться программированию самостоятельно не для профессии, а просто для удовольствия.

Добавлено (12.01.2013, 16:57)
---------------------------------------------
daun, Обычную карту для игры, вид сверху неполную карту это только пока что начало редактора рисования мира тайлами их размер 50 на 50 пикселей редактор объектов, такие как здания и двери потом сделаю игра стратегия войнушка но не строительство. Раньше всегда думал что строительство сделать легко сейчас понял что это сложно но дело не в этом строительство я не буду делать потому-что оно не нужно.
Цитата (daun, )
штук, фиолетово, не критично


Нет 15 числа я скину проект байтов нет пока.

вот собственно картинка 1 из 17

Добавлено (12.01.2013, 17:50)
---------------------------------------------
karuy, А на нем можно будет стратегии разрабатывать

Сообщение отредактировал Александр5 - Суббота, 12 Января 2013, 17:30
daunДата: Суббота, 12 Января 2013, 20:39 | Сообщение # 10
постоянный участник
Сейчас нет на сайте
Стратегия жанр сложный для обучения, у профи пупки развязываются.

1. Создай формат файла данных.

пишешь var g:TStrateg; (или свое). компель выдаст ошибку "тип TStrateg не существует".
создаешь:
type TStrateg=record end; ошибка исчезнет, но тип пустой, бесполезный.
заполняешь:
Код
type
     TStrateg=record
           karta:array[1..100,1..100]of byte;   // карта игры с номером тайла
           personaj:array[1..50]of string[25];  // имена персонажей
     end;  

типа этого, но мало данных:

персонажи имеют не только имена, но и кучу данных, нужно расширить массив personaj
переписываем:
personaj:array[1..50]of TPers; // компель выдаст ошибку "тип TPers не существует".
создаешь:
Код

type
     TPers=record
          name:string[10];   //Volodorn
          jizn:word;         //Жизни 1000
          oruj:boolean;      //оружие доступно
          patron:integer;    //патроны
          ...
     end;
     TStrateg=record
           karta:array[1..100,1..100]of byte;   //
           personaj:array[1..50]of TPers;  //
     end;      

Заполнил структуру, чем угодно, сохраняешь в файл:
Код

    var fil:file of TStrateg;
    //....................
    assignfile(fil,extractfilepath(application.ExeName)+'papka\filename');
    {$i-} reset(fil); {$i+}
    read(fil,g);
    closefile(fil);

открываешь:
Код

    assignfile(fil,extractfilepath(application.ExeName)+'papka\filename');
    rewrite(fil);
    write(fil,g);
    closefile(fil);

редактируешь или используешь в игре.
Александр5Дата: Суббота, 12 Января 2013, 23:24 | Сообщение # 11
частый гость
Сейчас нет на сайте
daun, Спасибо кокрас редактор можно будет сделать но вот одна проблемка мне сейчас нужна редактор карт сделать картинку видел вот из таких 17 нужно мир составлять если делать имаге передвигать или спрайт то нужно передвижение его на 50 пикселей делать слушай можешь мне рисовальныые и спрайтовские функции Opengl расказать

karta:array[1..100,1..100]of byte; // карта игры с номером тайла
personaj:array[1..50]of string[25]; // имена персонажей

Непонял а что означает от 1 до 100 максимальный размер не 100 а 2700 кажется пикселей

и TPers=record тоже надо записывать но лучше это все в 1 файл данных запихнуть так как у меня персонаж не 1 а для бета тестации 7 потом буду делать еще


Сообщение отредактировал Александр5 - Суббота, 12 Января 2013, 23:24
daunДата: Воскресенье, 13 Января 2013, 00:06 | Сообщение # 12
постоянный участник
Сейчас нет на сайте
Цитата (Александр5)
можешь мне рисовальныые и спрайтовские функции Opengl расказать

Не все так просто. OpenGL это 3D, под 2D скорость маленькая, люди на нем годами 2D движки лепят, проще взять готовый.
ZenGL скоростной, но в каком состоянии сейчас, не знаю.
GLEngine2D средненький, кода не очень много, можешь полазить.

Цитата (Александр5)
Непонял а что означает от 1 до 100 максимальный размер не 100 а 2700 кажется пикселей

Это сетка 100x100 тайлов, со смещением, у тебя, 50 пикселей.

Цитата (Александр5)
TPers=record тоже надо записывать но лучше это все в 1 файл данных запихнуть так как у меня персонаж не 1 а для бета тестации 7 потом буду делать еще

personaj:array[1..50]of TPers; - их тут уже 50 чел.
Александр5Дата: Воскресенье, 13 Января 2013, 01:14 | Сообщение # 13
частый гость
Сейчас нет на сайте
Да не нужно мне 50 мне с редактором карт рисование мира нужно разобраться

Добавлено (13.01.2013, 01:14)
---------------------------------------------

Цитата ( daun, )
Не все так просто. OpenGL это 3D, под 2D скорость маленькая, люди на нем годами 2D движки лепят, проще взять готовый.
ZenGL скоростной, но в каком состоянии сейчас, не знаю.
GLEngine2D средненький, кода не очень много, можешь полазить.


Ну можно только установятся ли они под рад студио v 8.0 xe3 и можно ли на нем написать такую игру где можно будет создавать свои кампании хотя че я говорю конечноможно веть за это отвечает не игровой движок но без движка игра не будет работать дай ссылку на ZenGL но врядли он на раде будет работать а GLEngine2D пробывал но я только на половину разобрался а GLScene так координаты не могу пнять и при том он скорее для 3d чем для 2D.
firedayДата: Понедельник, 14 Января 2013, 00:05 | Сообщение # 14
частый гость
Сейчас нет на сайте
Скажу сразу - все не читал.
Я так понял автору нужен мозаичный редактор карт 2д.
Я надеюсь ты спрайтами пользуешься?
Допустим у тебя есть пикчер бокс, в него и будем рисовать.
Создаем карту например 10*10, того массив из 100 спрайтов.
А в пикчер бокс видно только 5*5, по этому нужна возможность таскания.
Создаем главный спрайт, который будем рисовать. Рисовать 1 спрайт быстрее чем кучу мелких, т.к. это графич. обновление изображения - требуется больше времени.
По этому сначала рисуем наши маленькие спрайты в глв. спрайт, потом уже рисуем его.
при маус давн на карте включаеш таймер, если маус ап срабатывает через Н милисек - это клик, если нет, то клика не делаем. Вот так можно заполнять карту. Допустим ты выбрал изображение, кликнул по нужному спрайту - заполнил ячейку.
при маус давн "map_move"=true, при маус ап "map_move"=false. при маус мув если "map_move"=true, то дигаешь мапу, а именно прорисовываешь главный спрайт с нужными тебе изменениями left, top, определяя разницу в изменении координат мыши. То есть, при маус давн запоминаешь начальное положение глав. спрайта mdX=x,mdy=y, mdL=left, mdT=top
Потом рисуешь его с изменениями. left=mdL+(x-mdX), top=mdT+(y-mdy)


Сообщение отредактировал fireday - Понедельник, 14 Января 2013, 00:14
МаркерДата: Понедельник, 14 Января 2013, 00:36 | Сообщение # 15
Я таки выше этого
Сейчас нет на сайте
Цитата (Jlovenpk1)
Delphi?)
Игры?)
Охх, лучше забудь Делфи и Игры)
Я в смысле - В Делфи писать игры, это просто садизм.

Авторитетное мнение, посоны.



Я не понял смысл твоего поста, поэтому он автоматически может считаться оффтопом.
Андрей, 14 лет
Если ты ничего не понимаешь в игрострое, то тебе нечего делать на курсах программистов.
Андрей, 14 лет
Александр5Дата: Понедельник, 14 Января 2013, 20:41 | Сообщение # 16
частый гость
Сейчас нет на сайте
fireday, 1 Picturebox в Delphi нет. 2 Я так понял ты хочешьчтобы я сначала нарисовал целую картинки тайл где будут эти картинки потом их програмно вырезал и програмно поворачивал но для меня легче сделать множество картинок их загрузку и рисовку но разбираться с графикой не могу может кто ссылку даст на ZenGl

Добавлено (14.01.2013, 12:36)
---------------------------------------------
ZenGL скачал но установить не могу и учебники мне к ниму бы надо надо сделать редактор карт 1 часть редактора это сборка карты из мазайки желательно сохранять карту в своем формате чтобы нельзя было открыть 2 часть редактор объектов но это все будет называться редактор карт ну и наконец 3 часть редактор миссий он тоже будет находиться в игре но будет на другой панели вот собственно я обещал вам проект показать пароль на файл 3000 Скачать проект

Добавлено (14.01.2013, 20:41)
---------------------------------------------
daun, вот тут возникет ошибка

Tname1=record
Name1:string;
Vamili:string;
Otzestwo:string;
televone:string[11];
robote:string;
info:string;
end;
Tnames1=record
name2:array[0..10000] of Tname1;
end;
var
Form2: TForm2;
Activ_VodDannjih:boolean;
records1:integer;
IniFile: TIniFile;
path:string;
i:integer;
names1:tnames1;
fil:file of tnames1;
в fil:file of tnames1; ошибка

Сообщение отредактировал Александр5 - Понедельник, 14 Января 2013, 12:38
daunДата: Понедельник, 14 Января 2013, 21:57 | Сообщение # 17
постоянный участник
Сейчас нет на сайте
String должен иметь точную размерность, не больше 255 Otzestwo:string[200];
Александр5Дата: Воскресенье, 03 Февраля 2013, 23:25 | Сообщение # 18
частый гость
Сейчас нет на сайте
а что может иметь больше 255

Добавлено (16.01.2013, 23:59)
---------------------------------------------
Скажите о формате Rxx в Opengl и естли он в игровых движках и как игровой движок ZenGl установить на Delphi

Добавлено (21.01.2013, 12:14)
---------------------------------------------
Ну ктонибудь ответит

Добавлено (03.02.2013, 23:25)
---------------------------------------------
Скажите пожалуйста можно ли в рекорд записывать картинку или лучше как создать файл данных который бы смог содержать данные такие как integer, string, byte, tbitmap, tpngimage и т.д, и как сделать запись, и загрузку этих файлов.

2 вопрос дайте ссылку на 2d игровой движок ZenGl или какойнибудь другой для создания игры тип вид сверху, стратегия.

TimKruzДата: Понедельник, 04 Февраля 2013, 17:30 | Сообщение # 19
старожил
Сейчас нет на сайте
//
Цитата (Александр5)
дайте ссылку на 2d игровой движок ZenGl

Разве так сложно было в любом поисковике ввести "ZenGL" и получить ссылку на официальный сайт? Или воспользоваться поиском на gcup и получить ссылку на эту страницу.
Цитата (Александр5)
а что может иметь больше 255

Вместо строк можно использовать массив символов, массивы по размерам ограничены вроде бы только оперативной памятью.
Но вообще-то, строка может содержать больше 255 символов, просто остальные (начиная с 256) как бы не учитываются, хотя с ними можно работать. В любом случае, простая строка с фиксированной длиной не может быть больше 255 символов. Но кроме простой (string) строки в Delphi есть ещё другие типы строк, точно не знаю (не интересовался никогда), но, возможно, есть более длинные типы... wacko
Цитата (Александр5)
можно ли в рекорд записывать картинку

Используешь TBitMap или ему подобный.
Цитата (Александр5)
лучше как создать файл данных который бы смог содержать данные такие как integer, string, byte, tbitmap, tpngimage и т.д, и как сделать запись, и загрузку этих файлов.

Соответствующая запись делается легко, но если у неё не будет фиксированного размера, то стандартными методами записывать в файл её не получится, но это можно делать вручную. Т.е. с фиксированной по размеру записью можно сделать так:
Код
type
   tsomerecord=record
     text:string[20]; //строка фиксированной длины; всегда занимает 20 байт
   end;
...
var
   somefile:file of tsomerecord; //типизированный файл записей
   somerecord:tsomerecord;
...
   read(somefile,somerecord);
   write(somefile,somerecord);

Но с записью, в которой есть, например, s:string, такой трюк не пройдёт, и придётся писать чтение/запись вручную. Как-то так:
Код
type
   tsomerecord=record
     text:string; //строка неопределённой длины; может иметь разную длину
     number:word;
   end;
...
var
   somefile:file; //нетипизированный файл; в нём можно использовать только blockread/blockwrite
   somerecord:tsomerecord;
   buf:byte;
...
//Чтение:
   reset(somefile,1); //1 означает, что за один раз считывается/записывается 1 байт
   blockread(somefile,buf,1); //считываем один байт - это у нас будет длина строки
   setlength(somerecord.text,buf); //не уверен, но вроде бы строке сначала нужно длину задать
   blockread(somefile,somerecord.text[1],buf); //считываем buf блоков по байту в строку text
   blockread(somefile,somerecord.number,2); //считываем два блока по байту в переменную
   //number типа word, т.к. тип word занимает 2 байта
...
//Запись:
   rewrite(somefile,1);
   buf:=length(somerecord.text);
   blockwrite(somefile,buf,1); //записываем длину строки - один байт
   blockwrite(somefile,somerecord.text[1],buf); //записываем buf байт из строки
   blockwrite(somefile,somerecord.number,2); //записываем число number из 2 байт

Не могу гарантировать полную работоспособность кода (проверять лень), но направление размышлений я тебе задал. smile
С tbitmap и т.п. будет сложнее, но можно использовать встроенную функцию класса - SaveToFile, а потом просто копировать полученный файл в твой бинарный файл с записями.
Цитата (Александр5)
как игровой движок ZenGl установить на Delphi

Там, наверняка, набор библиотек, которые подключаются как простые модули или через заголовочные модули, если, конечно, ты всё под Windows для Windows делаешь. В любом случае - читай документацию с официального сайта.


Александр5Дата: Вторник, 05 Февраля 2013, 03:57 | Сообщение # 20
частый гость
Сейчас нет на сайте
TimKruz, Спасибо тебе но мне нужен файл бинарный его создания и загрузка я делаю редактор и поэтому все данные редактора карт в том числе и картинки персонажи которые в свою очерядь тоже будут бинарными файле должны будут храниться в бинарном файле карты сначала хочу с мозайкой в редакторе карт разобраться но все равно все будет храниться в одном файле
1 карта = 1 файл
несколько карт= 1 файл db
Форум игроделов » Программирование » Delphi/Pascal/Object Pascal » Мои вопросы по обучению на Delphi XE и помощь к созданию игр (Здесь буду задавать вопросы по Delphi.)
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Поиск:

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