Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Результаты опроса: С игр какого жанра и сложности должен начинать начинающий программист?
3D Экшн, чтото крутое. 7 5.56%
С авто-мото-авиасимуляторов, футболов... 5 3.97%
С бродилок, аркад, мордобоев. 22 17.46%
С РПГ или стратегий. 18 14.29%
С логических,чёто типа Пятнашек. 80 63.49%
С квестов, с игр типа "Быки и коровы". 25 19.84%
Опрос с выбором нескольких вариантов ответа. Голосовавшие: 126. Вы ещё не голосовали в этом опросе

Ответ
 
Опции темы Поиск в этой теме
Старый 19.01.2007, 08:45   #11
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

Цитата:
В Турбе была хорошая функция IORESULT, а в Делфи она как называется
В хелпе ввели бы "IORESULT" и получили бы это:
Цитата:
Delphi syntax:

function IOResult: Integer;

Description

IOResult returns the result of the last Delphi I/O routine when I/O-checking is off (that is, when using the {$I-} compiler option). If IOResult returns 0, the last I/O operation succeeded. Otherwise, IOResult returns an error code.

If an I/O error occurs and I/O-checking is off, all subsequent I/O operations are ignored until the internal error flag is cleared. Calling IOResult clears the internal error flag.

An alternative way to handle I/O errors is to use exception handling with the {$I+} compiler option.
PS: думаю и так всё пронятно.

Насчёт игры: интересная идея с кучей функций Про dll не забудте.
zetrix вне форума Ответить с цитированием
Старый 20.01.2007, 12:29   #12
Cezar
Средний прогер
Форумчанин
 
Аватар для Cezar
 
Регистрация: 16.01.2007
Сообщений: 123
По умолчанию

Извините что долго не писал, перебои с интернетом.

Цитата:
Эдит - в твоём контексте это что?
Edit - это компонент Делфи, одностраничный текстовый редактор.

Цитата:
В принципе, для отладки, просто в файл out.txt всё записывается. А потом читается. Если процессов ну очень много - вывод можно в несколько файлов делать.
Можно и так, но для этого нужно постоянно открывать/закрывать файл, а я сделаю вывод в реальном режиме. Вспомни, как в Контре кодеки набираются, тогда и поймеш. Кстати, насчет файлов, вся инфа из многостраничного редактора (я предпочитаю Memo) будет автоматически записыватся в файл через какой-то промежуток времени.

Цитата:
С функциями могу помочь. Только опять же таки - если это конкретные функции. Т.е. ты пишешь, что функция получает и что выдает, а я тебе пишу её код.
НУ пока даже не знаю. Я сейчас делаю каркас игры, разделяю ее на модули. Я всегда ищу нестандартные подходы к написанию програм. Поэтому я сейчас с нуля создаю принцип работы будущего блокбастера . Но самому мне не справится, наверное. Например, я буду интенсивно использовать динамическую память, для карт, для рисунков, и тд. Нужно разработать "Движок памяти" - групу функций для работы с памятью. Их много не надо, потому что стандартных функций вполне хватит, до поры до времени.
Для начала я хочу сделать побольше типов:тип_карта, тип_игрок, тип_соперник, тип_анимация, и тд.
Вот мой первый вариант типа_анимация:

type TSprite=record
SizeX? SizeY:integer;//размеры анимации
TMasc:array[1..SizeX,1..SizeY] of boolean;//маска прозрачности
Pixels:???????;//подскажи, какой сдесь нужен тип?
end;

type TAnimation=object// может, сдесь нужно писать class?
SizeX, SizeY:integer;//размеры анимации
Time:longint;//интервал между сменой кадров
AnimateLen:byte;//количество кадров
Pictures:array[1..AnimateLen] of TSprite;
end;

Что я имел ввиду говоря про функции работы с пямятью? Пример: сделать процеду... тьфу, функцию, которя получит путь к файлу анимации (формат еще придумать нужно, или может GIF?), откроет его, посмотрит из него параметры, выделин нужное количество памяти, грузанет все кадры и параметры и вернет в программу указатель на новую анимацию, а также другие параметры.

Я не буду создавать игру "в лоб". Я сначала создам каркас, самые главные функции, а потом потихоньку клепать все остальное.

Жду соображений на данную тему.
________________________________
RAMMSTEIN THE BEST!
Cezar вне форума Ответить с цитированием
Старый 20.01.2007, 18:01   #13
Flash_
Пользователь
 
Аватар для Flash_
 
Регистрация: 19.12.2006
Сообщений: 91
По умолчанию

Цитата:
Pixels:???????;//подскажи, какой сдесь нужен тип?
Смотря для чего это предназначено.
Цитата:
type TAnimation=object// может, сдесь нужно писать class?
Нужно.
Цитата:
получит путь к файлу анимации (формат еще придумать нужно, или может GIF?), откроет его, посмотрит из него параметры, выделин нужное количество памяти, грузанет все кадры и параметры и вернет в программу указатель на новую анимацию, а также другие параметры.
Посмотреть из картинки её параметры..я не знаю, каким образом это возможно и возможно ли вообще.
Flash_ вне форума Ответить с цитированием
Старый 22.01.2007, 18:59   #14
Cezar
Средний прогер
Форумчанин
 
Аватар для Cezar
 
Регистрация: 16.01.2007
Сообщений: 123
По умолчанию

Опять интернет заработал...

Pixels-это, собственно, сама картинка. Это должен быть двухмерный масив типа:
Type TPixel=record
R,G,B:Byte;
end;

Почему я не выбрал просто TImage? А потому что я буду писать графический движок с нуля (с большой буквы "Н" ). Я постараюсь избегать стандартных графических типов/процедур.

Цитата:
Посмотреть из картинки её параметры..я не знаю, каким образом это возможно и возможно ли вообще.
Я это предусмотрел. Читать картинки будем не из BMP или чего-то подобного. Я сейчас создаю специальный преобразователь. Он читает из BMP файла только значение пикселей (без заголовка и таблицы цветов) и тупо записывает все это в другой файл (File of byte). НО! Он записывает не только собственно изображение, перед этим он записывает размер картинки в пикселях.
Прога почти готова (преобразователь), но сдесь у меня есть небольшая, но существенная трудность. Я сначала гружу картинку в Image а оттуда уже читаю пиксели. Пиксели имеют тип TColor, что аналогично LongInt - четырехбайтовое целое, но ведь файл у меня байтового типа! Вот и проблема соответствующая: как разделить четырехбайтовое целое побайтно и отослать в другие переменные типа Byte? Когда этот вопрос будет решен, тогда загрузка/сохранение картинок будет осуществлятся легко и без проблем.

Карты будут в отдельных файлах. Я полагаю, что лучше будет все параметры и картинки одной карты помещать в отдельные файлы.




Вот, выкладываю последние (и первые) доработки.
Ниже записана процедура открытия файла-карты (недоработанная).

function Open_file_for_map(path:string):bool ean;
var i,j:integer;
File_Map:file of byte;
File_Type, File_Version:string;
Size_Map_Str_X,Size_Map_Str_Y:strin g;
Size_Map_X,Size_Map_Y:longint;
s:char;
begin
if fileexists(path) then
begin
assign(File_Map);
reset(File_Map);
for i:=1 to 15 do//Blood world map
begin
read(File_Map,j);
File_Type:=File_Type+inttostr(j);
end;
readln(File_Map);
for i:=1 to 11 do//version 1.0
begin
read(File_Map,j);
File_Version:=File_Version+inttostr (j);
end;
readln(File_Map);
for i:=1 to 4 do//Size...
begin
read(File_map,j);
File_Map:=File_Map+inttostr(j);
end;
read(File_Map,j);
repeat //Размер карты по горизонтали
read(File_Map, j);
s:=inttostr(j);
if s<>'x' then Size_Map_Str_X:=Size_Map_Str_X+s;
if s='x' then break;
until false;
repeat //Размер карты по вертикали
read(File_Map, j);
s:=inttostr(j);
if s<>'x' then Size_Map_Str_Y:=Size_Map_Str_Y+s;
if s='x' then break;
until false;
Size_Map_X:=strtoint(Size_Map_Str_X );
Size_Map_Y:=strtoint(Size_Map_Str_Y );
Size_Map.X:=Size_Map_X;
Size_Map.Y:=Size_Map_Y;
end
else
begin
ErrorCode:=true;
ErrorMessage:='Не удалось найти файл - '+path;
end;
end;

Кстати, игре нужно придумать имя. Пока я придумал название Blood (бродилка же ).
Жду ответов.
Cezar вне форума Ответить с цитированием
Старый 28.01.2007, 18:23   #15
Cezar
Средний прогер
Форумчанин
 
Аватар для Cezar
 
Регистрация: 16.01.2007
Сообщений: 123
По умолчанию

Почему никто не участвует? Я уже геймплей почти создал...
Cezar вне форума Ответить с цитированием
Старый 29.01.2007, 14:30   #16
Ptica
 
Регистрация: 29.01.2007
Сообщений: 3
По умолчанию

1. Если это для Дельфи, то в Дельфи для файлов лучше использовать не Assign(), а AssignFile().
2. После окончания чтения файл можно бы и закрыть. Опять-таки - лучше CloseFile(), а не Close().
3. Очень хочется спросить, каким должно быть значение числа j, чтобы функция inttostr(j) вернула значение 'x'? Вообще использование inttostr() в данном коде вызывает некоторое сомнение...
А так - удачи...

Последний раз редактировалось Ptica; 29.01.2007 в 14:35.
Ptica вне форума Ответить с цитированием
Старый 29.01.2007, 17:12   #17
Cezar
Средний прогер
Форумчанин
 
Аватар для Cezar
 
Регистрация: 16.01.2007
Сообщений: 123
По умолчанию

Цитата:
1. Если это для Дельфи, то в Дельфи для файлов лучше использовать не Assign(), а AssignFile().
2. После окончания чтения файл можно бы и закрыть. Опять-таки - лучше CloseFile(), а не Close().
3. Очень хочется спросить, каким должно быть значение числа j, чтобы функция inttostr(j) вернула значение 'x'? Вообще использование inttostr() в данном коде вызывает некоторое сомнение...
А так - удачи...
1. Спасибо за поправку, буду иметь ввиду.
2. Тоже самое.
3. 'х' записывается в байтовый файл как StrToInt('x'), и соответственно, аналогично читается оттуда.

Ptica, спасибо за полезные советы.


А теперь вопрос к всем. Как лучше организовать игровое пространство, в окне или в полноекранном режиме. Если в полноекранном, тогда есть смысл использовать DirectX или OpenGL, они намного лучше чем GDI, но я не умею ими управлять. Может, кто-то имеет графический движок на основе DirectX или OpenGL?

ЗЫ. Работа кипит...
Cezar вне форума Ответить с цитированием
Старый 29.01.2007, 18:09   #18
Ptica
 
Регистрация: 29.01.2007
Сообщений: 3
По умолчанию

Движок, использующий DirectX, это Asphyre eXtreme (к примеру). Искать его можно в Google. По нему есть какой-никакой русский форум. В принципе есть еще Omega Engine. Искать там же.
А начинать первый проект стоило бы все же в оконном режиме, потому что иначе очень много времени уйдет на борьбу с кнопочками и менюшками. А так все-таки VCL...
Ptica вне форума Ответить с цитированием
Старый 29.01.2007, 18:43   #19
Cezar
Средний прогер
Форумчанин
 
Аватар для Cezar
 
Регистрация: 16.01.2007
Сообщений: 123
По умолчанию

Цитата:
А так все-таки VCL
А что это такое?
Cezar вне форума Ответить с цитированием
Старый 29.01.2007, 21:30   #20
Romanus
Кодер
Форумчанин
 
Регистрация: 27.01.2007
Сообщений: 271
По умолчанию

2Cezar используй для файлов не AssignFile() делай так
var
List:TStrings;
Str:string;
begin
List:=TStringList.Create();
List.LoadFromFile(какой-нибудь файл);
//а теперь у тебя есть буфер строк
Str:=List.Strings[0];
// никакой возни с циклами вот так мы получаем нулевую строку
// в Str количество строк опеределяй так List.Count
List.Free;
//Да не забудь после работы уничтожить List
end;
Romanus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
GLScene - игровой движок помогите установить One.Love Компоненты Delphi 10 05.01.2013 21:58
Игровой бот Ustim Gamedev - cоздание игр: Unity, OpenGL, DirectX 5 24.07.2008 15:51
Приглашаю в игровой проект. tetris Gamedev - cоздание игр: Unity, OpenGL, DirectX 2 08.05.2008 14:56
Игровой комп Simply-Art Компьютерное железо 7 15.02.2008 09:29