RS Game Maker Community
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

 
Расширенный поиск
  Главная  Форум   Вики Блоги FAQ Игры Статьи Примеры Войти Регистрация  
Вики
Все желающие приглашаются редактировать вики. Можете писать о своих (или чужих) играх, размещать туториалы, постить статьи - главное навесить категорию.
Страниц: 1 2 3 4 5 ... 45   Вниз
  Печать  
Создание компьютерной "карточной настолки"
0 Пользователей и 2 Гостей смотрят эту тему.
OneFate();
Ветеран форума
*****

Репутация: 54
Offline Offline

Награды:
Легенда сайта
Сообщений: 1 024


06 Июля 2010 в 22:24
Оригинальный стартовый пост(Июля 06, 2010, 21:24):
Всем привет. Задался идеей перенести одну из существующих настолок (карточную) в компьютерный вариант. Для этой цели выбрал GM, до этого вобще не знал, что бывают такие мощные конструкторы.

Основная проблема проблема - это работа с гексами (хотя гексовые настолки - самые лучшие, имхо).

Если кто то может тут посоветовать дельное - буду очень рад!

Так же по-скольку еще новичок в этом деле - возникает много вопросов  :(

Вот скрин текущего варианта: http://s54.radikal.ru/i145/1007/32/2c7174355ae6.jpg

Из ин-фейcа тут пока только наброски, сделанные на скорую руку.

Уже реализовано: выделение и показ состава отряда выделенной фишки, передвижение фишек. Определение занятости соседних гексов пока дорабатывается.
Остается реализовать: организовать инициализацию боя, и сам бой. В дальнейшен добавить возможность формировать составы отрядов перед игрой, и доделать игру под 4х игроков.

ЗЫ Любым советам буду очень рад. Очень надеюсь  на небольшую помощь новичку.
 
Авторские права не нарушены, использую демо версию, распространявшуюся раньше бесплатно.
Сайт оригинала - http://www.dictatorcontrol.ru/
Любимая настолка детства!

UPD! (23 августа 2010): делаю никому не нужного диктатора > полтора месяца, никому не нужного по тому, что настольщики любят "живые' настолки, а сетевого инфейса у диктатора пока нет, так как меня пугают, что это сверх сложно...

Но тем не менее, пока я делал то, что мне было интересно, GM подосвоил хорошо немного, хотя все равно пока нуб.

В текущий версии все не плохо уже в принципе, вот только нужно доработать еще некоторые способности карт, и много мелочей еще, помимо бота и сетев-игры...
Вот несколько скринов ,позже еще выложу версию 0.6, более менее рабочую) если канечно кому интересно...
1. http://s39.radikal.ru/i083/1008/e4/26ab922bd955.jpg
2. http://s59.radikal.ru/i166/1008/bf/40d3ad99d4f2.jpg
3. http://s42.radikal.ru/i097/1008/aa/6ebc6b112bcc.jpg
4. http://s05.radikal.ru/i178/1008/50/b0fc015ff187.jpg
5. http://s61.radikal.ru/i173/1008/34/61afc5f5d0e3.jpg
6. http://s43.radikal.ru/i099/1008/7d/91a4a622eee2.jpg
7. http://s39.radikal.ru/i084/1008/59/1798b74d74b4.jpg - не дорисованная комната;

Хотя там много чего не дорисовано, последнее время только движком занимался, и мулион ошибок правил  :D

PS: Level Up!!!  :yahoo:
Последнее редактирование: 24 Августа 2010 в 15:58 от OneFate
 
OneFate();
Ветеран форума
*****

Репутация: 54
Offline Offline

Награды:
Легенда сайта
Сообщений: 1 024


Ответ № 1 06 Июля 2010 в 22:32
Сейчас мучаюсь вот с такой проблемой:
По нажатию на фишку, в шаге (step)  выполняется 6 условий, для проверки 6 соседних гексов для нажатой фишки. В зависимости от этого соседние гексы должны подсвечиватся объектом obj1 если пусты, не подсвечиватся если рядом дружественная фишка и подсвечиватся объектом obj2 если рядом вражеский отряд.
вот примерный скрипт:

if(instance_position(x,y-41,o_checked_1)!=noone){   // 1 из 6 проверок, проверяется первый соседний гекс, когда фишка выделена.
if (рядом есть объекты obj3-obj10) (ну например))
{выяснить какой объект рядом и в зависимости от этого дальше или не подсвечивать гекс или "подсветить" 1 из 2 объектов}

Я пытался организовать это условие, но даже с 6 фишками и объектом цеха (2 игрока) - получается очень массивно у меня ((

Никто не поможет организовать такую проверку ?  :hmm:
Mikozoid
Младший администратор
Завсегдатай
******

Репутация: 196
Offline Offline

Награды:
Легенда сайта
Сообщений: 996


(<

Ответ № 2 06 Июля 2010 в 23:02
Используй parent'ы, всем союзным фишкам - один parent, всем враждебным - другой. Проверок получится всего 2 на каждую сторону.
Советую еще для поля все-таки сделать массив клеток, иначе сложно дорабатывать будет потом. Для гексового поля можно использовать обычный двухмерный массив, для клетки с координатами (x,y) соседними будут (x+1,y)(x+1,y+1)(x,y+1)(x-1,y)(x-1,y-1)(x,y-1)

OneFate();
Ветеран форума
*****

Репутация: 54
Offline Offline

Награды:
Легенда сайта
Сообщений: 1 024


Ответ № 3 06 Июля 2010 в 23:45
Используй parent'ы, всем союзным фишкам - один parent, всем враждебным - другой. Проверок получится всего 2 на каждую сторону.
Советую еще для поля все-таки сделать массив клеток, иначе сложно дорабатывать будет потом. Для гексового поля можно использовать обычный двухмерный массив, для клетки с координатами (x,y) соседними будут (x+1,y)(x+1,y+1)(x,y+1)(x-1,y)(x-1,y-1)(x,y-1)

Хм, тогда попробую разобратся с парентами.

А насчет массива - координаты гексов да просчитал, и пока перечитывал много статей понял что мне там массивы нужны, но вот пока с ними не очень дружу. (раньше проходили это, но тема вялая была, никто же нам не говорил что это потом ТАК потребуется  :-[ )

Массив создам - а вот как потом обращаться и работать через массив уже - без понятия (
N_hound
Ветеран форума
*****

Репутация: 333
Offline Offline

Награды:
За перевод справки Game Maker 8Легенда сайта
Сообщений: 1 217


Striped Stockings

Ответ № 4 06 Июля 2010 в 23:46
N_hound, небольшая неувязка - по нажатию на объект (напрм obj1), я хочу проверить всего 1 соседний объект , который находится радом с нажатым на координатах (obj1.x+n,obj1.y+m,obj1). НО! на этих координатах может быть 2 объекта с одинаковыми координатами!
Блин, dedok1965 ты же сам  сказал: любой объект, надо было четко сказать, шо там должен быть объект obj1 c depth больше 9! Сам запутал, сам же еще и накричал! :D

Перенесите тему в "Вопросы и Ответы по Game Maker". Автор ошибся разделом.
А мне кажется, что надо в "Проекты в разработке переносить"... :-\

По нажатию на фишку, в шаге (step)  выполняется 6 условий, для проверки 6 соседних гексов для нажатой фишки. В зависимости от этого соседние гексы должны подсвечиватся объектом obj1 если пусты, не подсвечиватся если рядом дружественная фишка и подсвечиватся объектом obj2 если рядом вражеский отряд.
Можно подробнее, рядом или на соседней фишке?

На правах человека-оффтопа, я, отменяю вашу грамматику, и, устанавливаю, свою собственную.
OneFate();
Ветеран форума
*****

Репутация: 54
Offline Offline

Награды:
Легенда сайта
Сообщений: 1 024


Ответ № 5 06 Июля 2010 в 23:54
Блин, dedok1965 ты же сам  сказал: любой объект, надо было четко сказать, шо там должен быть объект obj1 c depth больше 9! Сам запутал, сам же еще и накричал! :D

Извеняй  :(  просто под любым я имел ввиду любой , какой я выберу.



По нажатию на фишку, в шаге (step)  выполняется 6 условий, для проверки 6 соседних гексов для нажатой фишки. В зависимости от этого соседние гексы должны подсвечиватся объектом obj1 если пусты, не подсвечиватся если рядом дружественная фишка и подсвечиватся объектом obj2 если рядом вражеский отряд.
Можно подробнее, рядом или на соседней фишке?

вот 1 из 6 проверок: if(instance_position(x,y-41,o_checked_1)!=noone){   т е проверяется соседний по отношению к выделенной фишке ( объект o_checked_1) гекс, и дальше уже должно быть условие дополнительной проверки этого гекса на объекты obj1-obj6 + obj7 (фишка цеха).  Я написал 1 скрипт - но он массивный вышел, с ним только путатся (
OneFate();
Ветеран форума
*****

Репутация: 54
Offline Offline

Награды:
Легенда сайта
Сообщений: 1 024


Ответ № 6 06 Июля 2010 в 23:58
Используй parent'ы, всем союзным фишкам - один parent, всем враждебным - другой. Проверок получится всего 2 на каждую сторону.

Попробывал паренты. Как я понял в данной моей реализации они не подойдут (скрипт же они копируют из родителя?) а там при нажатие на фишку ей присваивается переменная-индефикатор, показывающая что именно я выделил. 

Или их как то еще можно настроить?
N_hound
Ветеран форума
*****

Репутация: 333
Offline Offline

Награды:
За перевод справки Game Maker 8Легенда сайта
Сообщений: 1 217


Striped Stockings

Ответ № 7 07 Июля 2010 в 00:09

Правильно я понял? :crazy: Токо я забыл на красных F нарисовать...

Попробывал паренты. Как я понял в данной моей реализации они не подойдут (скрипт же они копируют из родителя?) а там при нажатие на фишку ей присваивается переменная-индефикатор, показывающая что именно я выделил.
Они копируют скрипт из родителя, только если в наследнике не задано такое событие.

На правах человека-оффтопа, я, отменяю вашу грамматику, и, устанавливаю, свою собственную.
OneFate();
Ветеран форума
*****

Репутация: 54
Offline Offline

Награды:
Легенда сайта
Сообщений: 1 024


Ответ № 8 07 Июля 2010 в 00:43

Правильно я понял? :crazy: Токо я забыл на красных F нарисовать...

Попробывал паренты. Как я понял в данной моей реализации они не подойдут (скрипт же они копируют из родителя?) а там при нажатие на фишку ей присваивается переменная-индефикатор, показывающая что именно я выделил.
Они копируют скрипт из родителя, только если в наследнике не задано такое событие.

Совершенно верно понял!!   :yahoo:
А насчет родителя - что я про него читал, понял что не подойдет мне.  В каждой фишке - скрипт впринципе одинаковый, за исключение того, что при нажатие на нее двум глобальным переменным присваиваются два объекта еще (а дальше уже использую эти переменные, т е в зависимости от их значения строится скрипт).
N_hound
Ветеран форума
*****

Репутация: 333
Offline Offline

Награды:
За перевод справки Game Maker 8Легенда сайта
Сообщений: 1 217


Striped Stockings

Ответ № 9 07 Июля 2010 в 00:57
Вроде какбы так:
//BEGIN
temp_cell=instance_place(x,y-41,o_checked_1);
if(temp_cell!=noone)
{
if(instance_place(x,y-41,[color=red]PARENT_ENEMY[/color]))
{
temp_cell.image_blend=c_red;
}
else if(instance_place(x,y-41,[color=green]PARENT_FRIEND[/color]))
{
temp_cell.image_blend=c_green;
}
else
{
temp_cell.image_blend=c_white;
}
}
//END
//...здесь остальные проверки, так же скопировать с бегина по енд, токо с другими координатами
Я думаю, что не стоит клетки объектами подсвечивать, поэтому написал через имаге_бленд, но лучше просто у клетки спрайт менять: temp_cell.sprite_index=spr_with_enemy, например.
А лучше скинь весь исходник ато ничего непонятно, как он устроен... :o

А с парентами можно так поступить:

На правах человека-оффтопа, я, отменяю вашу грамматику, и, устанавливаю, свою собственную.
OneFate();
Ветеран форума
*****

Репутация: 54
Offline Offline

Награды:
Легенда сайта
Сообщений: 1 024


Ответ № 10 07 Июля 2010 в 01:09
Там прикол в том, что подсвечивать надо и двумя объектами , так как при клике на первом объекте-подсветке - я перемешаюсь, а на при клике на второй объект-подсветку - нападаю на врага (так как создается он при условии что враг рядом), ну хотя второй не так важен уже, можно убарть а вот перевый нет, за счет него перемещение организовано.


Как выложить исходник? на форум не выкладывается  :(  могу на мыло скинуть. Да и работаю я с GM 8
N_hound
Ветеран форума
*****

Репутация: 333
Offline Offline

Награды:
За перевод справки Game Maker 8Легенда сайта
Сообщений: 1 217


Striped Stockings

Ответ № 11 07 Июля 2010 в 01:16
Как выложить исходник? на форум не выкладывается  :(   могу на мыло скинуть. Да и работаю я с GM 8
Да я тоже, и вроде практически все на ГМ8 перешли...  ;)
Можно залить на http://zalil.ru, или на почту кинь тогда...

На правах человека-оффтопа, я, отменяю вашу грамматику, и, устанавливаю, свою собственную.
OneFate();
Ветеран форума
*****

Репутация: 54
Offline Offline

Награды:
Легенда сайта
Сообщений: 1 024


Ответ № 12 07 Июля 2010 в 01:23
Исходник, все лишнее постарался вырезать, смотри -  http://slil.ru/29438023
OneFate();
Ветеран форума
*****

Репутация: 54
Offline Offline

Награды:
Легенда сайта
Сообщений: 1 024


Ответ № 13 07 Июля 2010 в 02:11
Шикарно!! карты положил в массив, и сделал цикл отрисовки карт отряда в углу (см. скриншот), всего 3 строки - зато в зависимости от нажатого отряда рисуются карты свходящие в его состав! Блин первый мой "правильный" короткий и хитрый скрипт ))  и даже с массивом ))

+ переработал скрипт фишек - теперь можно юзать их по системе Parent-Child.  наверно ) но почти весь скрипт теперь точно можно вызывать )

под ночь голова варит ))



Так ну а насчет Парантов - сделал я через call event - теперь если выделена 1 фишка и при этом выделить другую - то спрайт предыдуще-выбранной заменяется на спрайт родителя...  и когда фишкой пойдешь - в этом ходу ход завершают все дочерние фишки...


Пара вопросов возникло...  1. Если я делаю игру с расчетом на разрешение 1280х1024, как она отмаштабируется, если у пользователя монитор 1024х768 ?
2. В GM пропала функция выделения кода разными цветами... никто не знает как решить ?
Последнее редактирование: 07 Июля 2010 в 03:55 от dedok1965
FeerZlay
Активный участник
**

Репутация: 35
Offline Offline

Сообщений: 200


Ответ № 14 07 Июля 2010 в 11:24
Пара вопросов возникло...  1. Если я делаю игру с расчетом на разрешение 1280х1024, как она отмаштабируется, если у пользователя монитор 1024х768 ?
2. В GM пропала функция выделения кода разными цветами... никто не знает как решить ?
1) В окне должно нормально работать, а вот на полный экран... Попробуй себе понизь разрешение и посмотри, что будет  ;)
2) Не знаю насчет 8-й версии, но в 7-й на F12 влк/выкл
Райдо
Старожил
******

Репутация: 89
Offline Offline

Награды:
Легенда сайта
Сообщений: 2 636


Ответ № 15 07 Июля 2010 в 12:05
Надо включить в скрипты функции, понимающие динамический размер окна так, чтобы любое разрешение работало как следует, а вот игру надо делать с рассчётом на разрешение "поменьше", так что игра должна играться хорошо на разрешении 800х600, или даже 640х480.

OneFate();
Ветеран форума
*****

Репутация: 54
Offline Offline

Награды:
Легенда сайта
Сообщений: 1 024


Ответ № 16 07 Июля 2010 в 13:20
1) В окне должно нормально работать, а вот на полный экран... Попробуй себе понизь разрешение и посмотри, что будет  ;)

В том то и дело, у меня 1680х1050...  ну да, хочется чтобы игра красиво смотрелась и на высоком и на низком  :-[
Райдо
Старожил
******

Репутация: 89
Offline Offline

Награды:
Легенда сайта
Сообщений: 2 636


Ответ № 17 07 Июля 2010 в 13:37
Вот примерно поэтому нельзя затачивать интерфейс под определённое разрешение/соотношение сторон.

OneFate();
Ветеран форума
*****

Репутация: 54
Offline Offline

Награды:
Легенда сайта
Сообщений: 1 024


Ответ № 18 07 Июля 2010 в 13:40
Вот примерно поэтому нельзя затачивать интерфейс под определённое разрешение/соотношение сторон.

Тогда я возьму разрешение 1280х960. Как бы самое то и аспект такой же как и у 1024х768 - тогда надеюсь отмаштабирует (уменьшит) как надо ?
Райдо
Старожил
******

Репутация: 89
Offline Offline

Награды:
Легенда сайта
Сообщений: 2 636


Ответ № 19 07 Июля 2010 в 13:43
Нет. Размер окна должен быть изменяемым; используй функции window_get_height() и window_get_width() чтобы следить за размером окна.

Страниц: 1 2 3 4 5 ... 45   Вверх
  Печать  
 
Перейти в:  

RSGMC (gmakers.ru) © 2007—2017
Счётчик–@Mail.ru