Текущий архив: 2004.06.13;
Скачать: CL | DM;
Внизуровни Найти похожие ветки
← →
Bortel © (2004-02-10 13:56) [0]Мастера помогите как мне новый уровень игры написанной на DelphiX засунуть в файл и потом его подгружать когда надо. И с каким расширением должен быть этот файл. В файл надо засунуть весь интерфейс и поведение ботов.
← →
Darthman © (2004-02-10 15:02) [1]blockread();
blockwrite();
или
Stream.Read
Stream.Write
или
Write
Read
В цикле пиши все как надо, потом в том же цикле читай, расширение - какое больше нравится.
← →
pavel_k (2004-02-10 15:02) [2]>Мастера помогите как мне новый уровень игры написанной на DelphiX засунуть в файл и потом его подгружать когда надо.
Зависит от реализации.
И с каким расширением должен быть этот файл.
С любым. .map, .karta, .lnd, .uroven можешь придумать еще :) .
игры написанной на DelphiX
Обычно, DelphiX и т.п. используется для вывода графики, а как ты хранишь уровень - это твое дело. Все, что надо - пишешь в файл, потом - загружаешь.
← →
Renegade_ (2004-02-10 16:24) [3]
#include <stdio.h>
#include <windows.h>
typedef struct _map
{
char name[30];
UINT data[100][100];
}MAP;
typedef struct object
{
int x,y;
unsigned int type;//WALL||DOOR||SOMESHIT
PVOID graph;
}OBJECT,*POBJECT;
struct level
{
MAP map;
OBJECT obj[1000000000000000000];
}
MAP LoadMap(char *name)//<=name doznt mean
{
MAP m;
FILE *fp;
if((fp=fopen(name,"rb"))!=NULL)
{
fread(&m,sizeof(MAP),1,fp);
fclose(map);
}
else
{
MessageBox(NULL,"Cannot load map!","RulzGame3000",MB_ICONERROR)l
}
}
← →
Lucifer (rh ZAROLF) (2004-02-10 16:35) [4]> Bortel © (10.02.04 13:56)
> Мастера помогите как мне новый уровень игры написанной на
> DelphiX засунуть в файл и потом его подгружать когда надо.
> И с каким расширением должен быть этот файл. В файл надо
> засунуть весь интерфейс и поведение ботов.
-----------------------------------------------------------------
А может тебе хранить разновидности ботов(с их поведениями)в классах, а размещать их на карте в цифровом формате хоть .txt, вот пример:
//level_1
const Map:array[0..1260,0..20]of integer=
((1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2),
(2,7,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2),
(2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2),
(2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2),
(2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2),
(2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2),
(2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2),
(2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2),
....
//где 1 - это например игрок1
//где 7 - это например бот
Player:=TPlayer.Create(DXSpriteEngine.Engine);
with TPlayer(Player)do
begin
if Map[j,i]=1then Image:=ImageList.Items.Find("Игрок1");
Enemy1:=TEnemy1.Create(DXSpriteEngine.Engine);
with TEnemy1(Enemy1)do
begin
if Map[j,i]=7then Image:=ImageList.Items.Find("Враг1");
← →
Ed (2004-02-11 22:47) [5]Можно сделать все это через редактор сцен,где:1)Предварительно грузишь картинки (можно анимационный ряд) в структуру DXImageList
2)Создаешь визуальные объект (можно использовать класс типа TDXPaint) по щелчку мыши,при этом грузится образ из предварительно выбранного DXImage.Items[I] и запоминаются коодинаты объекта на сцене и ссылка на него в динамической структуре типа TList и одновременно заполняются другие поля
3)Корректируем параметры объектов: перемещаем объекты в нужное положение на сцене,задаем параметры смещения dx,dy ,свойство Visible,свойство Animation,имя объекта,флаг движения и т.д.
4)Выгружаем в потоковые файлы типа TStream по кнопке "Save",соответствующие структуры,содержащие заголовок-счетчик загружаемых структур,структуры содержащие параметры спрайтов,структуры-заголовки содержащие параметры Imageобъектов,сами DIB-объекты.Создаются три Stream-файла,которые в основной программе подгружаются в процедуре типа "LoadScene".
Кусок кода из редактора сцен,выгружающий сцену в Stream-файлы.
procedure TMainForm.SpeedButton10Click(Sender: TObject);
const N=100;
var NameScene,FileName1,FileName2,FileName3:String[32];
var I:Integer;
var DXDIB:TDIB;
var Spr:array[0..N] of TPointSprite;
var Stream1,Stream2,Stream3:TStream;
type TPointSprHeader= record
Name:String[32];
Count:Integer;
end;
var SprHeader:TPointSprHeader;
type TImageSpr=record
Name:String[32];
PatternHeight,PatternWidth,SkipHeight,SkipWidth:Integer;
Transparent:Boolean;
TransparentColor:TColor;
end;
var ImageSpr:TImageSpr;
type TImageSprHeader=record
Name:String[32];
Count:Integer;
end;
var ImageSprHeader:TImageSprHeader;
Function SetPointSprite(S:TSpriteList):TPointSprite;
var P:TPointSprite;
begin
P.Name:=TDXPaint(S.Items[I]).Name;
P.X:=TDXPaint(S.Items[I]).Left;
P.Y:=TDXPaint(S.Items[I]).Top;
P.DX:=TDXPaint(S.Items[I]).DX;
P.DY:=TDXPaint(S.Items[I]).DY;
P.tag:=TDXPaint(S.Items[I]).tag;
P.AnimLooped:=TDXPaint(S.Items[I]).AnimLooped;
P.Visible:=TDXPaint(S.Items[I]).Visible;
Result:=P;
end;
Function SetImageSpr(S:TDXImageList):TImageSpr;
begin
with Result do
begin
Name:=S.Items[I].Name;
PatternHeight:=S.Items[I].PatternHeight;
PatternWidth:=S.Items[I].PatternWidth;
SkipHeight:=S.Items[I].SkipHeight;
SkipWidth:=S.Items[I].SkipWidth;
Transparent:=S.Items[I].Transparent;
TransparentColor:=S.Items[I].TransparentColor;
end;
end;
begin
NameScene:=Edit1.Text;
FileName1:=NameScene + "HImg.Stm";
FileName2:=NameScene + "Img.Stm";
FileName3:=NameScene + "HSpr.Stm";
DXDIB:=TDIB.Create;
Stream1:=TFileStream.Create(FileName1,fmCreate);
Stream2:=TFileStream.Create(FileName2,fmCreate);
Stream3:=TFileStream.Create(FileName3,fmCreate);
with ImageSprHeader do
begin
Name:=NameScene;
Count:=DXImageList1.Items.Count;
end;
try
Stream1.WriteBuffer(ImageSprHeader,Sizeof(TImageSprHeader));
for I:=0 to (DXImageList1.Items.Count-1) do
begin
ImageSpr:=SetImageSpr(DXImageList1);
Stream1.WriteBuffer(ImageSpr,SizeOf(TImageSpr));
DXDIB.Assign(DXImageList1.Items[I].Picture);
DXDIB.SaveToStream(Stream2);
end;
finally DXDIB.Free;DXImageList1.Free;Stream1.Free;Stream2.Free;
end;
with SprHeader do
begin
Name:=NameScene;
Count:=SprCount;
end;
try
begin
Stream3.WriteBuffer(SprHeader,SizeOf(TImageSprHeader));
for I:=0 to (SprCount-1) do
begin
Spr[I]:=SetPointSprite(SpriteList);
Stream3.WriteBuffer(Spr[I],SizeOf(TPointSprite));
end ;
end;
finally
Stream3.Free;
end;
end;
Страницы: 1 вся ветка
Текущий архив: 2004.06.13;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.036 c