|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
20.04.2008, 01:31 | #11 |
Пользователь
Регистрация: 18.04.2008
Сообщений: 17
|
Появилась идея.
Допустим хочу я соеденить А3, В1, В2 Делаю это таким образом: Нажимаю на кнопку >>> <Создать контакт между элементами> (потом появляються кнопки: <Создать дорожку>, <Создать контакты>, <Сохранить контакт>, <Стереть контакт>) Нажимаю кнопку <Создать дорожку> и соеденяю А3,В1 и В2 линиями После этого нажимаю кнопку <Создать контакты> рисую одним кликом контакт К1 После этого нажимаю кнопку <Сохранить контакт> и дорожка готова и записана структура в один RECORD (из динамической цепи которая состоит из указателей(pointers)) при этом логика сохраняетса отдельно короче примерно так все ЛЕВЕЛС буду хранить в типизированном файле Последний раз редактировалось KingArthur; 20.04.2008 в 01:47. |
21.04.2008, 13:40 | #12 |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
Можно и так, хотя если честно принцип не совсем ясен, но то что одним кликом - это хорошо, кнопок желательно делать поменьше а автоматизации побольше.
Несколько советов: Дорожку можно хранить как набор ключевых точек (конечные, повороты). Таким образом на хранение выше нарисованной дорожки понадобится шесть элементов типа TPoint, три конца, два поворота, одно разветвление , а программа уже по ним будет линии рисовать. Насчет игрового поля (логика): Вне зависимости от кол-ва элементов, и размеров матрицы 3х3, 5х5, или 10Х10, все на поле должно быть в фиксированных местах. Колобок может останавливаться в определенных точках, элементы находиться в опр. ячейках, основания рук также. Все поле представляет из себя как-бы разлинеенную поверхность, своего рода матрицу, где для каждого есть свое место, и в другое его не впихнешь, для счета и кол-ва жизней тоже. Если понять этот принцип, сделать игру будет намного легче. Графику с логикой (выше я описывал логику) лучше в коде не смешивать. К одной и той же логике можно будет всегда написать другую графику, что-то улучшить, на другой движок какой нибудь перенести, при этом не придется перелопачивать весь код, достаточно будет поменять вызов функции отрисовки.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог |
21.04.2008, 23:02 | #13 | |
Пользователь
Регистрация: 18.04.2008
Сообщений: 17
|
спасибо за советы я примерно так и собираюсь сделать
Цитата:
Кстати как бы ты сделал локический формат уровня? Ведь нужна еще определенная последовательность переменных величин (VAR) Kontakt.jpg для самой логики я написал бы так: A3:=A1 AND A2; B1:=A3; B2:=A3; B3:=B1 AND B2; Но чтобы прога создала этот код сама при моих действий мишки, нужно немного поработать над алгоритмом. Ведь здесь последовательность переменных величин играет большую роль. для [A3:=A1 AND A2] и [B3:=B1 AND B2] я могу уже за ранее написать функции но остальное тяжелее. здесь я думаю нужно связывать переменные величины в зависимости их состояния. допустим в RECORDE величины B1 стоит IN а в A3 стоит что это OUT. После того как я соеденю мышкой B1 c A3 или A3 c B1 то прога сама поймет что B1:=A3 (благодаря IN и OUT знакам). Но если схема большая и все соеденено запутаннее, то это реализовать тяжелее. Может я думаю слишком сложно и эту проблему можно легко решить? sorry если мой русский не понятен. я програморование итд изучал в германие. поэтому незнаю некоторых слов. да и на русской клаве только недавно начал писать. вес этот техт я написал за 35минут. спасибо за внимание и советы Последний раз редактировалось KingArthur; 22.04.2008 в 01:09. |
|
22.04.2008, 08:45 | #14 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
На случай, если не заметили похожая тема
http://www.programmersforum.ru/showthread.php?t=16704 По вопросу. Изменение состояния должно повлечь рекурсивный обход всех связанных узлов. Нужно только следить чтобы не было зацикливания. Еще одна проблема. Элементы И-НЕ можно соединить так, что получится генератор. Здесь нужно будет решить - будет ли программа работать с такими схемами или их просто можно игнорировать. |
22.04.2008, 10:54 | #15 | ||
Пользователь
Регистрация: 18.04.2008
Сообщений: 17
|
Цитата:
Цитата:
например именно в этом порядке: A3:=A1 AND A2; B1:=A3; B2:=A3; B3:=B1 AND B2; |
||
22.04.2008, 11:37 | #16 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
Да нет, по-моему, и я о том же. Отбросим ООП. В record храним еще и вычисленные ранее значения 0/1 для всех контактов. Они уже установлены при загрузке очередного уровня или вычисляются при загрузке по известным входам (признак IN для несоединенных контактов). Допустим, как в примере, мы соединяем A3 с B1 и B2. Значение в A1 уже известно. Изменяется B1 - пересчитывается B3, и так далее - для всех связанных узлов. Т.е. расчет начинается с узла, в котором произошло изменение уровня при очередном действии игрока.
Последний раз редактировалось alexBlack; 22.04.2008 в 11:43. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Игра "Ghost Recon Advanced Warfighter 1"(GRAW) | Air | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 0 | 27.07.2008 08:07 |
[Delphi] Игра "Угадай число" | Bomber | Помощь студентам | 15 | 05.06.2008 09:34 |
Игра "ЛОГИКА" (в Delphi) | KingArthur | Помощь студентам | 5 | 18.04.2008 19:12 |
Игра "четный" "нечетный" | bigcat | Помощь студентам | 1 | 01.03.2008 00:24 |