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

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

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2010, 14:49   #11
M0rf
Пользователь
 
Регистрация: 12.03.2010
Сообщений: 21
По умолчанию

Видимо придеться попробовать так. Меня смущаеттолько обилие булевских переменных (персонажей как минимум два) и то что их нужно обрабатывать одновременно. Ладно, как попробую отпишусь.
M0rf вне форума Ответить с цитированием
Старый 12.05.2010, 15:07   #12
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Можете создать структуру, в которой будете хранить все флаги, а потом каждому персонажу давать по такой структуре. Заодно и AI сможет "кнопки нажимать" просто меняя значения флагов.
А альтернатива одновременной обработке - последовательная обработка с пошаговым файтингом в итоге. Иначе никак.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 12.05.2010, 15:28   #13
mrChester
Я
Форумчанин
 
Аватар для mrChester
 
Регистрация: 24.04.2010
Сообщений: 693
По умолчанию

M0rf ты используешь в своей игре клеточные автоматы? Если да, то какой формы клетка?
Все персонажи вымышлены, все совпадения случайны.
Если жизнь игра, тогда я её разработчик ©.
mrChester вне форума Ответить с цитированием
Старый 13.05.2010, 01:20   #14
M0rf
Пользователь
 
Регистрация: 12.03.2010
Сообщений: 21
По умолчанию

сделал через булевские переменные. Мда, такое убожество еще поискать. Анимация проигрываеться не сразу - идет какае-то задержка, а когда она все таки начинает проигрываться хочеться плакать: бойцы достигают полной синхронности и анимация проигрываеться только одновременно. Чтобы 1-й боец раньше атаковать начал? Задержка, а потом они атакуют одновременно. Это если играют 2 персонажа. Для одного - вроде все нормально (есть небольшие задержки, правда). То есть такой вариант не решает проблему. Может есть какие-либо другие идеи? Сейчас многопоточность - моя главная и единственная проблемма.
M0rf вне форума Ответить с цитированием
Старый 13.05.2010, 01:26   #15
M0rf
Пользователь
 
Регистрация: 12.03.2010
Сообщений: 21
По умолчанию

Цитата:
Сообщение от mrChester Посмотреть сообщение
M0rf ты используешь в своей игре клеточные автоматы? Если да, то какой формы клетка?
Не использую. Я даже не понял, что ты имеешь ввиду.
M0rf вне форума Ответить с цитированием
Старый 13.05.2010, 06:06   #16
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Надо полагать, вы кинули на форму таймер и оставили в нем все как есть, то есть интервал равный 1000мс? Сделайте интервал хотя бы 100мс (10 кадров/с) или еще меньше и будет вам счастье!
А вообще - настоятельно рекомендую почитать темы в разделе "Создание и обсуждение игр" - там подавляющее большинство таких граблей описаны. Да и тема ваша в большей части к тому разделу относится, ибо вопрос про принципиальное построение схемы программы, а конкретные языковые средства - это мелочи.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 14.05.2010, 01:38   #17
M0rf
Пользователь
 
Регистрация: 12.03.2010
Сообщений: 21
По умолчанию

Я ,конечно, новичек в создании игр, но не настолько же. Скорость 40 мс. Да и то она влияет на скорость проигрывания анимации, а не на начало ее выполнения. Задержка идет именно в начале проигрывания. То есть, я нажал клавишу, пауза, где-то 0.5-1 сек и анимация проигрываеться. Но и это не главный недостаток. Главный: все анимации проигрываються синхронно. Бойцы синхронно ходят, бьют. Если для одного из бойцов нажать кнопку удара, а потом через 0.3-0.5 сек нажать для другого, то первый подождет и нанесет удар вместе со вторым. И это убивает всю концепцию фатинга.
M0rf вне форума Ответить с цитированием
Старый 14.05.2010, 08:41   #18
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

С задержкой - это вы явно там что-то намудрили, у меня никогда таких проблем не возникало. Покажите весь код, который может на нее влиять - посмотрим.
Цитата:
Главный: все анимации проигрываються синхронно. Бойцы синхронно ходят, бьют. Если для одного из бойцов нажать кнопку удара, а потом через 0.3-0.5 сек нажать для другого, то первый подождет и нанесет удар вместе со вторым.
Внимательнее читайте что я вам написал:
Цитата:
Можете создать структуру, в которой будете хранить все флаги, а потом каждому персонажу давать по такой структуре.
Код:
struct KeyFighterState
{
bool left, up, right, down;
bool jump;
bool strike, kick;
};

class Fighter
 {
 public:
 //...
 KeyFighterState Keys;
 private:
 //...
 };

Fighter Jedi, Sith;

войд фастколл KeyDown(/**/)
{
switch(Key)
 {
 case VK_LEFT: Sith.Keys.left = true; break;
 case VK_UP: Sith.Keys.up = true; break;
 case VK_RIGHT: Sith.Keys.right = true; break;
 case VK_DOWN: Sith.Keys.down = true; break;
 //...
 case 'a': case 'A': Jedi.Keys.left = true; break;
 case 'w': case 'W': Jedi.Keys.up = true; break;
 case 'd': case 'D': Jedi.Keys.right = true; break;
 case 's': case 'S': Jedi.Keys.down = true; break;
 //...
 }
}

войд фастколл KeyUp(/**/)
{
//То же самое, только вместо true - false
}

войд фастколл OnTimer(/**/)
{
if (Jedi.Keys.left && !Jedi.Keys.right)
 Jedi.SetVx(-5);
if (!Jedi.Keys.left && Jedi.Keys.right)
 Jedi.SetVx(5);
if (Jedi.Keys.up && !Jedi.Keys.down)
 Jedi.SetVy(-5);
if (!Jedi.Keys.up && Jedi.Keys.down)
 Jedi.SetVy(5);
//...
if (Sith.Keys.left && !Sith.Keys.right)
 Sith.SetVx(-5);
if (!Sith.Keys.left && Sith.Keys.right)
 Sith.SetVx(5);
if (Sith.Keys.up && !Sith.Keys.down)
 Sith.SetVy(-5);
if (!Sith.Keys.up && Sith.Keys.down)
 Sith.SetVy(5);
//...
Jedi.Action();
Sith.Action();
//...
}
Таким вот образом оба бойца действуют совершенно независимо друг от друга.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 15.05.2010, 01:07   #19
M0rf
Пользователь
 
Регистрация: 12.03.2010
Сообщений: 21
По умолчанию

Опробовал. Все отлично работает. Есть некоторые ошибки, но они решаемы (посижу на выходных). В принципе темку можно закрывать, проблема решена.
M0rf вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализация двух потоков, работа с буфером, механизм семафоров (С++ или Delphi) shoonya Помощь студентам 0 05.04.2010 14:08
Простая игра C++ Builder btf Помощь студентам 7 18.12.2009 11:14
Игра на с++ builder 6 gangrave C++ Builder 4 24.09.2009 18:05
Реализация функций синхронизации потоков. натка Помощь студентам 1 03.01.2008 15:26
Игра пазл на C++ Builder Damawoi C++ Builder 1 29.12.2007 19:33