Результаты поиска
| |
Feraset | Дата: Суббота, 27 Октября 2012, 02:02 | Сообщение # 661 | Тема: Набираю команду для разработки интересной онлайн игры |
Издание игр
Сейчас нет на сайте
| спасибо буду стремится к пониманию самих механизмов игр. Недавно на парах рассматривали такие игровые механизмы как змейка и карточная игра UNO - попробую что нибудь реализовать из этого паралельно с проектом. Ждите новостей=)
Добавлено (25.09.2012, 03:26) --------------------------------------------- Хух наконецто сдвинулся с мёртвой точки, работа с полем наполовину(50%) закончена. выкладываю EXEшник того чего добился, пока учил этот новый для меня язык Delphi P.S Большое спасибо TimKruzu за помощь с кодом. Мир наверное не видел человека добрее и умнее. А ему всего 17 .
Кстати набор продолжает осуществляться... Кому интересно плюсуйте+++
Добавлено (28.09.2012, 18:44) --------------------------------------------- Новый EXEшник
Добавлено (26.10.2012, 22:12) --------------------------------------------- Всем привет! Меня долго не было но вот я вернулся со свежей версией движка и немного понабравшись опыта. Прошу не судить строго, короче вот новый EXEшник!!!.
Небольшой экскурс и немного советов и предостережений. Демо полно багов поэтому: 1) Советую размещать блоки в середине сгенерированного поля. Иначе если вы будете пытаться ставить блоки близко к левому и верхнему краю произойдёт смещение по координатам и поставленные над полем блоки будут поставленны в неправельных координатах и вообще cобьётся точка генерации блока. 2) Зайца можно для наглядности включить, но это совсем не обязательно. Достаточно нажать кнопку E(У) и блок бетона сгенерируется на том месте где должен быть заяц. 3) Есть пару багов у левой стороны экрана где можно поставить один бетонный блок на другой. Довольно приятно выглядит, если интересно попытайтесь воссоздать такое событие. 4) Клетки вокруг зайца при его движении мерцают. Поставил двойную буфферизацию в Form create - на всякий случай. не помогает. 5) Совсем скоро добавлю: А) процедуру удаления блоков. Б) Добавлю возможность выбора добавляемых блоков(по разновидностям). В) В перспективе - рандомный лес. 6) Ах да совсем забыл заец наскакивает на блоки за счёт Bringtofrontа. Принцип примерно понял, в скором будущем постараюсь исправить + добавлю прозрачность блоков за которыми прячется заяц. 7) Модельки персонажа и блока можно изменить они находятся в папках hero и ground в формате PNG. Будьте осторожны с экспериментами.
На этом на сегодня всё. Проект не умер. Ждите последних новостей, если есть вопросы выслушаю здесь. А воть и скрин=)
Спасибо пользователю TimCruz, за то что научил меня спокойствию, терпимости и вере в цели.
Сообщение отредактировал Feraset - Воскресенье, 28 Октября 2012, 16:06 |
|
| |
Feraset | Дата: Суббота, 27 Октября 2012, 02:01 | Сообщение # 662 | Тема: Экспертная система для помощи начинающему разработчику игр |
Издание игр
Сейчас нет на сайте
| Quote (TimKruz) экспертная система; Интересная идея. Чтобы реализовать дерево нужно попросить специалистов в разных областях программирования сделать свою ветку не отходя от общих правил построения дерева. М? Добавлено (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(номер строки вроде.)
Спасибо пользователю 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.
Нужны коменты?
Спасибо пользователю 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 |
Издание игр
Сейчас нет на сайте
| Где хранится такая база и как она реализуется? хотя-бы примерную ориентацию подскажи, а я уже попробую в том направении двигаться и посмотрим что выйдет.
Спасибо пользователю 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. Есть какие то другие более рациональные варианты? Да и вообще это так для красоты, делал без особой надобности
Что же касается поставленной задачи, у меня получалось её решить с двумя изьянами: 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. ... при нажатии клавищи на определённую координату, поверх поля выводить куб. Примерно так должно выглядеть:
Вот сам Файл с 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.
Добавлено (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 |
Издание игр
Сейчас нет на сайте
| Спасиб конечн. Хотя я и так нашёл как обойти проблему. Единственное что не пойду как обратится к определённой картинке в канвасе кликом мыши.
Спасибо пользователю 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) приснится ж такое Чт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 |
Издание игр
Сейчас нет на сайте
| Значит облом
Спасибо пользователю TimCruz, за то что научил меня спокойствию, терпимости и вере в цели.
|
|
| |
Feraset | Дата: Четверг, 20 Сентября 2012, 12:33 | Сообщение # 679 | Тема: Datamodule. Как подключить |
Издание игр
Сейчас нет на сайте
| Quote (TimKruz) Подключается он только в коде самой программы, т.е. в Project1.dpr Тоесть здесь мы ничего не пишем я так понимаю.
Код мы добавляем только в implementation. Спасибо за урок.Quote (TimKruz) Учись называть экземпляры компонентов своими именами, Учту. Quote (TimKruz) в дизайнере форм не будут мешаться лишние невизуальные компоненты, У меня было такое что во время открытия проекта все невизуальные компоненты исчезали. Вот думаю с дата модулем попробовать, может перестанут. Да и мешаться не будут в конце концов.
Спасибо пользователю TimCruz, за то что научил меня спокойствию, терпимости и вере в цели.
|
|
| | |
|