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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2008, 01:31   #11
KingArthur
Пользователь
 
Регистрация: 18.04.2008
Сообщений: 17
По умолчанию

Появилась идея.

Допустим хочу я соеденить А3, В1, В2

Делаю это таким образом:




Нажимаю на кнопку >>> <Создать контакт между элементами>

(потом появляються кнопки: <Создать дорожку>, <Создать контакты>, <Сохранить контакт>, <Стереть контакт>)


Нажимаю кнопку <Создать дорожку> и соеденяю А3,В1 и В2 линиями

После этого нажимаю кнопку <Создать контакты> рисую одним кликом контакт К1

После этого нажимаю кнопку <Сохранить контакт> и дорожка готова и записана структура в один

RECORD (из динамической цепи которая состоит из указателей(pointers))

при этом логика сохраняетса отдельно

короче примерно так

все ЛЕВЕЛС буду хранить в типизированном файле

Последний раз редактировалось KingArthur; 20.04.2008 в 01:47.
KingArthur вне форума Ответить с цитированием
Старый 21.04.2008, 13:40   #12
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 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)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 21.04.2008, 23:02   #13
KingArthur
Пользователь
 
Регистрация: 18.04.2008
Сообщений: 17
Смех

спасибо за советы я примерно так и собираюсь сделать

Цитата:
Сообщение от mutabor Посмотреть сообщение
Графику с логикой (выше я описывал логику) лучше в коде не смешивать. К одной и той же логике можно будет всегда написать другую графику, что-то улучшить, на другой движок какой нибудь перенести, при этом не придется перелопачивать весь код, достаточно будет поменять вызов функции отрисовки.
Ты имеешь в виду что мне нужно использовать принцип модуляризации. Так и сделаю. А если так не сделаю и все в один UNIT смешаю, то этот проэкт доценты даже смотреть не будут.

Кстати как бы ты сделал локический формат уровня?

Ведь нужна еще определенная последовательность переменных величин (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.
KingArthur вне форума Ответить с цитированием
Старый 22.04.2008, 08:45   #14
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

На случай, если не заметили похожая тема

http://www.programmersforum.ru/showthread.php?t=16704

По вопросу. Изменение состояния должно повлечь рекурсивный обход всех связанных узлов. Нужно только следить чтобы не было зацикливания.

Еще одна проблема. Элементы И-НЕ можно соединить так, что получится генератор. Здесь нужно будет решить - будет ли программа работать с такими схемами или их просто можно игнорировать.
alexBlack вне форума Ответить с цитированием
Старый 22.04.2008, 10:54   #15
KingArthur
Пользователь
 
Регистрация: 18.04.2008
Сообщений: 17
По умолчанию

Цитата:
Сообщение от alexBlack Посмотреть сообщение
На случай, если не заметили похожая тема
http://www.programmersforum.ru/showthread.php?t=16704
ага заметил. только если я не ошибаюсь там обьекториентированный подход. обьекториентированние мне в моем проэкте использовать запрещенно

Цитата:
Сообщение от alexBlack Посмотреть сообщение
По вопросу. Изменение состояния должно повлечь рекурсивный обход всех связанных узлов. Нужно только следить чтобы не было зацикливания.
Мне кажеться ты меня не правильно понял. Основная проблема заключаеться в порядке действий. допустим прога должна знать откуда именно начинать зачислять переменные величины.
например именно в этом порядке:

A3:=A1 AND A2;
B1:=A3;
B2:=A3;
B3:=B1 AND B2;
KingArthur вне форума Ответить с цитированием
Старый 22.04.2008, 11:37   #16
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Цитата:
Сообщение от KingArthur Посмотреть сообщение
Мне кажеться ты меня не правильно понял. Основная проблема заключаеться в порядке действий. допустим прога должна знать откуда именно начинать зачислять переменные величины.
например именно в этом порядке:

A3:=A1 AND A2;
B1:=A3;
B2:=A3;
B3:=B1 AND B2;
Да нет, по-моему, и я о том же. Отбросим ООП. В record храним еще и вычисленные ранее значения 0/1 для всех контактов. Они уже установлены при загрузке очередного уровня или вычисляются при загрузке по известным входам (признак IN для несоединенных контактов). Допустим, как в примере, мы соединяем A3 с B1 и B2. Значение в A1 уже известно. Изменяется B1 - пересчитывается B3, и так далее - для всех связанных узлов. Т.е. расчет начинается с узла, в котором произошло изменение уровня при очередном действии игрока.

Последний раз редактировалось alexBlack; 22.04.2008 в 11:43.
alexBlack вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Игра "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