Четверг, 18 Апреля 2024, 06:21

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
Форум игроделов » Записи участника » Feraset [736]
Результаты поиска
FerasetДата: Суббота, 27 Октября 2012, 02:02 | Сообщение # 661 | Тема: Набираю команду для разработки интересной онлайн игры
Издание игр
Сейчас нет на сайте
спасибо буду стремится к пониманию самих механизмов игр. Недавно на парах рассматривали такие игровые механизмы как змейка и карточная игра UNO - попробую что нибудь реализовать из этого паралельно с проектом. smile Ждите новостей=)

Добавлено (25.09.2012, 03:26)
---------------------------------------------
Хух наконецто сдвинулся с мёртвой точки, работа с полем наполовину(50%) закончена. выкладываю EXEшник того чего добился, пока учил этот новый для меня язык Delphi
P.S Большое спасибо TimKruzu за помощь с кодом. Мир наверное не видел человека добрее и умнее. А ему всего 17 cool .

Кстати набор продолжает осуществляться... Кому интересно плюсуйте+++

Добавлено (28.09.2012, 18:44)
---------------------------------------------
Новый EXEшник happy

Добавлено (26.10.2012, 22:12)
---------------------------------------------
Всем привет! Меня долго не было но вот я вернулся со свежей версией движка и немного понабравшись опыта. Прошу не судить строго, короче вот новый EXEшник!!!.

Небольшой экскурс и немного советов и предостережений.
Демо полно багов поэтому:
1) Советую размещать блоки в середине сгенерированного поля. Иначе если вы будете пытаться ставить блоки близко к левому и верхнему краю произойдёт смещение по координатам и поставленные над полем блоки будут поставленны в неправельных координатах и вообще cобьётся точка генерации блока.
2) Зайца можно для наглядности включить, но это совсем не обязательно. Достаточно нажать кнопку E(У) и блок бетона сгенерируется на том месте где должен быть заяц.
3) Есть пару багов у левой стороны экрана где можно поставить один бетонный блок на другой. Довольно приятно выглядит, если интересно попытайтесь воссоздать такое событие.
4) Клетки вокруг зайца при его движении мерцают. Поставил двойную буфферизацию в Form create - на всякий случай. не помогает. cry
5) Совсем скоро добавлю:
А) процедуру удаления блоков.
Б) Добавлю возможность выбора добавляемых блоков(по разновидностям).
В) В перспективе - рандомный лес.
6) Ах да совсем забыл заец наскакивает на блоки за счёт Bringtofrontа. Принцип примерно понял, в скором будущем постараюсь исправить + добавлю прозрачность блоков за которыми прячется заяц.
7) Модельки персонажа и блока можно изменить они находятся в папках hero и ground в формате PNG. Будьте осторожны с экспериментами.

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

А воть и скрин=)


Спасибо пользователю TimCruz, за то что научил меня спокойствию, терпимости и вере в цели.



Сообщение отредактировал Feraset - Воскресенье, 28 Октября 2012, 16:06
FerasetДата: Суббота, 27 Октября 2012, 02:01 | Сообщение # 662 | Тема: Экспертная система для помощи начинающему разработчику игр
Издание игр
Сейчас нет на сайте
Quote (TimKruz)
экспертная система;
Интересная идея. Чтобы реализовать дерево нужно попросить специалистов в разных областях
программирования сделать свою ветку не отходя от общих правил построения дерева. М? smile

Добавлено (27.10.2012, 02:01)
---------------------------------------------
Мозгов то в башке не сто=)


Спасибо пользователю TimCruz, за то что научил меня спокойствию, терпимости и вере в цели.

FerasetДата: Суббота, 27 Октября 2012, 01:57 | Сообщение # 663 | Тема: Помогите срочно
Издание игр
Сейчас нет на сайте
Quote (shubniggurath)
не путай человека

Пардон, быстро по тексту пробежался. Не увидел <?php


Спасибо пользователю TimCruz, за то что научил меня спокойствию, терпимости и вере в цели.

FerasetДата: Суббота, 27 Октября 2012, 01:25 | Сообщение # 664 | Тема: Помогите срочно
Издание игр
Сейчас нет на сайте
Quote (Koshimarus34)
$pok = first('SELECT * FROM poke_base WHERE id=%d LIMIT 1',$BID); вот еще есть

Символ $ это обычно что то из jquery. Возможно твоя функция находится или должна находится не в этом скрипте, но определённо она у тебя не определена. Если что могу попробовать разобраться. Кинь исходники в ЛС гляну

Добавлено (27.10.2012, 01:22)
---------------------------------------------

Quote (Koshimarus34)
'SELECT * FROM poke_base WHERE id=%d
А это уже mysql выборка из id-шников я так понимаю.

Добавлено (27.10.2012, 01:25)
---------------------------------------------

Quote (Koshimarus34)
$num_rows = first('SELECT id FROM users where MATCH (login) AGAINST ("%s")',$login);
     if(!$num_rows){

Ещё одна выборка из id-шников юзеров присвоенная jquery значению num_rows(номер строки вроде.) happy


Спасибо пользователю TimCruz, за то что научил меня спокойствию, терпимости и вере в цели.

FerasetДата: Пятница, 26 Октября 2012, 23:51 | Сообщение # 665 | Тема: Срочно нужна помощь.
Издание игр
Сейчас нет на сайте
ЛОВИ Moroz.rar

Фух - муторно, но вроде разобрался. Примерно так:

Code

implementation

{$R *.dfm}
var k:Integer;

procedure TForm1.btn1Click(Sender: TObject);     //Нужно 27 раз использовать2-ку и положить рядом, а затем вбить 1-цу и положить рядом.
begin

Inc(k);
edt3.Text:=IntToStr(k);
if edt1.Text = '1' then
begin
edt1.Text:='3';
end;

if edt1.Text = '2' then
edt1.Text:='4';

if edt1.Text = '2008' then
edt1.text:='2009';
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
   k:=0;
   if edt2.Text='' then
   edt2.Text:='0';
end;

procedure TForm1.btn2Click(Sender: TObject);
var a,b,c:integer;
begin
a:=StrToInt(edt2.text);
b:=StrToInt(edt1.text);
c:=a+b;
edt2.Text:=IntToStr(c);
edt1.text:='';
end;

procedure TForm1.btn3Click(Sender: TObject);
var a:Integer;
begin
   a:=StrToInt(edt2.text);
   edt1.Text:=IntToStr(a);
end;

end.


Нужны коменты? happy


Спасибо пользователю TimCruz, за то что научил меня спокойствию, терпимости и вере в цели.



Сообщение отредактировал Feraset - Пятница, 26 Октября 2012, 23:54
FerasetДата: Воскресенье, 30 Сентября 2012, 23:18 | Сообщение # 666 | Тема: Дума над канвасом
Издание игр
Сейчас нет на сайте
Добавленный код:
Code
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: integer);
var item, item1:tpoint;
     z:integer;
begin
        if Cursor=crMultidrag then
           if (selected.x>-1) and (selected.y>-1) then
           buf.canvas.draw(selected.x*50, selected.y*50, cellcube);
           cellcube.LoadFromFile('1.bmp');
           form1.Canvas.Draw(0,0,buf);
      end;

Code
procedure TForm1.FormCreate(Sender: TObject);
var x,y,z:byte;
  begin
     cellcube:=TBitmap.Create;
     cellcube.Width:=40;
     cellcube.Height:=40;
     cellcube.Transparent:=True;
   end;
end;


При нажатии на координату выскакивает ошибка:


Спасибо пользователю TimCruz, за то что научил меня спокойствию, терпимости и вере в цели.

FerasetДата: Воскресенье, 30 Сентября 2012, 13:34 | Сообщение # 667 | Тема: Массив из картинок В Delphi 7
Издание игр
Сейчас нет на сайте
Где хранится такая база и как она реализуется?
хотя-бы примерную ориентацию подскажи, а я уже попробую в том направении двигаться и посмотрим что выйдет. dry


Спасибо пользователю TimCruz, за то что научил меня спокойствию, терпимости и вере в цели.

FerasetДата: Суббота, 29 Сентября 2012, 22:34 | Сообщение # 668 | Тема: Дума над канвасом
Издание игр
Сейчас нет на сайте
Quote (TimKruz)
Ты что, рассчитываешь сделать изометрическую карту высотой в 31 блок? Если игра 2D, делать больше 3-4 ячеек в высоту бессмысленно, но даже эти будут друг друга перекрывать.

Проблему перекрывания собираюсь решить прозрачностью рядом находящихся блоков. Не в этом сейчас беда.
Quote (TimKruz)
У тебя 5 таймеров на форме?

Да эт всего лишь для кнопок движения персонажа. Так сказать для теста(проба пера.)
Quote (TimKruz)
BMP1:= TBitmap.Create;
try
bmp1.Width:= Image2.Picture.Graphic.Width;
bmp1.Height:= Image2.Picture.Graphic.Height;
bmp1.Canvas.Draw (0, 0, Image2.Picture.Graphic);
BitBtn3.Glyph:= BMP1;
finally;
bmp1.Free;
end;

А что здесь не так? Я всеголишь леплю на кнопки image. Есть какие то другие более рациональные варианты? Да и вообще это так для красоты, делал без особой надобности smile

Что же касается поставленной задачи, у меня получалось её решить с двумя изьянами:
1 - перерисовывалось всё поле canvas.
2 - куб ставился не по координатам а в точке клика мыши

Насчёт №2 думаю впринципе можно применить метод базовой точки, а вот насчёт канваса - даже и не знаю.


Спасибо пользователю TimCruz, за то что научил меня спокойствию, терпимости и вере в цели.



Сообщение отредактировал Feraset - Воскресенье, 30 Сентября 2012, 01:45
FerasetДата: Суббота, 29 Сентября 2012, 21:59 | Сообщение # 669 | Тема: Дума над канвасом
Издание игр
Сейчас нет на сайте
Вопрос стоит такой:
Как изходя из этого кода:
Code
unit Unit1;

interface

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

type
      TForm1 = class(TForm)
        Timer1: TTimer;
        ImageList1: TImageList;
        BitBtn1: TBitBtn;
        BitBtn2: TBitBtn;
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        Button4: TButton;
        Timer2: TTimer;
        Timer3: TTimer;
        Timer4: TTimer;
        Timer5: TTimer;
        ImageList2: TImageList;
        Image1: TImage;
        BitBtn3: TBitBtn;
        Image2: TImage;
        procedure Timer1Timer(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure BitBtn1Click(Sender: TObject);
        procedure BitBtn2Click(Sender: TObject);
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
        procedure Button4Click(Sender: TObject);
        procedure BitBtn3Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
        end;
      // îáúÿâëåíèå íîâîãî òèïà col_row
const
      n=5;
var
       Form1: TForm1;
       map1:array[0..30,0..30,0..30]of byte;
       buf:tbitmap;
implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
var x,y,z:byte;
BMP, BMP1: TBitmap;

begin
BMP:= TBitmap.Create;
try
bmp.Width:= Image1.Picture.Graphic.Width;
bmp.Height:= Image1.Picture.Graphic.Height;
bmp.Canvas.Draw (0, 0, Image1.Picture.Graphic);
BitBtn2.Glyph:= BMP;
finally;
bmp.Free;
end;

BMP1:= TBitmap.Create;
try
bmp1.Width:= Image2.Picture.Graphic.Width;
bmp1.Height:= Image2.Picture.Graphic.Height;
bmp1.Canvas.Draw (0, 0, Image2.Picture.Graphic);
BitBtn3.Glyph:= BMP1;
finally;
bmp1.Free;
end;

       buf.Canvas.Rectangle(-2,-2,buf.Width,buf.Height);
       for x:=0 to 29 do
        for y:=0 to 29 do
          for z:=0 to 29 do
           ImageList1.Draw(buf.canvas,x*37,y*37,map1[x,y,z]);
       form1.Canvas.Draw(0,0,buf);
end;

procedure TForm1.FormCreate(Sender: TObject);
var x,y,z:byte;
begin
       buf:=tbitmap.create;
       buf.Width:=261;
       buf.Height:=261;
       buf.Canvas.Pen.Color:=clBlack;
       buf.Canvas.Brush.Color:=clGray;
       randomize;
       for x:=0 to 29 do
         for y:=0 to 29 do
          for z:=0 to 29 do
           map1[x,y,z]:=random(2);
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: integer);
var item, item1:tpoint;
        z:integer;
begin
       item.x:=x div 37;
       item.y:=y div 37;
        begin
           if Cursor=crDrag then //Åñëè êóðñîð êóáà òîãäà
           for z:=29 downto 0 do
                if map1[item.x,item.Y,z]<>(3) then
                   Break;
                if map1[item.x,item.y,z]=(1)
                     then begin
                          buf.Canvas.Rectangle(0,0,buf.Width,buf.Height); //äåëàåì çåìëþ 2
                          ImageList1.Draw(buf.canvas,x*37,y*37,map1[item.x,item.y,z]);
                          map1[item.x,item.Y,z]:=3;
                          end;
         end;

         begin
           if Cursor=crUpArrow then
              for z:=29 downto 0 do
                if map1[item.x,item.Y,z]<>(3)
                     then Break;
                if map1[item.x,item.y,z]=(0)
                     then begin
                          buf.Canvas.Rectangle(0,0,buf.Width,buf.Height); //äåëàåì çåìëþ 2
                          ImageList1.Draw(buf.canvas,x*37,y*37,map1[item.x,item.y,z]);
                          map1[item.x,item.Y,z]:=3;
                          end;

         end;

caption:='Âûáðàíà êëåòêà ñ êîîðäèíàòàìè ('+inttostr(item.x)+'; '+inttostr(item.y)+'; '+inttostr(z)+'; '')';
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Cursor:=crUpArrow;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
Cursor:=crDrag;
end;

procedure TForm1.BitBtn3Click(Sender: TObject);
begin
Cursor:=crMultiDrag;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Timer2.Enabled:=True;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Timer3.Enabled:=True;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Timer4.Enabled:=True;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
Timer5.Enabled:=True;
end;

end.

... при нажатии клавищи на определённую координату, поверх поля выводить куб.
Примерно так должно выглядеть:

dry

Вот сам Файл с exeшником.


Спасибо пользователю TimCruz, за то что научил меня спокойствию, терпимости и вере в цели.



Сообщение отредактировал Feraset - Суббота, 29 Сентября 2012, 22:00
FerasetДата: Суббота, 29 Сентября 2012, 21:58 | Сообщение # 670 | Тема: Массив из картинок В Delphi 7
Издание игр
Сейчас нет на сайте
Quote (Akyltist)
перенести твою отрисовку как минимум в Form.OnPaint и включить DoubleBuffered

Это как? И вообще куда запихивать DoubleBuffered? Я слышал с ним мороки много и багов?

Добавлено (29.09.2012, 21:58)
---------------------------------------------
Вопрос стоит такой как изходя из этого кода:
Code
unit Unit1;

interface

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

type
    TForm1 = class(TForm)
      Timer1: TTimer;
      ImageList1: TImageList;
      BitBtn1: TBitBtn;
      BitBtn2: TBitBtn;
      Button1: TButton;
      Button2: TButton;
      Button3: TButton;
      Button4: TButton;
      Timer2: TTimer;
      Timer3: TTimer;
      Timer4: TTimer;
      Timer5: TTimer;
      ImageList2: TImageList;
      Image1: TImage;
      BitBtn3: TBitBtn;
      Image2: TImage;
      procedure Timer1Timer(Sender: TObject);
      procedure FormCreate(Sender: TObject);
      procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
        Shift: TShiftState; X, Y: Integer);
      procedure BitBtn1Click(Sender: TObject);
      procedure BitBtn2Click(Sender: TObject);
      procedure Button1Click(Sender: TObject);
      procedure Button2Click(Sender: TObject);
      procedure Button3Click(Sender: TObject);
      procedure Button4Click(Sender: TObject);
      procedure BitBtn3Click(Sender: TObject);
    private
      { Private declarations }
    public
      { Public declarations }
      end;
    // îáúÿâëåíèå íîâîãî òèïà col_row
const
    n=5;
var
     Form1: TForm1;
     map1:array[0..30,0..30,0..30]of byte;
     buf:tbitmap;
implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
var x,y,z:byte;
BMP, BMP1: TBitmap;

begin
BMP:= TBitmap.Create;
try
bmp.Width:= Image1.Picture.Graphic.Width;
bmp.Height:= Image1.Picture.Graphic.Height;
bmp.Canvas.Draw (0, 0, Image1.Picture.Graphic);
BitBtn2.Glyph:= BMP;
finally;
bmp.Free;
end;

BMP1:= TBitmap.Create;
try
bmp1.Width:= Image2.Picture.Graphic.Width;
bmp1.Height:= Image2.Picture.Graphic.Height;
bmp1.Canvas.Draw (0, 0, Image2.Picture.Graphic);
BitBtn3.Glyph:= BMP1;
finally;
bmp1.Free;
end;

     buf.Canvas.Rectangle(-2,-2,buf.Width,buf.Height);
     for x:=0 to 29 do
      for y:=0 to 29 do
        for z:=0 to 29 do
         ImageList1.Draw(buf.canvas,x*37,y*37,map1[x,y,z]);
     form1.Canvas.Draw(0,0,buf);
end;

procedure TForm1.FormCreate(Sender: TObject);
var x,y,z:byte;
begin
     buf:=tbitmap.create;
     buf.Width:=261;
     buf.Height:=261;
     buf.Canvas.Pen.Color:=clBlack;
     buf.Canvas.Brush.Color:=clGray;
     randomize;
     for x:=0 to 29 do
       for y:=0 to 29 do
        for z:=0 to 29 do
         map1[x,y,z]:=random(2);
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: integer);
var item, item1:tpoint;
      z:integer;
begin
     item.x:=x div 37;
     item.y:=y div 37;
      begin
         if Cursor=crDrag then //Åñëè êóðñîð êóáà òîãäà
         for z:=29 downto 0 do
              if map1[item.x,item.Y,z]<>(3) then
                 Break;
              if map1[item.x,item.y,z]=(1)
                   then begin
                        buf.Canvas.Rectangle(0,0,buf.Width,buf.Height); //äåëàåì çåìëþ 2
                        ImageList1.Draw(buf.canvas,x*37,y*37,map1[item.x,item.y,z]);
                        map1[item.x,item.Y,z]:=3;
                        end;
       end;

       begin
         if Cursor=crUpArrow then
            for z:=29 downto 0 do
              if map1[item.x,item.Y,z]<>(3)
                   then Break;
              if map1[item.x,item.y,z]=(0)
                   then begin
                        buf.Canvas.Rectangle(0,0,buf.Width,buf.Height); //äåëàåì çåìëþ 2
                        ImageList1.Draw(buf.canvas,x*37,y*37,map1[item.x,item.y,z]);
                        map1[item.x,item.Y,z]:=3;
                        end;

       end;

caption:='Âûáðàíà êëåòêà ñ êîîðäèíàòàìè ('+inttostr(item.x)+'; '+inttostr(item.y)+'; '+inttostr(z)+'; '')';
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Cursor:=crUpArrow;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
Cursor:=crDrag;
end;

procedure TForm1.BitBtn3Click(Sender: TObject);
begin
Cursor:=crMultiDrag;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Timer2.Enabled:=True;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Timer3.Enabled:=True;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Timer4.Enabled:=True;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
Timer5.Enabled:=True;
end;

end.

... при нажатии клавищи на определённую координату, поверх поля выводить куб.
Примерно так должно выглядеть:

Вот сам Файл с exeшником.


Спасибо пользователю TimCruz, за то что научил меня спокойствию, терпимости и вере в цели.



Сообщение отредактировал Feraset - Суббота, 29 Сентября 2012, 21:58
FerasetДата: Четверг, 27 Сентября 2012, 16:45 | Сообщение # 671 | Тема: Массив из картинок В Delphi 7
Издание игр
Сейчас нет на сайте
сделал вот такой вот редактор поля
Code
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: integer);
var item:tpoint;
begin
//в этом условии нужно чтобы картинка(куб) добавлялась поверх поля по тем же координатам куда кликнул, но не в поле. Пробовал использовать нижний код что ты мне дал но не нашёл в нём ни одной лазейки. Проблема в FormMouseDown(X, Y: integer)
         begin
            if Cursor=crDrag then    
            begin
            "------------------------" // Может попробовать добавить image сверху(image.canvas...)?
            end;
          end;

        item.x:=x div 42;
        item.y:=y div 42;
        caption:='Выбрана клетка с координатами ('+inttostr(item.x)+'; '+inttostr(item.y)+')';
          begin
            if Cursor=crUpArrow then
            if map1[item.x,item.y]=(1) then          
            begin
            buf.Canvas.Rectangle(0,0,buf.Width,buf.Height);      
            ImageList1.Draw(buf.canvas,x*42,y*42,map1[item.x,item.y]);
                map1[item.x,item.y]:=4;
            end
           else  begin      
                 buf.Canvas.Rectangle(0,0,buf.Width,buf.Height);
                 ImageList1.Draw(buf.canvas,x*42,y*42,map1[item.x,item.y]);
                 map1[item.x,item.y]:=1;
                 end;
          end;

end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Cursor:=crUpArrow;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
Cursor:=crDrag;
end;

end.

cry

Добавлено (25.09.2012, 20:01)
---------------------------------------------
Quote (TimKruz)
Естественно, если поле с картой занимает меньше общей площади окна, нужно ввести ограничение по ширине и высоте (например, if x<500 then...).

Впринципе оно и без ограничителя только по полю ставит

Добавлено (27.09.2012, 16:45)
---------------------------------------------
Я попробовал вот так. Но картинка поверх канваса появляется на считанные секунды:

Code
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: integer);
var item:tpoint;
begin
   item.x:=x div 37;
   item.y:=y div 37;
     begin
        if Cursor=crDrag then //Åñëè êóðñîð êóáà òîãäà
              map1[x,y]:=3;
              form1.Canvas.Draw(0,0,buf);
              ImageList2.Draw(buf.canvas,x-50,y-100,map1[x,y]);
      end;  
<_<


Спасибо пользователю TimCruz, за то что научил меня спокойствию, терпимости и вере в цели.



Сообщение отредактировал Feraset - Четверг, 27 Сентября 2012, 16:44
FerasetДата: Понедельник, 24 Сентября 2012, 10:59 | Сообщение # 672 | Тема: Массив из картинок В Delphi 7
Издание игр
Сейчас нет на сайте
happy Спасиб конечн. Хотя я и так нашёл как обойти проблему. Единственное что не пойду как обратится к определённой картинке в канвасе кликом мыши.

Спасибо пользователю TimCruz, за то что научил меня спокойствию, терпимости и вере в цели.

FerasetДата: Суббота, 22 Сентября 2012, 23:07 | Сообщение # 673 | Тема: Массив из картинок В Delphi 7
Издание игр
Сейчас нет на сайте
Сорри моя ошибка - можно просто уменьшить x*64,y*64 и кубы склеются. Единственное что нужно чтобы они не склеивались обрезанными а как бы накладывались друг на друга без обрезания.

Спасибо пользователю TimCruz, за то что научил меня спокойствию, терпимости и вере в цели.

FerasetДата: Суббота, 22 Сентября 2012, 21:39 | Сообщение # 674 | Тема: Массив из картинок В Delphi 7
Издание игр
Сейчас нет на сайте
У нас получился вот такого вида код. Однако этот код
Code
unit Unit1;

interface

uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, ExtCtrls, ImgList;

type
    TForm1 = class(TForm)
      Timer1: TTimer;
      ImageList1: TImageList;
      procedure Timer1Timer(Sender: TObject);
      procedure FormCreate(Sender: TObject);
    private
      { Private declarations }
    public
      { Public declarations }
    end;

var
     Form1: TForm1;
     map:array[0..15,0..15]of byte;
     buf:tbitmap;
implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
var x,y:byte;
begin
     buf.Canvas.Rectangle(0,0,buf.Width,buf.Height);
     for x:=0 to 15 do
       for y:=0 to 15 do
         ImageList1.Draw(buf.canvas,x*64,y*64,map[x,y]);
     form1.Canvas.Draw(0,0,buf);
end;

procedure TForm1.FormCreate(Sender: TObject);
var x,y:byte;
begin
     buf:=tbitmap.create;
     buf.Width:=256;
     buf.Height:=256;
     buf.Canvas.Pen.Color:=clWhite;
     buf.Canvas.Brush.Color:=clWhite;   
     randomize;   
     for x:=0 to 15 do   
       for y:=0 to 15 do
         map[x,y]:=random(2);
end;

end.

Однако замысел такой что блок должен лежать слитно с другим блоком , а они лежат друг от друга на расстоянии. Особенно это видно если использовать x*64,y*64 imagelista.


Спасибо пользователю TimCruz, за то что научил меня спокойствию, терпимости и вере в цели.



Сообщение отредактировал Feraset - Суббота, 22 Сентября 2012, 21:40
FerasetДата: Суббота, 22 Сентября 2012, 20:41 | Сообщение # 675 | Тема: Массив из картинок В Delphi 7
Издание игр
Сейчас нет на сайте
Quote (daun)
приснится ж такое

angry
Чт0 то неясно? П0моему я доходчиво изложил мысль.


Спасибо пользователю TimCruz, за то что научил меня спокойствию, терпимости и вере в цели.



Сообщение отредактировал Feraset - Суббота, 22 Сентября 2012, 20:42
FerasetДата: Суббота, 22 Сентября 2012, 19:39 | Сообщение # 676 | Тема: Массив из картинок В Delphi 7
Издание игр
Сейчас нет на сайте
Задача такая как вывести массив из картинок без применения STRING/DRAWGrida на поле Form1.

С помощью драв грида получилось вот так:

Code
TForm1 = class(TForm)
      DrawGrid1: TDrawGrid;
      ImageList1: TImageList;
      procedure DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
        Rect: TRect; State: TGridDrawState);
    private
      { Private declarations }
    public
      { Public declarations }
    end;

var
    Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
    Rect: TRect; State: TGridDrawState);
var
    X, Y, ImageIndex: Integer;
begin
    ImageIndex := 0;
    X := Rect.Left + ((Rect.Right - Rect.Left - ImageList1.Width) div 2);
    Y := Rect.Top + ((Rect.Bottom - Rect.Top - ImageList1.Height) div 2);
    ImageList1.Draw(DrawGrid1.Canvas, X, Y, ImageIndex, True);
end;

Получившаяся картинка Здесь.

Не будет видна остальная часть картинки, так как она находится только в рамках поля. То бишь изометрия получается неполная.(Смысл ясен делаем поле(землю) из квадратов). Значит "выкопать" нужный участок не получится. Ну и естественно поверх GRIDа нелзя поставить какой либо объект. Если кто знает как этого избежать подскажите пожалуйста, желательно на примере. Заранее благодарю.


Спасибо пользователю TimCruz, за то что научил меня спокойствию, терпимости и вере в цели.



Сообщение отредактировал Feraset - Суббота, 22 Сентября 2012, 19:44
FerasetДата: Четверг, 20 Сентября 2012, 12:36 | Сообщение # 677 | Тема: Максимальное количество обьектов в delphi
Издание игр
Сейчас нет на сайте
Quote (DeusEx-12)
или не знаете элементарных вещей?

Ты то больно умный я вижу.


Спасибо пользователю TimCruz, за то что научил меня спокойствию, терпимости и вере в цели.

FerasetДата: Четверг, 20 Сентября 2012, 12:35 | Сообщение # 678 | Тема: Нужен компонент для Gifa
Издание игр
Сейчас нет на сайте
Значит облом cry

Спасибо пользователю TimCruz, за то что научил меня спокойствию, терпимости и вере в цели.

FerasetДата: Четверг, 20 Сентября 2012, 12:33 | Сообщение # 679 | Тема: Datamodule. Как подключить
Издание игр
Сейчас нет на сайте
Quote (TimKruz)
Подключается он только в коде самой программы, т.е. в Project1.dpr

Тоесть здесь мы ничего не пишем я так понимаю.

Код мы добавляем только в implementation. Спасибо за урок.
Quote (TimKruz)
Учись называть экземпляры компонентов своими именами,

Учту.
Quote (TimKruz)
в дизайнере форм не будут мешаться лишние невизуальные компоненты,

У меня было такое что во время открытия проекта все невизуальные компоненты исчезали. Вот думаю с дата модулем попробовать, может перестанут. Да и мешаться не будут в конце концов.


Спасибо пользователю TimCruz, за то что научил меня спокойствию, терпимости и вере в цели.

FerasetДата: Четверг, 20 Сентября 2012, 12:22 | Сообщение # 680 | Тема: Набираю команду для разработки интересной онлайн игры
Издание игр
Сейчас нет на сайте
smile Я всеголишь беру от них особенности их жанра не больше. Всё остальное моих рук дело. happy

Спасибо пользователю TimCruz, за то что научил меня спокойствию, терпимости и вере в цели.

Форум игроделов » Записи участника » Feraset [736]
Поиск:

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