Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.028 c
4-1083936626
shell_rom
2004-05-07 17:30
2004.06.13
Apollo


1-1085590447
Step[B.M.]
2004-05-26 20:54
2004.06.13
Объединение нескольких документов Microsoft Word в один


1-1085924122
z3f
2004-05-30 17:35
2004.06.13
Как найти символ табуляции в строке?


4-1084026736
SergeyM
2004-05-08 18:32
2004.06.13
GetDriveType


1-1085848740
anonimus
2004-05-29 20:39
2004.06.13
Узнать код по исходной и шифрованной строке





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский