Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание и обсуждение игр
Регистрация

Восстановить пароль
Повторная активизация e-mail

Excel VBA, CAD, Софт, ОС, Windows, Ubuntu, Android, VPS
Win Api, Assembler, C++, Java, Pascal, Lazarus, Delphi, OpenGL, DirectX
C#, Qt, .NET, ASP.NET, Windows Forms, ADO.NET, Framework, WPF, UWP, WinRT, XAML
HTML, CSS, JavaScript, Ajax, PHP, Perl, Python, Ruby, SQL, WordPress, API, XML, JSON, ActionScript, Flash

Ответ
 
Опции темы
Старый 25.11.2006, 11:40   #21
zetrix
Delphi/C++/C#
Профессионал
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,973
Репутация: 589
По умолчанию

Логика проста, монстры ходят по чек-поинтам, если главный герой попадает в их радиус (ну допрустим пикселе 200) то они идеут на него, если он выходит из радиуса (смог убежать), то они останавливаются (такой алгоритм применяется во многих играх). Можно сделать просто (как aliens Shooter ) как только расстояние между героем и монстром < определённого, то монстр идёт на него (учитывая карту). Опять же, если в игре нужен реализм, то надо учитывать, что монстр не может видеть сквозь стену или выступ (такое и в 2D возможно), но и не надо создавать слишком сложный алгоритм, а то с глюками потом не разгрестись и тормозами.

P.S.: извините но кода не будет, это только слова.
zetrix вне форума   Ответить с цитированием
Старый 25.11.2006, 14:36   #22
mihali4
*
Профессионал
 
Регистрация: 22.11.2006
Адрес: Москва
Сообщений: 9,207
Репутация: 2661
По умолчанию

Цитата:
Сообщение от Alar Посмотреть сообщение
Можно на форуме увидеть этого диггера?
Чтобы увидеть диггера, нужно в любой поисковой системе набрать "digger" и получить список ссылок, которого хватит на всю оставшуюся жизнь...

Последний раз редактировалось mihali4; 25.11.2006 в 14:55.
mihali4 вне форума   Ответить с цитированием
Старый 25.11.2006, 20:10   #23
BEETHOVEN
 
Регистрация: 25.11.2006
Сообщений: 5
Репутация: 10
По умолчанию

идея создания игры хорошая, но если вы будете долго думать что создать то у вас ничего неполучется.
BEETHOVEN вне форума   Ответить с цитированием
Старый 25.11.2006, 20:24   #24
mager
Форумчанин
 
Регистрация: 12.11.2006
Сообщений: 57
Репутация: 11
Стрелка

Здравствуйте уважаемые!
Сегодня у нас мини праздник - тема стала популярной!
В начале ответим на вопрос rusl016.
В какой-то степени проблему во весь экран окна решели. Нам дали исходник DXTree.rar(вы можете скачать этот файл с нашего топика!). Но я так и не понял, как автор это реализовал, может Вам удастся! Чтобы создать кнопку с картинкой, надо нажать на инструмент BitBtn, во вкладке Additional, при помощи св-ва Glyph, только перед этим не забудте очистить поле Caption, если Вам нужна только картинка, а если Вы хотите делать сами кнопки, то код, вы можете найти скачав с нашего топика mager.rar.
Пока наш проект по созданию игры простаивает, но дня через 2 появятся новый сообщения. Но вы не забывайте, сейчас мы придумываем магии - предлагайте свои названия магий и картинку магии в действии. Например если это огненый шар, то на картинке должен быть нарисован огненый шар, желательно на белом фоне! Люди поактивней!
Спасибо за внимание

Опять здравствуйте посетители этого топика, я прочитал весь топик и понял, что нам не хватает готовых наработок, чтобы если люди чего-то не допоняли, то обратились, к наработкам и им всё стало ясно. Вот выкладываю весь код по данной игре, на данный момент.
Unit1:
Цитата:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, jpeg, ExtCtrls, StdCtrls, Gauges, MPlayer;

type
TForm1 = class(TForm)
Image1: TImage;
Image2: TImage;
Image3: TImage;
Image4: TImage;
Image5: TImage;
Button1: TButton;
Image6: TImage;
Gauge1: TGauge;
Timer1: TTimer;
Label1: TLabel;
Image7: TImage;
Image8: TImage;
MediaPlayer1: TMediaPlayer;
Label2: TLabel;
Image9: TImage;
Timer2: TTimer;
procedure Image3MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image3MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image4MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image4MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image4Click(Sender: TObject);
procedure Image3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure Timer1Timer(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

uses Unit2, Unit3;


{$R *.dfm}

procedure TForm1.Image3MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Image3.Left:=66;
Image3.Top:=186;
end;

procedure TForm1.Image3MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Image3.Left:=64;
Image3.Top:=184;
end;

procedure TForm1.Image4MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Image4.Left:=66;
Image4.Top:=266;
end;

procedure TForm1.Image4MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Image4.Left:=64;
Image4.Top:=264;
end;

procedure TForm1.Image4Click(Sender: TObject);
begin
Form2.Show;
end;

procedure TForm1.Image3Click(Sender: TObject);
begin
Image1.Visible:=false;
Image2.Visible:=false;
Image3.Visible:=false;
Image4.Visible:=false;
Image5.Visible:=false;
Image6.Visible:=true;
Button1.Visible:=true;
Gauge1.Visible:=true;
Label1.Visible:=true;
Label2.Visible:=true;
MediaPlayer1.Visible:=true;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Form3.Show;
end;

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
var x:Integer;
begin
if (key='.') or (key='ю') then
begin
x:=Image5.left;
Image5.Left:=x-7;
Image7.Visible:=true;
Image8.Visible:=false;
end;
if (key=',') or (key='б') then
begin
x:=Image5.left;
Image5.Left:=x+7;
Image8.Visible:=true;
Image7.Visible:=false;
end;
if (key='m') or (key='ь') then
begin
Timer2.Enabled:=true;
end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var z:Integer;
begin
z:=Gauge1.Progress;
Gauge1.Progress:=z+1;
if z=100 then
begin
Gauge1.Visible:=false;
Image6.Visible:=false;
Image5.Visible:=true;
Label1.Visible:=false;

end;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
var y:Integer;
x: Integer;
begin
y:=Image9.left;
x:=Image7.Left;
Image9.Visible:=true;
Image9.Left:=x+y+15;
if (Image9.Left>=x+y+50) then
begin
Timer2.Enabled:=false;
Image9.Visible:=false;
Image9.Left:=x;
end;
end;

end.
__________________
Незнание человека не повод, чтобы над ним издеваться или смеяться, все мы чего-то не знали или не знаем...

Последний раз редактировалось execom; 24.04.2007 в 20:58.
mager вне форума   Ответить с цитированием
Старый 25.11.2006, 20:38   #25
mager
Форумчанин
 
Регистрация: 12.11.2006
Сообщений: 57
Репутация: 11
Стрелка Моя разработка - Unit2 и Unit3

Unit2:
Цитата:
unit Unit2;

interface

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

type
TForm2 = class(TForm)
Label1: TLabel;
Image1: TImage;
Image2: TImage;
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1Click(Sender: TObject);
procedure Image2MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form2: TForm2;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm2.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Image1.Left:=34;
Image1.Top:=34;
end;

procedure TForm2.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Image1.Left:=32;
Image1.Top:=32;
end;

procedure TForm2.Image2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Image2.Left:=210;
Image2.Top:=34;
end;

procedure TForm2.Image1Click(Sender: TObject);
begin
Form2.Close;
Form1.Close;
end;

procedure TForm2.Image2MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Image2.Left:=208;
Image2.Top:=32;
end;

procedure TForm2.Image2Click(Sender: TObject);
begin
Form2.Close;
end;

end.
Unit3
Цитата:
unit Unit3;

interface

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

type
TForm3 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form3: TForm3;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject);
begin
Form3.Close;
Form1.Image1.Visible:=true;
Form1.Image3.Visible:=true;
Form1.Image4.Visible:=true;
Form1.Image5.Visible:=false;
Form1.Image6.Visible:=false;
Form1.Image7.Visible:=false;
Form1.Image8.Visible:=false;
Form1.Button1.Visible:=false;
Form1.Image5.left:=0;
Form1.Gauge1.Visible:=false;
Form1.Gauge1.Progress:=0;
Form1.Label1.Visible:=false;
Form1.Label2.Visible:=false;
Form1.MediaPlayer1.Visible:=false;
end;

procedure TForm3.Button2Click(Sender: TObject);
begin
Form3.Close;
end;

end.
__________________
Незнание человека не повод, чтобы над ним издеваться или смеяться, все мы чего-то не знали или не знаем...
mager вне форума   Ответить с цитированием
Старый 25.11.2006, 22:02   #26
mihali4
*
Профессионал
 
Регистрация: 22.11.2006
Адрес: Москва
Сообщений: 9,207
Репутация: 2661
По умолчанию

Цитата:
Сообщение от BEETHOVEN Посмотреть сообщение
идея создания игры хорошая, но если вы будете долго думать что создать то у вас ничего неполучется.
Вот пример толкового подхода к проблеме!

Вы, молодые люди, хотите добиться решения проблемы (в данном случае - проявить себя, не так ли) с какой стороны (это я просто спрашиваю...):
- как грамотного сценариста? Увы, в этом случае вы себя абсолютно не зарекомендовали, Близзард вас к себе не пригласит. Более того, сразу могу сказать, вы не тот ВУЗ выбрали (если вы - студент)?
- как талантливого разработчика нетривиального подхода к скоростной обработке графики? У вас тоже не катит, вы же элементарных вещей не знаете и, что самое неразумное, не хотите их узнавать, предпочитая, как уже (не помню кем, но весьма справедливо) было сказано - "изобретать колесо"?
- как талантливого программиста (читай - кодера)? Тогда прошу без всяких там обид перечитать МОЙ предыдущий пост (ненавижу это слово, есть же русское - сообщение) и попытаться его осмыслить. Ну, а если останетесь при прежнем мнении, как говорится "тоды ой"...

За сим, с почтением и с пожеланием всяческих успехов (а уж я чем могу - помогу), ваш Михалыч (это для тех, кто не понял ник Michali4)

Последний раз редактировалось mihali4; 25.11.2006 в 22:10.
mihali4 вне форума   Ответить с цитированием
Старый 27.11.2006, 22:13   #27
selenux
Пользователь
 
Регистрация: 14.11.2006
Сообщений: 23
Репутация: 10
По умолчанию

Вот я и вернулся. Пардон, серьезные проблемы с подключением, выходить могу только на работе, и то не всегда.

Братишка Mager, пожалуйста забудь про GDI(в третий раз прошу), zetrix выложил нам DelphiX!!!!

Там(в двух словах) рисование делается таким образом.
Кидаешь на форму DXDraw, а само рисование(ЗАБУДЬ ПРО OnPaint!!!) происходит по таймеру(DXTimer).

У DXDraw имеются две поверхности Primary и Surface(это свойства).
Рисовать надо на второй(Primary представляет собой нечто вроде рисования на GetDC(0), т.е. прямо на экран).

Как только закончил рисование на DXDRaw.Surface говоришь ему это - DXDraw.Surface.Canvas.Realise).

А потом переключаешь поверхности DXDraw.Flip и все твое ваяние появляется на экране.

Я думаю, что свое дерево компонентов для DelphiX написать стоит, если не в игре, то все равно пригодится.
selenux вне форума   Ответить с цитированием
Старый 30.11.2006, 09:58   #28
Snake_B
Пользователь
 
Регистрация: 30.11.2006
Сообщений: 12
Репутация: 10

icq: 190109751
По умолчанию

вообще для создания современных 3d игр восновном используют с++. он более подходящий для этих целей (хотя я сам не знаю почему). но через делфи всегда можно сделать тоже самое только это будет сложнее.

Писать игру на "C" правильнее, основными аргументами являются:
1) меньший размер файлов (чем в Delphi);
2) разнообразность библиотек и SDK;
3) скорость обработки кода.

Приверженец Delphi может гордо ответить:
1) если писать на WinAPI функциях в Delphi, то размер и скорость обращения к коду практически сравнивается с "С"; Да и при HDD 200 Гб 0,5 мб особой роли не играют.
2) библиотеки и справки под Delphi можно найти тоже очень просто, а если "руки прямые", то и самому можно, транслировать библиотеки с кода "С";
3) на сегодняшний день средний компьютер стал настолько мощным и производительным, что о скорости обработки программного кода можно не говорить. Как видите, Delphi ничем не уступает "С", а, например, в скорости разработки - даже обходит.

Если же придётся работать с 3D графикой, то у меня где-то был набор компонентов DelphiX, там даже сэмплы построения есть.

http://www.glscene.ru/index.php - лучше здесь глянте.
Вот руководство ещё, там как космосим сделать - http://snakesmiles.narod.ru/Manual.rar - 239,6 кб

Я предлагаю начать не 3D, а с 2D игр. Ведь не зная простого не создашь сложного!

Зря. Совершенно разный подход, будете долго разбираться как работать с 2d, а потом в 3d это будет только мешать.

В какой-то степени проблему во весь экран окна решели.

Окно программы на весь экран + смена разрешения экрана.
Это только пример.
Создаем проект - vcl form applic.


Код:

uses OpenGL; // надо добавить.

Код:

 
procedure TForm1.FormCreate(Sender: TObject);
var
td:tdevmode;
begin
 form1.Left:=0;form1.Top:=0; {положение формы}
 with td do begin
  dmsize:=sizeof(td);
  dmbitsperpel:=32;  {разрядность цвета}
  Form1.Width:=800;
  Form1.Height:=600;
  dmpelswidth:=800;   {разрешение по горизонтали}
  dmpelsheight:=600;   {разрешение по вертикали}
  dmfields:=dm_bitsperpel or dm_pelswidth or dm_pelsheight;
  changedisplaysettings(td,cds_fullscreen);
end; end;

+ Button на форму (где-нибудь сверху-слева) и в onClick, лучше сделать, при нажатии на Esc выход, но я не помню её код, искать лень.

Код:

 
procedure TForm1.Button1Click(Sender: TObject);
begin
close;
end;


Последний раз редактировалось Snake_B; 30.11.2006 в 10:04.
Snake_B вне форума   Ответить с цитированием
Старый 01.12.2006, 09:02   #29
micaell
Пользователь
 
Аватар для micaell
 
Регистрация: 01.12.2006
Сообщений: 32
Репутация: 10
Восклицание

http://downloads.sourceforge.net/gls...5&big_mirror=0
а пробей ссылочку и глянь тему, что зальётся(38мб).

НИЖЕ темы конкретно могут помочь при создании 3D!!!
думаю в исходниках взять мыла кодеров - вдруг помогут!
http://Micaell.narod.ru/download/Fighting.zip (уже висит выше)
http://Micaell.narod.ru/download/Actor.rar
http://Micaell.narod.ru/download/RTCW_Zombie.zip



http://www.mirgames.ru/articles/opengl.html

http://www.vr-online.ru/download.php
вот интересная ссылка на тему Delphi и не только!

Последний раз редактировалось Stilet; 23.11.2010 в 18:20.
micaell вне форума   Ответить с цитированием
Старый 08.12.2006, 03:16   #30
mihali4
*
Профессионал
 
Регистрация: 22.11.2006
Адрес: Москва
Сообщений: 9,207
Репутация: 2661
По умолчанию

Все для "игроделов" :
http://delphigfx.mastak.ru
Теория, практика, компоненты, примеры и т.д. и т.п.
Если осилите эту инфу, я думаю, прыти и шапкозакидательских настроений поубавится...

Последний раз редактировалось execom; 24.04.2007 в 21:32.
mihali4 вне форума   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Уроки по созданию игр для новичков... -=DeS=- Gamedev - cоздание и обсуждение игр 711 13.03.2017 16:59
Музыка программистов - как вы относитесь к АРИИ? Весёлый Жека Свободное общение 46 10.10.2008 22:32
Конкурсы по созданию игр на Delphi mutabor Свободное общение 0 15.06.2007 12:40
Работа по созданию ПО remix Фриланс 3 22.04.2007 11:00




22:54.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Покупайте на сайте www.skinon.ru уникальные чехлы и наклейки для телефонов.
купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru