![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
Результаты опроса: С игр какого жанра и сложности должен начинать начинающий программист? | |||
3D Экшн, чтото крутое. |
![]() ![]() ![]() ![]() |
7 | 5.56% |
С авто-мото-авиасимуляторов, футболов... |
![]() ![]() ![]() ![]() |
5 | 3.97% |
С бродилок, аркад, мордобоев. |
![]() ![]() ![]() ![]() |
22 | 17.46% |
С РПГ или стратегий. |
![]() ![]() ![]() ![]() |
18 | 14.29% |
С логических,чёто типа Пятнашек. |
![]() ![]() ![]() ![]() |
80 | 63.49% |
С квестов, с игр типа "Быки и коровы". |
![]() ![]() ![]() ![]() |
25 | 19.84% |
Опрос с выбором нескольких вариантов ответа. Голосовавшие: 126. Вы ещё не голосовали в этом опросе |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 | ||
Delphi/C++/C#
Участник клуба
Регистрация: 29.10.2006
Сообщений: 1,972
|
![]() Цитата:
Цитата:
Насчёт игры: интересная идея с кучей функций ![]() |
||
![]() |
![]() |
![]() |
#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! |
|||
![]() |
![]() |
![]() |
#13 | |||
Пользователь
Регистрация: 19.12.2006
Сообщений: 91
|
![]() Цитата:
Цитата:
Цитата:
|
|||
![]() |
![]() |
![]() |
#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 (бродилка же ![]() Жду ответов. |
|
![]() |
![]() |
![]() |
#15 |
Средний прогер
Форумчанин
Регистрация: 16.01.2007
Сообщений: 123
|
![]()
Почему никто не участвует? Я уже геймплей почти создал...
|
![]() |
![]() |
![]() |
#16 |
Регистрация: 29.01.2007
Сообщений: 3
|
![]()
1. Если это для Дельфи, то в Дельфи для файлов лучше использовать не Assign(), а AssignFile().
2. После окончания чтения файл можно бы и закрыть. Опять-таки - лучше CloseFile(), а не Close(). 3. Очень хочется спросить, каким должно быть значение числа j, чтобы функция inttostr(j) вернула значение 'x'? Вообще использование inttostr() в данном коде вызывает некоторое сомнение... А так - удачи... Последний раз редактировалось Ptica; 29.01.2007 в 14:35. |
![]() |
![]() |
![]() |
#17 | |
Средний прогер
Форумчанин
Регистрация: 16.01.2007
Сообщений: 123
|
![]() Цитата:
2. Тоже самое. 3. 'х' записывается в байтовый файл как StrToInt('x'), и соответственно, аналогично читается оттуда. Ptica, спасибо за полезные советы. А теперь вопрос к всем. Как лучше организовать игровое пространство, в окне или в полноекранном режиме. Если в полноекранном, тогда есть смысл использовать DirectX или OpenGL, они намного лучше чем GDI, но я не умею ими управлять. Может, кто-то имеет графический движок на основе DirectX или OpenGL? ЗЫ. Работа кипит... |
|
![]() |
![]() |
![]() |
#18 |
Регистрация: 29.01.2007
Сообщений: 3
|
![]()
Движок, использующий DirectX, это Asphyre eXtreme (к примеру). Искать его можно в Google. По нему есть какой-никакой русский форум. В принципе есть еще Omega Engine. Искать там же.
А начинать первый проект стоило бы все же в оконном режиме, потому что иначе очень много времени уйдет на борьбу с кнопочками и менюшками. А так все-таки VCL... |
![]() |
![]() |
![]() |
#19 | |
Средний прогер
Форумчанин
Регистрация: 16.01.2007
Сообщений: 123
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#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 |