Суббота, 20 Сентября 2025, 13:23

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Результаты поиска
TimKruzДата: Воскресенье, 24 Февраля 2013, 17:12 | Сообщение # 201 | Тема: изометрия
старожил
Сейчас нет на сайте
Цитата (Deswing)
то есть нужно "посматривать" на диагонали этих прямоугольников? Прямоугольники-то без пробелм нарисую... Или я только что сказал ужаснейший бред?

Ну вот, например, картинка одной клетки поля:

Розовые уголки считаются прозрачными и не рисуются (можно делать вручную в любом формате или использовать формат типа png/tga с альфа-каналом), иначе они будут наезжать на остальные клетки. Зелёная область в чёрной рамке - это, собственно, клетка (ну, допустим, в этой рамке нарисована трава), которая будет отображаться на экране. В итоге мы получаем прямоугольную картинку, у которой уголки не будут рисоваться, потому что они содержат особый "прозрачный" цвет.
Если рисовать без прозрачности - получится, что картинки наезжают друг на друга, а с прозрачностью всё выглядит нормально.
Цитата (Deswing)
TimKruz, извините, эм... я не очень разобрался в коде. Не учил этот ЯП. Цикл for узнал, но где его начало, а где конец - нет sad Совсем ещё новичок

Ну... Так:
Код
Для счётчика x от 0 до map_x делать
начало
   Для счётчика y от 0 до map_y делать
   начало
     Вызвать процедуру DrawElement(map[x,y],x*w,y*h+x*m);
   конец
конец

Переменные или константы map_x и map_y - это размеры двумерного массива map.
Процедуру DrawElement сам напишешь, её действия зависят от графического движка.


TimKruzДата: Воскресенье, 24 Февраля 2013, 16:27 | Сообщение # 202 | Тема: Проблема с Deus Ex Human Revolution
старожил
Сейчас нет на сайте
Цитата (Andrey_M)
Извини за нубство, но как это сделать? И можно ли вообще такое на хруше?

Предотвращение выполнения данных (DEP) появилось как раз в Windows XP SP2. И, похоже, было косячным.
Найти можно в панели управления > система > свойства системы > дополнительно > быстродействие - параметры > предотвращение выполнения данных:

Но раз уж после обновления всё заработало, то никаких исключений добавлять не надо. smile Просто на будущее объяснил.


TimKruzДата: Суббота, 23 Февраля 2013, 23:37 | Сообщение # 203 | Тема: Проблема с Deus Ex Human Revolution
старожил
Сейчас нет на сайте
Цитата (Andrey_M)
Недавно переустановил ось

Ты установил Windows XP SP2, теперь обновись до SP3. Такая ошибка, судя по всему, часто возникает в XP SP2.
Проверь, включена ли функция предотвращения выполнения данных. Если включена - внеси в список исключений игру, т.к. она может конфликтовать.
Да, и проверь какой-нибудь утилитой модули памяти - с учётом того, что предыдущая Windows безнадёжно упала, может быть что угодно...
Заодно уж проверь жёсткий диск на ошибки и просканируй на вирусы (лучше всего до загрузки Windows, для монопольного доступа).
Цитата (Andrey_M)
Попробую скачать другой торрент или на рынке за сто рублей купить. Последнее надёжнее.

Ммм, как раз таки наоборот, потому что на рынке за сто рублей ты можешь купить чёрт знает что, даже совершенно другую игру, или версию, испоганенную всякими модами и тупыми переводами, или ещё что-нибудь, и при этом ты потратишь сто рублей, получив бесполезный диск в дешёвой коробке. Уж лучше купить лицензионный диск, если хочешь стопроцентно качественную версию игры. Но с торрента можно скачать нормальную сборку или, ещё лучше, абсолютно оригинальный образ диска, если уметь искать и читать описания.


TimKruzДата: Суббота, 23 Февраля 2013, 21:04 | Сообщение # 204 | Тема: изометрия
старожил
Сейчас нет на сайте
Цитата (Deswing)
Интересует техническая часть

Ну каждая клетка - это прямоугольник, только со срезанными прозрачностью краями так, что получается ромб/параллелограмм/шестиугольник. Все клетки рисуются на экране так же, как и в проекции спереди-сверху (где клетки представляют собой простые квадраты/прямоугольники), только в каждом ряду каждая следующая клетка смещается на n пикселей вверх или вниз так, чтобы верхняя и нижняя наклонные грани совместились.
То есть, если в обычной прямоугольной карте клетки рисуются так:
Код
for x:=0 to map_x do
   for y:=0 to map_y do
     DrawElement(map[x,y],x*w,y*h); //w и h - ширина и высота картинки.
//То есть DrawElement рисует картинку, соответствующую типу клетки,
//хранящейся в двумерном массиве map, по заданным координатам.
//А вложенные циклы for полностью перебирают массив map.

А в "наклонной" прямоугольной карте получится как-то так:
Код
for x:=0 to map_x do
   for y:=0 to map_y do
     DrawElement(map[x,y],x*w,y*h+x*m); //w и h - ширина и высота, но не картинки,
//а m - величина отступа от оси Ox каждой клетки в ряду.

Например, если m=20, w=40, h=30, то map[0,0] будет в точке (0,0), map[1,0] - в точке (40,20), при этом между map[1,0] и верхним краем экрана будет пустота в 20 пикселей; ну и так далее: map[0,1] - (0,30), map[1,1] - (40,50).
Значения m, w и h зависят от параметров изометрического рисунка. Кроме того, процедура DrawElement должна рисовать с прозрачностью, т.е. уголки будут сами по себе срезаться, если в картинке они обозначены "прозрачным цветом".
Все остальные объекты рисуются как обычно, по такой же формуле, с привязкой к одной из клеток.
"Физика", т.е. столкновения персонажей с более высокими объектами типа деревьев и домов обрабатываются просто в массиве карты и списке объектов так, как если бы карта была обычной прямоугольной - ведь все объекты занимают ровно N клеток (и легко определить, к каким именно, или задать эти клетки заблокированными ещё при редактировании карты), а координаты игрока относительно клеток в массиве легко определяются по той же формуле, так что мы можем просто сравнивать клетки (или относительные размеры клеток и персонажа, если персонаж ходит не строго по клеткам).

Можно ещё рисовать после поворота системы координат как, например, в OpenGL (процедура glRotate) или DirectX. Но я не уверен, что получится красивая графика, особенно, если используется стиль пиксель-арта, потому что тогда всё будет сглаживаться... wacko




Сообщение отредактировал TimKruz - Воскресенье, 24 Февраля 2013, 17:06
TimKruzДата: Суббота, 23 Февраля 2013, 19:01 | Сообщение # 205 | Тема: Проблема с компом или виндой
старожил
Сейчас нет на сайте
Цитата (Andrey_M)
Это в меню биоса кнопка F5? У меня почти ничего в настройках не меняется. Я пробовал, хотя может это недостаточно "глубокий" биос... Слишком уж много графических элементов.

Можно в биосе сбросить настройки (вроде бы в меню exit - что-то типа "exit and load default settings"), или просто снять батарейку с материнской платы временно.
А биос не может быть "неглубоким". Биос может просто иметь мало настроек, смотря какая версия. А графические элементы ни о чём не говорят.
Цитата (Andrey_M)
А это правда, что для этого нужна совершенно пустая и чистая шлешка?

Некоторые сборки вроде бы можно просто закинуть на флешку. Но не знаю точно; лично я каждый раз форматирую флешку и записываю образ утилитой WinISO (она правильно записывает загрузочный сектор, без него не получится загрузиться).
Цитата (Andrey_M)
Цитата (TimKruz)
Разбивать диск на разделы не надо.
ПОЧЕМУ?

Ну я же говорил, что Windows 8 сохраняет всю информацию. Поэтому разбивать и не надо.
Цитата (Andrey_M)
НЕЛЬЗЯ установить. На ней, как я проверял, не идут многие старые игры, а в них я задрот

Ммм, ну, может быть, очень старые не идут. Типа игр для DOS, хотя для DOS есть DOSBox.
Цитата (Andrey_M)
То есть тот же самый графический интерфейс?

Ну не знаю, у меня только сверху полоска с названием биоса сине-голубым градиентом переливается, всё остальное просто текстовое, сине-серо-белое. Плюс какая-то утилита встроенная, но я её ни разу не открывал. Настроек много, всё со справочными надписями - легко разобраться и настроить...
Цитата (Andrey_M)
А потом как инфу восстановить о дисках и т.д.
Надеюсь, после этого комп включится?

"Инфа о дисках" нигде не хранится, BIOS сам её получает на самом первом этапе загрузки компьютера, когда BIOS опрашивает подключённые устройства.
Комп включится, настройки по-умолчанию почти всегда работают, в крайнем случае попросит вручную настроить. Только время забывается, что не всегда удобно. Я вот вообще батарейку убрал, потому что у меня какая-то непонятная проблема с компьютером; теперь каждый раз предлагает настроить время или загрузить стандартные настройки, а время приходится обновлять после входа в Windows (благо, time.windows.com работает).
Цитата (Andrey_M)
Установил винду на диск D. Всё работает

Ну так какую конкретно установил, с какими настройками?
Цитата (Serg1971)
можешь даже и без форматирования поставить - выбрав при установке /оставить файловую систему без изменений/, установочник поругается что есть уже папка Windows, точно сюда ставить? Ответишь - да и он стерёт всё что там было и начнёт установку заново. В некоторых вариациях бывает что создаёт папку Windows0 и тоже поставит без затирания предыдущей винды (это от сборки зависит).

Не знал, что Windows XP тоже может сохранять всё на дисках. Наверное, левые какие-нибудь сборки, а не оригинальная?


TimKruzДата: Пятница, 22 Февраля 2013, 00:27 | Сообщение # 206 | Тема: Мои вопросы по обучению на Delphi XE и помощь к созданию игр
старожил
Сейчас нет на сайте
Делфи 7 полностью совместима с семёркой, виндоус предупреждение первый раз выводит, но Делфи работает отлично. Правда, ей нужны права администратора для работы с файлами в её папке.
Диск ты зря покупал, уж лучше оригинальный образ скачать.
Данные у тебя килобайт весят, потому что ты используешь tbitmap, а там много информации хранится, да и сами битмапы много места занимают. Вообще, я уже говорил, что стандартными средствами не всегда удобно в файл писать, т.к., например, пустые строки и массивы будут забивать пространство в файле нулями.


TimKruzДата: Пятница, 22 Февраля 2013, 00:00 | Сообщение # 207 | Тема: Проблема с компом или виндой
старожил
Сейчас нет на сайте
Настройки биоса можно сбросить к дефолтным, с дефолтными всё обычно работает...
Ошибка может быть где угодно, например, системные файлы повредились, или что угодно другое.
Можно попробовать загрузиться с какого-нибудь лив-сиди (на флешку записывается любой лив-образ, той же икспи наприер) и помучать компьютер всякими проверками дисков и тому подобного. Но ОС вряд ли уже восстановить удастся, т.к. она у тебя вообще никак не грузится и код ошибки ни о чём не скажет.
Разбивать диск на разделы не надо. Можно установить Виндоус 8 на любой диск и не париться: у неё есть специальный режим, в котором она устанавливается в свободное место диска, без затирания памяти, даже старую систему загрузить можно потом будет. Правда, потом будет небольшая сложность с правами доступа: восьмёрка по-умолчанию не даёт доступ к файлам старой системы, но это легко исправляется через свойства файлов/папок.
У самого полетела икспи, правда, она ещё могла в безопасном режиме загружаться, но исправить бсод при нормальной загрузке так и не удалось. А диск под завязку набит, не охота терять было... Поставил восьмёрку и радуюсь. smile

P.S. У меня тоже ASUS, модель A5K.




Сообщение отредактировал TimKruz - Пятница, 22 Февраля 2013, 00:03
TimKruzДата: Четверг, 21 Февраля 2013, 18:46 | Сообщение # 208 | Тема: Мои вопросы по обучению на Delphi XE и помощь к созданию игр
старожил
Сейчас нет на сайте
Цитата (Александр5)
функция function DirectoryExists ( const DirectoryName : string ) : Boolean; не работвает в Delphi 5 помоему ее там вобще нет а вот эта
CreateDir(dirName); работет

Вот ответ: одна из первых ссылок в Яндексе.
В Delphi 5 функция DirectoryExists находится в модуле FileCtrl, а не в SysUtils, куда она потом переехала.
Вообще, советую использовать Delphi 7 (как достаточно популярную до сих пор) или одну из RAD-студий, например, 2007 (последняя не юникодовская).


TimKruzДата: Среда, 20 Февраля 2013, 21:54 | Сообщение # 209 | Тема: "Элемент" (мобильная песочница) [2d]
старожил
Сейчас нет на сайте
Цитата (triptix)
Актуальная версия от 16.02.13

Поиграл немного (Acer Iconia Tab A511: 1 GB оперативной памяти, процессор Tegra 3 - 1.3 Ghz, 4 ядра, Android 4.1.2), нашёл несколько существенных багов.
Ну, во-первых, можно яростно тыкать во всё подряд, таким образом разрабатывая большую площадь даже примитивным заклинанием... Может это и фича, конечно... Но, кроме этого, ещё можно несколько раз тыкать в одну и ту же клетку, а это позволяет очень быстро рубить деревья - несколько раз кликнул по нижнему блоку дерева, перешёл к следующему, опять закликал, к следующему... А деревья сами рубятся и складываются на земле, получается очень быстро. biggrin
Однако, если попробовать кликнуть подряд по всем блокам дерева, то получается такая фигня:

То есть блоки меняются местами - верхушка может оказаться где угодно.

Почему ростки деревьев можно сажать на блоки дерева (другие блоки не проверял, только земля и дерево)?

Кстати, почему бы не удалять мелкую траву, которая растёт на блоке земли, когда игрок пытается посадить дерево/поставить другой блок? А то тупо как-то, полный блок ставится над блоком травы, т.е. остаётся большое пустое пространство.

Если каким-то особым образом упасть на землю, персонаж зависает на довольно большом расстоянии от земли. Вот:

В таком состоянии ходить ничего не мешает, хотя персонаж явно головой трётся о потолок. biggrin При этом, если нажать "вниз" - персонаж возвращается на землю. Кстати, если просто подпрыгнуть и вернуться на землю - персонаж встаёт на землю, но при нажатии кнопки "вниз" он опускается ещё на один пиксель ниже, и остаётся в таком состоянии, пока не прыгнешь снова. Не мешает, но всё-таки заметный баг.

Это нормально, что ночные монстры не боятся факелов и днём никуда не уходят?

Дрался с одним скорпионом, но, ВНЕЗАПНО, большая площадь земли (прямоугольник или квадрат) взорвалась, при этом никто не пострадал, все блоки нормально выпали. Сначала подумал - супер-особенность скорпиона, но такое я видел только один раз. Скриншот (уже собрал выпавшие вещи и добил скорпиона; тут, кстати, тоже заметен баг с зависанием над землёй после падения):

Через блок от ёлки начинается обрыв, так вот это только нижняя половина (выше были деревья высокие, но они полностью удалились) той области, которая внезапно взорвалась. Откуда трава справа и почему она не выпала - не знаю.

Баги с освещением. В первую ночь ещё не нашёл угля и не сделал факелов, так что была сплошная чернота. Правда, вокруг персонажа было 5 освещённых клеток, но они странно себя вели - стояли в одном месте, даже когда игрок отошёл, но перемещались к игроку, если сломать какой-нибудь блок (примерно в 90% случаев так).
Потом уже нашёл уголь и тому подобное, пошёл чуть поглубже под землю, всё ок, но когда один раз выходил на поверхность, появился ещё один баг - был день, но клетки слева от входа в пещеру и дома так и остались чёрными, на игрока не реагируют (только на факелы, наверное). Потом я ушёл, а они пропали. Скриншоты:


После смерти персонажа ничего не происходит, труп персонажа исчезает, а камера всё равно имеет возможность двигаться влево-вправо-вниз и плавать, карабкаться вверх, если приблизиться к углу блока. Первый раз можно было даже ломать и ставить блоки, но потом ничего не получилось. Скриншоты, если интересно:

На последнем скриншоте: я после смерти построил столб в небо и залез на него. biggrin

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

За счёт бага с дверью я его убил, но меня добила летучая мышь. sad Впрочем, не надо было мне делать домик из земли на вершине холма. biggrin
Так вот, такие мощные монстры (которые могут легко ломать мешающие блоки и имеют кучу здоровья) будут очень вредить начинающему игроку, и их обычно скрывают от новичка, например, добавляя только в особые локации/карты/миры, либо создавая усложнённый режим карты (в Террарии, например, в сложном режиме мира, в который сможет перейти в одиночку только достаточно сильный игрок, появляются новые сложные монстры, в том числе - клоун, бросающий бомбы, которые, естественно, портят ландшафт и постройки игрока, но в простом режиме ничего такого нет). Так будет проще разобраться в игре новичку, а для продвинутого игрока появятся новые интересные и сложные монстры (а то скучно всё время убивать одних и тех же).

Цитата (triptix)
меню еще не готово

Можно было бы сделать стандартное Android-меню как временное, думаю, это проще, чем делать полноценное игровое...
Цитата (triptix)
+реализованы сохранение и загрузка состояния игры, правда не очень быстрая, и на
время сохранения (около 2с) если пользователь тыркает в экран, то андроид решает, что
приложение зависло. Как с этим бороться, не очень понятно.

У меня андроид не пишет, что приложение зависло.
Справиться можно, если сделать отдельный экран сохранения/загрузки с соответствующими надписями и анимациями, а процесс сохранения/загрузки производить в отдельном потоке, тогда и анимация будет воспроизводиться, и сохранение нормально идти.

Цитата (triptix)
Слишком сложно
Цитата (triptix)
Пусть у игрока будет одной проблемой больше

Баланс в игре - штука тонкая, надо бы всё сразу спланировать и рассчитать, прежде чем добавлять в игру, чтобы потом не пришлось много переделывать, упрощать/усложнять...

Цитата (triptix)
То есть, чтобы собрать кровь для простейшей аптечки, надо:
1 собрать песок
2 поставить печку (то есть добыть камни, которые первыми заклятьями не добываются, это первые сутки времени игры как минимум)
3 переплавить стекло (добыть уголь)
4 с колбочкой подойти к трупу и собрать кровь.
И только после этого получится аптечка. Слишком сложно, и на первых стадиях игры неприемлемо.
Цитата (triptix)
Разработано лечение, базируется на мясе, получаемом из нейтральных и агрессивных мобов
+сырое мясо можно жарить на печке, чтобы получить жареное мясо,
которое восстанавливает очень мало хп
+сырое мясо есть нельзя
+из сырого мяса, амулета и добавки готовим заклинания лечения, 5
уровней на 5 алтарях:
1 жареное мясо печка небольшое восстановление
2 с красным цветком каменный алтарь малая аптечка
3 с лианами золотой средняя аптечка
4 с папоротником алмазный большая аптечка
5 с адским кактусом адский огромная аптечка

Печка и труп нужны в обоих вариантах. Ты же сам сказал, что сырое мясо есть нельзя - придётся делать печку и искать уголь.
Песок я нашёл сразу же, пока искал место для домика и деревья. Копается он легко.
Уголь тоже нашёл быстро, он почему-то высоко залегает; в любом случае - можно ведь дерево жечь (или нельзя?).
В любом случае, "аптечки" игрок не должен делать в самом начале, но другие пути восстановления должны быть - типа мясо восстанавливает здоровье, но мало, или здоровье восстанавливается всё-таки, но довольно медленно (но можно пересидеть в домике пару игровых дней и вылечиться).
Цитата (triptix)
Если уж хочется собирать души или кровь, проще сделать специальное "высасывающее" заклинание.

А это не я предлагал, вообще-то. Это ты сам придумал. biggrin
Цитата (triptix)
Я думал, было бы неплохо вместо мяса собирать кровь, и из нее делать магию. Но как ее упаковывать, в лужи?


Цитата (triptix)
По поводу нефти, есть 2 варианта:
1. нефть используется как топливо для какого то транспорта (тележки, дирижабли), для ее переработки требуются специальные блоки перегонки, напрямик ее нельзя использовать. Нефть будет собираться специальным блоком, и от него перегоняться по трубам на переработку и запас к цистернам.
минусы: это все отдает каким то стимпанком, и не очень соответствует стилистике игры. Кроме того, проще перенести ее в ведре, чем тянуть трубы.

Вообще-то стимпанк - это если бы использовался, например, уголь в паровых машинах, а с нефтью - это уже скорее дизельпанк. Только эти термины обозначают значительно больше, чем просто преобладающий вид топлива в машинах. biggrin
Ну а если стилистике не соответствует - используй нефть по-своему, для каких-нибудь особых зелий и вообще магии...
А на счёт вёдер и труб можно поспорить. Если требуется всего пара вёдер - ладно, можно и так принести, но если требуется как можно больше нефти - будет удобнее проложить трубу, цистерну и поставить двигатель. Всё зависит от того, как будет использоваться нефть.
Цитата (triptix)
2. убираем нефть, вместо нее вставляем некую зеленую жидкость, типа энергия. Ее переносить нельзя. Обрабатываем ее точно так же, трубопроводом, но где использовать, если не будет механизмов?

Опять же - особые зелья и специальная магия, только непонятно, откуда эта зелёная жидкость взялась и почему её можно качать трубопроводом, если она типа энергия, то есть, наверняка, имеет какие-то особые свойства, а не просто жидкость. biggrin

Цитата (triptix)
5 идем добывать землю, она понадобится для составления заклятья раскопки ("земля 1").
5 блоков земли дают 50 заклятий. Эти заклятья служат для ускоренной добычи земельных
ресурсов, но главное, они позволят нам добыть каменный уголь и камень.

Но под землёй даже ночью чернота, так что было бы неплохо сжигать дерево и получать древесный уголь (особенно поможет, если вдруг окажется сложно найти уголь и пещер мало).


TimKruzДата: Воскресенье, 17 Февраля 2013, 23:07 | Сообщение # 210 | Тема: Астероид
старожил
Сейчас нет на сайте
Цитата (JSent)
Есть мнение, что осколки так и не были найдены, потому что метеорит был ледяной. Подтверждение этому - белый шлейф в небе.

Да ничего подобного, просто особо секретный проект - летающий медный тазик на газировке, перемещающийся не только в пространстве, но и во времени, поэтому люди с земли видели след наоборот - будто что-то падает, хотя на самом деле оно взлетает; а в том месте, где слышали взрыв - так это просто вторая бутылка газировки откупорилась (да, немного шумно получилось - была ошибка в расчёте резьбы у крышечки, вот и сорвало резко, а ведь планировали без по-тихому). Операция, однако, в целом прошла успешно, и в скором времени планируется запуск медного самовара на той же газировке: экипаж 100 человек, основная цель - полёт к центру Млечного Пути; по пути самовар продырявит Солнце и совершит газ-прыжок (мощный выхлоп газировкой, за счёт которого самовар протыкает пространство и выходит в подпространство, где, по расчётам, намного проще перемещаться на сверхсветовых скоростях, если использовать газировку и немного солнечной смеси).
Так что - спокойствие, только спокойствие. smile Всё под контролем. Наверное...


TimKruzДата: Суббота, 16 Февраля 2013, 20:49 | Сообщение # 211 | Тема: Создание Сайта-Блога с нуля
старожил
Сейчас нет на сайте
Цитата (vicu2010)
Как собрать эти части, чтобы на index_*name*.html выдавало все части вместе. Ну вы понели да?

Теоретически, можно было бы сделать и так, правда, я не знаю, какой веб-сервер такое умеет и на каком скриптовом языке с ним общаться. sad Можно, конечно, легко написать свой собственный веб-сервер, но ведь тебе нужно решение для уже существующих серверов...
Поэтому, на мой взгляд, проще сделать как index.php?page=номер-или-название, т.е. отправляем get-запрос php-скрипту, который генерирует требуемую страницу.
Заголовок и подвал страницы можно вывести командой @readfile('header.html'); и @readfile('bottom.html'); соответственно, или прикрепить командой include, если у тебя файлы header.html и bottom.html тоже будут на php написаны.

Цитата (vicu2010)
Это я сделал, чтобы в случае желания отредактировать одну из частей, не пришлось делать это во всех файлах сайта.

А я себе сделал всего один index.html, который включает в себя весь сайт (только index.css отдельно) и генерирует любые страницы, правда, внешние файлы всё равно есть, но их редактировать вручную не нужно, т.к. они самим index.html обрабатываются. Конечно, в огромной странице смешанного html+php чёрт ногу сломит, зато никаких лишних файлов. biggrin Можно ещё весь основной текст и куски html вынести в отдельные файлы, чтобы можно было редактировать дизайн и надписи отдельно от кода, тогда получится движок-в-одном-файле, который, в идеале, не нужно редактировать...
А собственно запрос страниц у меня выглядит так: html://example.com/?t=номер_раздела&p=номер_страницы&m=номер_материала&d=номер_действия, при чём переменные tpmd, в идеале, описывают любую страницу сайта и любой запрос пользователя...




Сообщение отредактировал TimKruz - Суббота, 16 Февраля 2013, 20:59
TimKruzДата: Суббота, 16 Февраля 2013, 12:06 | Сообщение # 212 | Тема: Мои вопросы по обучению на Delphi XE и помощь к созданию игр
старожил
Сейчас нет на сайте
Цитата (Александр5)
Ошибка системная вот тут

Ты, похоже, забыл инициализировать экземпляр класса, надо конструктор класса вызвать:
Код
Graphics1:=TCreate_Graphic.Create;
For i := 0 to 1 do begin
   Graphics1.OBJ_Stena[i]:=Tbitmap.Create;
end;

Дело в том, что конструктор класса, даже если он пустой, выполняет важную роль: выделяет память для статичных переменных экземпляра и возвращает указатель на выделенную память для экземпляра; значение этого указателя мы сохраняем в специальной переменной-указателе (собственно Graphics1), чтобы потом была возможность им пользоваться (если просто вызвать TCreate_Graphic.Create - то память выделится, т.е. будет создан экземпляр класса, но управлять мы им просто не сможем)... А деструктор высвобождает занятую память (после чего указатель становится недействительным). Подробнее - изучай работу с указателями (Pointer), это довольно сложная, но интересная тема. smile


TimKruzДата: Пятница, 15 Февраля 2013, 23:23 | Сообщение # 213 | Тема: "Элемент" (мобильная песочница) [2d]
старожил
Сейчас нет на сайте
Цитата (triptix)
Я думал, было бы неплохо вместо мяса собирать кровь, и из нее делать магию. Но как ее упаковывать, в лужи?
Зелья, да лучше чем заклинания. Правда их тоже надо во что то упаковывать.

Ну, например, в баночки-колбочки-бутылочки из стекла (они есть и в Майнкрафте, и в Террарии), стекло делается переплавкой песка, песок ищем под морем. Убиваем моба, подходим к трупу, собираем кровь в баночку. Собираем остальные ингредиенты, подходим к столу для зельеварения, бросаем ингредиенты в баночку и перемешиваем, подогреваем и пьём на здоровье. biggrin
Цитата (triptix)
автовосстановление обычно делают чтобы упростить игру.

А упрощают обычно игры на приставках и мобильных телефонах. smile На компьютере, например, можно горячие клавиши на ячейки быстрого доступа и конкретно использование зелья лечения поставить, или просто мышкой быстрее гонять, а вот на телефоне/планшете не особо быстро получится применить ту или иную вещь... Тот же майнкрафт - его очень сильно упростили (в смысле управления и сложности) в версии Pocket Edition...


TimKruzДата: Пятница, 15 Февраля 2013, 23:12 | Сообщение # 214 | Тема: Мои вопросы по обучению на Delphi XE и помощь к созданию игр
старожил
Сейчас нет на сайте
Цитата (Александр5)
Лучше строку шифровать и расшифровку слушай напиши мне шифровку и расшифровку или ссылку где про это пишут

Поищи сам в Яндексе, например. Типа "delphi шифрование текста".
Цитата (Александр5)
кстати непонемаю почему в делфи 5 не работает этот код

Хм... Сначала думал, что ты хочешь объявить запись без объявления типа (такое тоже возможно, только type не нужно писать), потом понял:
Код
type
   RObject_obj=record
     Kartinka:tbitmap;
     Names:string[20];
     typesPO:BOOLEAN;
     tormoz_procent:integer;
     BOOLEAN_OBJECT:boolean;
     TYPE_OBJECT:BYTE;
     STOP_PERSONAZ:BOOLEAN;
   end;
   TObect_obj=class(TObject)
     Object_obj1:RObject_obj;
   end;

Теоретически, можно вместо объявления RObject_obj сразу описание записи сделать, т.е. не описывать тип RObject_obj, но лучше всё-таки описывать так...


TimKruzДата: Пятница, 15 Февраля 2013, 13:53 | Сообщение # 215 | Тема: Мои вопросы по обучению на Delphi XE и помощь к созданию игр
старожил
Сейчас нет на сайте
Цитата (Александр5)
А что именно должно тут происходить
Цитата (Александр5)
что именно должно быть в конструкторах и в деструкторах

В самом простом случае (когда предок класса - TObject) - что угодно (а может не быть ничего вовсе). Обычно в конструкторе задают начальные значения переменным, выделяют память под динамические переменные (например, задают размеры динамических массивов), а в деструкторе, соответственно, освобождают память, которая занята динамическими переменными.
Вот, например, класс TPolygon - он описывает многоугольник, позволяет с ним работать:
Код
TModel:array of TPoint; //TModel - массив записей TPoint, которые обозначают точки (поля x,y:integer)
TPolygon=class
   polygon:TModel; //Собственно, массив вершин многоугольника
   S:^longword; //Для примера: указатель (pointer) на переменную
   constructor Create(n:word); //n - число вершин
   destructor Destroy;
end;
<...>
constructor TPolygon.Create;
begin
   SetLength(polygon,n); //Задаём размер массива
   new(s); //Выделяем память для переменной
end;

destructor TPolygon.Destroy;
begin
   //Удаляем массив
   polygon:=nil; //или SetLength(polygon,0) - не знаю, что правильнее
   dispose(s); //Высвобождаем память от переменной
end;

Здесь переменные и задание их размеров, выделение памяти чисто для примера - в конструкторе и деструкторе может вообще не быть никакого кода, тогда Create/Destroy наследуются от TObject, но ничего не делают (хотя вызывать их, естественно, обязательно - без них нельзя создать или уничтожить экземпляр класса).
А вот если наш класс - потомок какого-то особого класса (=class(чего-то там)), то мы можем либо полностью наследовать конструктор/деструктор, либо частично, либо полностью перезаписать его:
Код
TNewObject=class(TParentObject) //TNewObject - потомок TParentObject
   constructor Create;
end;
<...>
constructor TNewObject.Create;
begin
   <тут может быть наш код>

   inherited; //Эта команда вызывает код TParentObject.Create, если он на нужен
   //Её может и не быть - тогда код TParentObject.Create перезаписывается нашим

   <тут может быть наш код>
end;
//Точно так же можно сделать с Destroy

В принципе, эта команда используется как inherited ИмяМетодаПредка(аргументы);, а просто inherited; вызывает одноимённый метод класса-предка.

Цитата (Александр5)
странно я рекорд записываю таким способом
но он все равно не такой результат выходит

Ну у тебя там строка string, которая будет выглядеть в файле как простой текст, а вот параметры jizn, oruj и patron уже будут выглядеть как непонятные крякозябры. Правда, если, например, jizn=0, то в файле окажется два нулевых символа (которые, вроде бы, никак не отображаются блокнотом). То есть, попробуй забивать различные числа - получишь непонятные символы...
А чтобы строку string привести в нечитабельный вид - нужно её шифровать. Правда, тогда тебе придётся перед записью строку шифровать, а после чтения - расшифровывать, а если будешь шифровать весь файл целиком - придётся писать свои методы чтения/записи (т.к. read(fil,g) считает зашифрованные данные) или мудрить с алгоритмами дешифровки (т.е. расшифровывать записи уже после чтения через read(fil,g))...


TimKruzДата: Пятница, 15 Февраля 2013, 13:20 | Сообщение # 216 | Тема: "Элемент" (мобильная песочница) [2d]
старожил
Сейчас нет на сайте
Цитата (monstriozo)
Сейчас угадаю: Еще один клон Minecraft'a?

Ну ты экстрасенс просто. angry Уже раньше обсуждали. Да и в первом сообщении написано: "Какие есть похожие игры: Terraria"...
Цитата (triptix)
в основе игры - магия

Главное, магии должно быть не слишком много.
Цитата (triptix)
+добавлен моб огненный элементаль, швыряется огненными шарами, которые при попадании на сгораемую поверхность, поджигают ее. Спавнится в аду.

По картинке похож скорее на железного робота, чем на "огненного элементаля". По-моему, он должен выглядеть как огонь/магма в форме человечка...
Цитата (triptix)
игрок не должен таскать с собой миллиарды аптечек

В Террарии, например, здоровье само медленно восстанавливается (есть предметы для ускорения), так что лечебные зелья приходится использовать редко (в бою с боссами, когда слишком много мобов и т.п.)...
Цитата (triptix)
+сырое мясо есть нельзя

Что за бред? Можно было бы совсем мало здоровья восстанавливать и, с определённым шансом, накладывать эффект отравления...
Цитата (triptix)
+из сырого мяса, амулета и добавки готовим заклинания лечения

Заклинания лечения... wacko Уж лучше просто зелья, это привычнее и понятнее, а "заклинание" - это же, по сути, "магический" набор слов - как его можно сделать из мяса?.. Я понимаю, что хочется быть оригинальнее, но игра должна быть легко понятна даже начинающим игрокам...

triptix, когда уже будет демо-версия?


TimKruzДата: Пятница, 15 Февраля 2013, 02:40 | Сообщение # 217 | Тема: заражение вирусом
старожил
Сейчас нет на сайте
Я, наверное, зашёл на gcup, когда уже всё вылечили (днём), так что у меня Avast молчит (браузер Firefox с AdBlock Plus). Но теперь Яндекс записал gcup.ru как сайт, "представляющий угрозу бла-бла-бла", хотя, видимо, он сделал это значительно позже (странно)... sad

Цитата (arrow25)
вообще не пользуюсь анивирусами, и проблем не знаю.

Я какое-то время тоже не пользовался - я знаю, где велик шанс вирусы подхватить, а где всё должно быть чисто... Но нельзя быть полностью уверенным, да и просто напороться на рассадник вирусов в интернете легко, куча всяких рекламных редиректов и т.п.
Цитата (arrow25)
Я конечно понимаю что без него ни как у кого там нужные пароли хранятся, но вот половина кто отписался кроме как аккаунта в контакте с паролем дня рождения нету ни кого. да и то не факт.

Ну тут проблема не в паролях, на них пофиг - сменил и всё, не успеют воспользоваться (а у таких сложных штук, как WebMoney, дополнительная защита - типа СМС с кодом подтверждения транзакции/смены данных, или идентификация по отпечаткам пальцев). Другое дело - всякие там блокировщики, затрудняющие или пресекающие работу с компьютером, начиная от безобидных баннеров в пол-экрана и кончая троянами, полностью блокирующими ОС, или вирусы, просто так форматирующие жёсткий диск... И вообще, можно "железо" программно сломать... Так что лучше защититься от вирусов (снизить шанс заражения), чем потом маяться с невключающимся ПК...

Да, кстати, разве тебе нравится, когда какие-то неизвестные программы сами собой устанавливаются на твой компьютер, записываются в автозапуск и что-то делают?..


TimKruzДата: Четверг, 14 Февраля 2013, 17:27 | Сообщение # 218 | Тема: Мои вопросы по обучению на Delphi XE и помощь к созданию игр
старожил
Сейчас нет на сайте
Александр5, ты можешь выражаться яснее, что тебе нужно?
Цитата (Александр5)
как сделать класс

В самом общем виде простой класс выглядит так:
Код
type
TSomeClass=class({родитель класса, по умолчанию - }TObject)
   //описание переменных класса
   //описание процедур и функций класса, конструктор и деструктор
   constructor Create;
   destructor Destroy;
   //Тут ещё могут быть группы public/private и т.п., но тебе это не нужно
end;
//Когда напишешь названия процедур и функций в описании класса,
//нажми ctrl+shift+c и Delphi сама напишет шаблоны тел ниже, удобно

var SomeClass:TSomeClass; //экземпляр класса
//Экземпляр инициализируется командой ИмяЭкземпляра:=КлассЭкземпляра.Create;
//а удаляется либо через ИмяЭкземпляра.Destroy;, либо ИмяЭкземпляра.Free;
//(через Free безопаснее, т.к. Free проверяет существование экземпляра и
//вызывает Destroy только если удаление возможно)

{Тела процедур и функций класса в форме типа:
procedure TSomeClass.ИмяПроцедуры; - аргументы можно не переписывать
begin

end;}

constructor TSomeClass.Create;
begin
   //Твой код, выполняется один раз при создании экземпляра класса
end;

destructor TSomeClass.Destroy;
begin
   //Твой код, выполняется один раз при удалении экземпляра класса
end;

Как делать записи record сам знаешь.
Цитата (Александр5)
Помогите разобраться с класом чтобы использовать его для игры в нем должен быть рекорд а также файл с текстами игры запись должна записывать рекорд через класс

Ну ты просто хочешь, чтобы за тебя написали этот класс вместе с записью... Но при этом непонятно, что конкретно он должен записывать, а основные принципы я тебе раньше написал. Короче, изучай учебники по программированию, читай самоучители и руководства - там всё это есть, и очень подробно, так что, если будешь стараться понять и разобраться - обязательно во всём разберёшься и всё сам сможешь сделать.
Поверь, тебе будет полезнее разобраться самому, чем просить других написать тебе готовый код. smile

Цитата (Александр5)
в итоге в рекорде должны быть символы на подобие таких

Такие символы в блокноте отображаются тогда, когда в файле записаны какая-либо информация бинарном виде (например, числа integer в файле file of integer), т.е. там могут быть какие угодно байты, а не только те, которые соответствуют определённым символам-буквам.
Если же ты хочешь записывать текстовую информацию, которую нельзя прочитать обычным блокнотом (т.е. зашифровать текст) - ищи информацию о шифровании текста (можно взять для начала какой-нибудь простой тип шифра), ну или вообще статьи по криптографии...




Сообщение отредактировал TimKruz - Четверг, 14 Февраля 2013, 17:29
TimKruzДата: Среда, 13 Февраля 2013, 15:26 | Сообщение # 219 | Тема: UltraHTML Golden Edition
старожил
Сейчас нет на сайте
Цитата (Undead)
Я могу за 15 минут написать IDE для C# с подсветкой синтаксиса, сворачиванием блоков кода, автозавершением и прочими плюшками, которая будет компилировать код и сохранять в dll или exe.

Ммм, я тоже могу накидать на форму готовых компонентов (есть готовые поля ввода с подсветкой требуемого синтаксиса), которые умеют сворачиваться и автозавершать код "из коробки", и привязать к программке готовый компилятор кода (таких тоже полно для разных языков, свободно распространяются отдельно от IDE и могут быть подключены куда угодно).
Но это не считается, это готовые компоненты, а Danteo122 вроде бы сам всё делал, не используя супер-пупер-навороченных компонентов, только стандартные ("кнопка", "поле ввода", "простое многострочное поле ввода", "картинка" и "таймер"). Конечно, он фигню сделал, которую совершенно глупо пытаться продавать, но у него есть все шансы при желании и стремлении сделать из неё юзабельный продукт, достаточно оригинальный, чтобы распространять под своим названием и даже, возможно, продавать, а использование готовых супер-пупер компонентов накладывает обязательства сохранять копирайты, использование свободно распространяемых компиляторов - сохранять свободность лицензии получаемой IDE (т.е. не продавать; но это смотря какая лицензия компилятора). Ну и вообще, чем сложнее используемый готовый компонент - тем сложнее сделать что-то оригинальное, что-то изменить в нём, а штапованная программа обычно никому не нужна.
Цитата (Danteo122)
каждую милисекунду

Это ужас. surprised Сделай автосохранение отключаемой опцией, и чтобы можно было настроить интервал (например, 2-3 минуты). А если пользователь нажимает кнопку "тестировать" - сохранять один раз.


TimKruzДата: Среда, 13 Февраля 2013, 15:13 | Сообщение # 220 | Тема: UltraHTML Golden Edition
старожил
Сейчас нет на сайте
Цитата (Danteo122)
Уже есть, в утилитах посмотрите.

Так-с, посмотрим...
Ммм, в "JScript.exe" кроме кнопок "открыть" и "сохранить" и стандартного поля с текстом ещё что-нибудь есть?
"UltraHTML" у меня еле поместился на экране (экран 1280 пикселей в ширину) - было бы очень хорошо добавить функцию изменения размеров окна. Ну и вообще, длинное и низкое окно с редактором текста далеко слева - неудобно.
Редактор почему-то добавляет лишний перевод строки после каждой строки в файле, т.е. после каждой строчки лишняя пустая. wacko
Названия кнопок написаны сокращённо и непонятно - пока не нажмёшь, не поймёшь, что она означает. Нужно сделать встроенную справку, панель состояния (полоска внизу окна, на которой обычно выводится подсказка о наведённом компоненте или состояние выполнения процесса) и в некоторых местах всплывающие подсказки.
Сохранить можно только с помощью поля с текстом и кнопки "сохранить"? wacko
Кстати, я всегда думал, что "жирный текст" делается тегом <b>. Тег <strong> используется для "акцентирования текста; отображается браузерами как жирный текст", тогда как <b> предназначен именно для жирного текста.

Не знаю, что я не так нажал, но в итоге у меня UltraHTML завис и вырубился ("Прекращена работа программы...").
А, ещё если поле "введите имя файла" оставить пустым и нажать "сохранить" - программа опять вырубается ("Прекращена...").

Цитата (Danteo122)
Можно тестировать файл, для этого есть кнопка ТЕСТ.

Ясно, но она открывает файл в обычном браузере пользователя. Так я и просто кликнуть по файлу test.html могу, зачем мне эта кнопка. wink
Кстати, когда и сколько раз сохраняется test.html? Просто для больших файлов будет плохо сохранять копию после, например, каждого введённого символа (любого изменения). Иногда лучше не сохранять ничего, а потом только сохранить, особенно, если редактируется файл на, например, usb-флешке или удалённом сервере (т.е. сохранение будет длительным).


Поиск:

Все права сохранены. GcUp.ru © 2008-2025 Рейтинг