|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
Результаты опроса: С игр какого жанра и сложности должен начинать начинающий программист? | |||
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 | ||
Delphi/C++/C#
Участник клуба
Регистрация: 29.10.2006
Сообщений: 1,972
|
Цитата:
Цитата:
Насчёт игры: интересная идея с кучей функций Про dll не забудте. |
||
20.01.2007, 12:29 | #12 | |||
Средний прогер
Форумчанин
Регистрация: 16.01.2007
Сообщений: 123
|
Извините что долго не писал, перебои с интернетом.
Цитата:
Цитата:
Цитата:
Для начала я хочу сделать побольше типов:тип_карта, тип_игрок, тип_соперник, тип_анимация, и тд. Вот мой первый вариант типа_анимация: 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! |
|||
20.01.2007, 18:01 | #13 | |||
Пользователь
Регистрация: 19.12.2006
Сообщений: 91
|
Цитата:
Цитата:
Цитата:
|
|||
22.01.2007, 18:59 | #14 | |
Средний прогер
Форумчанин
Регистрация: 16.01.2007
Сообщений: 123
|
Опять интернет заработал...
Pixels-это, собственно, сама картинка. Это должен быть двухмерный масив типа: Type TPixel=record R,G,B:Byte; end; Почему я не выбрал просто TImage? А потому что я буду писать графический движок с нуля (с большой буквы "Н" ). Я постараюсь избегать стандартных графических типов/процедур. Цитата:
Прога почти готова (преобразователь), но сдесь у меня есть небольшая, но существенная трудность. Я сначала гружу картинку в 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 (бродилка же ). Жду ответов. |
|
28.01.2007, 18:23 | #15 |
Средний прогер
Форумчанин
Регистрация: 16.01.2007
Сообщений: 123
|
Почему никто не участвует? Я уже геймплей почти создал...
|
29.01.2007, 14:30 | #16 |
Регистрация: 29.01.2007
Сообщений: 3
|
1. Если это для Дельфи, то в Дельфи для файлов лучше использовать не Assign(), а AssignFile().
2. После окончания чтения файл можно бы и закрыть. Опять-таки - лучше CloseFile(), а не Close(). 3. Очень хочется спросить, каким должно быть значение числа j, чтобы функция inttostr(j) вернула значение 'x'? Вообще использование inttostr() в данном коде вызывает некоторое сомнение... А так - удачи... Последний раз редактировалось Ptica; 29.01.2007 в 14:35. |
29.01.2007, 17:12 | #17 | |
Средний прогер
Форумчанин
Регистрация: 16.01.2007
Сообщений: 123
|
Цитата:
2. Тоже самое. 3. 'х' записывается в байтовый файл как StrToInt('x'), и соответственно, аналогично читается оттуда. Ptica, спасибо за полезные советы. А теперь вопрос к всем. Как лучше организовать игровое пространство, в окне или в полноекранном режиме. Если в полноекранном, тогда есть смысл использовать DirectX или OpenGL, они намного лучше чем GDI, но я не умею ими управлять. Может, кто-то имеет графический движок на основе DirectX или OpenGL? ЗЫ. Работа кипит... |
|
29.01.2007, 18:09 | #18 |
Регистрация: 29.01.2007
Сообщений: 3
|
Движок, использующий DirectX, это Asphyre eXtreme (к примеру). Искать его можно в Google. По нему есть какой-никакой русский форум. В принципе есть еще Omega Engine. Искать там же.
А начинать первый проект стоило бы все же в оконном режиме, потому что иначе очень много времени уйдет на борьбу с кнопочками и менюшками. А так все-таки VCL... |
29.01.2007, 18:43 | #19 | |
Средний прогер
Форумчанин
Регистрация: 16.01.2007
Сообщений: 123
|
Цитата:
|
|
29.01.2007, 21:30 | #20 |
Кодер
Форумчанин
Регистрация: 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; |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |