_KO_
Участник
  
Репутация: 9
Offline
Пол: 
API: 8.0 Pro
Сообщений: 187
Залипаю..
|
 |
« : Январь 23, 2011, 18:12:44 » |
|
у меня есть 6 объектов(объект1) разного типа и еще 6 объектов(объект2), каждый определенного типа. объект2 убивает объект1 только, если объект1 такого же типа. Ну и сам вопрос: допустим у меня осталось два объекта(объект1) и три объекта(объект2), но не у одного из них не совпадает тип. как в таком случае закончить игру?
|
|
|
Записан
|
|
|
|
Hummer
scio me nihil scire
GM Pro user
Репутация: 335
Offline
Пол:  Награды:  ![За постоянность! [100 дней на форуме] За постоянность! [100 дней на форуме]](https://forum.hellroom.ru/awards/79b1a4915bff7098a4a1984ad370be2c_hellroomforum_time_bronze.gif) ![За лояльность! [+300 репутации] За лояльность! [+300 репутации]](https://forum.hellroom.ru/awards/8ff7443ce508760cfbf715910b3eb0b3_hellroomforum_good_copper.gif)  
API: Game Maker 8.0 Pro
Деятельность: GML, С++, OpenGL, Java. Бывший Директор бывшей школы GML
Сообщений: 2573
|
 |
« Ответ #1 : Январь 23, 2011, 18:23:39 » |
|
Если у тебя одинаковые объекты, то как могут быть разные типы
|
|
|
Записан
|
Есть вещи, которые нельзя объяснить. Для всего остального есть Справка Рандом-рандом-рандомище (с)  C++ & OpenGL
|
|
|
_KO_
Участник
  
Репутация: 9
Offline
Пол: 
API: 8.0 Pro
Сообщений: 187
Залипаю..
|
 |
« Ответ #2 : Январь 23, 2011, 18:26:38 » |
|
объекты разные, каждый своего типа простоя его так в скобках назвал, чтобы описать ситуацию покороче
|
|
|
Записан
|
|
|
|
DeatHSoul
GM Pro user
Репутация: 236
Offline
Пол:  Награды: ![За постоянность! [50 дней на форуме] За постоянность! [50 дней на форуме]](https://forum.hellroom.ru/awards/d09ba76b977b84fd4f5dcfae1f2918ff_hellroomforum_time_copper.gif)  ![За лояльность! [+150 репутации] За лояльность! [+150 репутации]](https://forum.hellroom.ru/awards/d3334d4fd3e3124bd7ba2ce29fab5c8a_hellroomforum_good_tin.gif)  
API: GameMaker Studio Standard
Сообщений: 478
|
 |
« Ответ #3 : Январь 23, 2011, 18:39:19 » |
|
Опиши на примере, что-то не совсем понятно, что значит "закончить игру". Может, когда у объектов не осталось соперников - считать, что игра закончена?
|
|
|
Записан
|
|
|
|
_KO_
Участник
  
Репутация: 9
Offline
Пол: 
API: 8.0 Pro
Сообщений: 187
Залипаю..
|
 |
« Ответ #4 : Январь 23, 2011, 19:24:36 » |
|
ну типа объект2 должен убить объект1, но если объект 1 не кому убивать(тоесть по типу не похожи) и больше таких объектов(объект2) быть не может(объект2 появляется после уничтожения объекта1 одного того же типа), то игра заканчивается
|
|
|
Записан
|
|
|
|
S_Kleer
|
 |
« Ответ #5 : Январь 23, 2011, 19:28:42 » |
|
Тебе надо, чтобы объект 1 убивал все объекты 2 и игра закончится?
|
|
|
Записан
|
Коты - Мирители
|
|
|
_KO_
Участник
  
Репутация: 9
Offline
Пол: 
API: 8.0 Pro
Сообщений: 187
Залипаю..
|
 |
« Ответ #6 : Январь 23, 2011, 19:52:41 » |
|
как бы объяснить.. на примере смайликов) есть у меня вот эти объекты  :( ;)  ;D, их могут убить объекты  :( ;)  ;D соответственно. Сначала есть только этот объект  он убивает себе подобный  а из него выподает любой другой(допустим этот  ) и так они размножаются и убивают оставшиеся объекты. но объекты, которые убивают, могут умереть, а объектов, которых нужно убить, ограниченное количество. допустим ситуация: кого нужно убить:  :( ;), а убийцы есть только  ;D, все, это конец они друг другу не подходят! вот тут то и надо закончить игру
|
|
|
Записан
|
|
|
|
S_Kleer
|
 |
« Ответ #7 : Январь 23, 2011, 19:54:29 » |
|
Ооо. Сейчас подумаю, как это сделать. Добавлено: Январь 23, 2011, 20:05:47 В моём примере это длится бесконечно. ::) P.S. Я не делал, чтобы игра завершалась.
|
|
|
Записан
|
Коты - Мирители
|
|
|
_KO_
Участник
  
Репутация: 9
Offline
Пол: 
API: 8.0 Pro
Сообщений: 187
Залипаю..
|
 |
« Ответ #8 : Январь 23, 2011, 20:11:13 » |
|
убийцы не умирают при попадании в жертву, но после смерти жертвы появляется новый убийца,убийцы могут умереть упав(у меня именно так), а жертв ограниченное число, поэтому просто может не остаться пар
Добавлено: Январь 24, 2011, 17:00:07 наверно это можно сделать через переменные, но уж слишком много вариантов писать помогите плиз, плюсану
|
|
|
Записан
|
|
|
|
Hummer
scio me nihil scire
GM Pro user
Репутация: 335
Offline
Пол:  Награды:  ![За постоянность! [100 дней на форуме] За постоянность! [100 дней на форуме]](https://forum.hellroom.ru/awards/79b1a4915bff7098a4a1984ad370be2c_hellroomforum_time_bronze.gif) ![За лояльность! [+300 репутации] За лояльность! [+300 репутации]](https://forum.hellroom.ru/awards/8ff7443ce508760cfbf715910b3eb0b3_hellroomforum_good_copper.gif)  
API: Game Maker 8.0 Pro
Деятельность: GML, С++, OpenGL, Java. Бывший Директор бывшей школы GML
Сообщений: 2573
|
 |
« Ответ #9 : Январь 24, 2011, 17:03:28 » |
|
О! Меня осенило, можно же проверять количество объектов if(instance_number(объект 1 типа)<2) { if(instance_number(объект 2 типа)<2) { if(instance_number(объект 3 типа)<2) { if(instance_number(объект 4 типа)<2) { if(instance_number(объект 5 типа)<2) { if(instance_number(объект 6 типа)<2) { game_end() } } } } } }
|
|
|
Записан
|
Есть вещи, которые нельзя объяснить. Для всего остального есть Справка Рандом-рандом-рандомище (с)  C++ & OpenGL
|
|
|
Dva_Kota
|
 |
« Ответ #10 : Январь 24, 2011, 17:08:00 » |
|
Hummer, а если будут два объекта 1 типа, но оба во второй группе (хотя, возможно в этой игре такой вариант не может быть)? Нужно, наверное, каждому задавать переменную, определяющую его тип. У тебя способ хороший. Я тут еще один написал,более запутанный и менее удобный, но, т.к. он уже написан тоже выкладываю. Есть две группы: убийцы (объект1) и жертвы (объект2). В каждой группе по 6 разных объектов. Для каждой группы есть по одному родительскому объекту (для первой группы будет объект1, для второй - объект2). В событии "убийство" (в уничтожении или в столкновении)запускац для второй группы alarm[0]=1, а для самого объекта-родителя запускай аларм 1 на 2 with(объект2){alarm[0]=1;} alarm[1]=2; у каждого объекта второй группы есть событие alarm0 в нем код if instance_exists(объект_соответствующий_данному_объекту) { global.no_obj=false; } у объекта Объект1 код в событии alarm1 код: if (global.no_obj) { //Конец игры } global.no_obj=true; Еще в событии старт комнаты задай переменную global.no_obj=true;
|
|
|
Записан
|
|
|
|
_KO_
Участник
  
Репутация: 9
Offline
Пол: 
API: 8.0 Pro
Сообщений: 187
Залипаю..
|
 |
« Ответ #11 : Январь 24, 2011, 17:45:11 » |
|
Hummer, а если будут два объекта 1 типа, но оба во второй группе (хотя, возможно в этой игре такой вариант не может быть)? Нужно, наверное, каждому задавать переменную, определяющую его тип. У тебя способ хороший. Я тут еще один написал,более запутанный и менее удобный, но, т.к. он уже написан тоже выкладываю. Есть две группы: убийцы (объект1) и жертвы (объект2). В каждой группе по 6 разных объектов. Для каждой группы есть по одному родительскому объекту (для первой группы будет объект1, для второй - объект2). В событии "убийство" (в уничтожении или в столкновении)запускац для второй группы alarm[0]=1, а для самого объекта-родителя запускай аларм 1 на 2 with(объект2){alarm[0]=1;} alarm[1]=2; у каждого объекта второй группы есть событие alarm0 в нем код if instance_exists(объект_соответствующий_данному_объекту) { global.no_obj=false; } у объекта Объект1 код в событии alarm1 код: if (global.no_obj) { //Конец игры } global.no_obj=true; Еще в событии старт комнаты задай переменную global.no_obj=true; у меня, у убийц в событии столкновения уничтожение объекта, я поменял твой код под эту ситуацию, но не получилось для родителя with(o_block){alarm[0]=1;} alarm[1]=2; для группы with(o_block2){alarm[0]=1;} аларм1 для родителя if (global.no_obj) { //Конец игры } global.no_obj=true; аларм0 для родителя if instance_exists(o_block) { global.no_obj=false; } аларм0 для группы if instance_exists(o_block2) { global.no_obj=false; } О! Меня осенило, можно же проверять количество объектов if(instance_number(объект 1 типа)<2) { if(instance_number(объект 2 типа)<2) { if(instance_number(объект 3 типа)<2) { if(instance_number(объект 4 типа)<2) { if(instance_number(объект 5 типа)<2) { if(instance_number(объект 6 типа)<2) { game_end() } } } } } } тут вообще с самого начала выкидывает, потому что жертвы появляются через определенное время(тайм лайн)
|
|
|
Записан
|
|
|
|
Hummer
scio me nihil scire
GM Pro user
Репутация: 335
Offline
Пол:  Награды:  ![За постоянность! [100 дней на форуме] За постоянность! [100 дней на форуме]](https://forum.hellroom.ru/awards/79b1a4915bff7098a4a1984ad370be2c_hellroomforum_time_bronze.gif) ![За лояльность! [+300 репутации] За лояльность! [+300 репутации]](https://forum.hellroom.ru/awards/8ff7443ce508760cfbf715910b3eb0b3_hellroomforum_good_copper.gif)  
API: Game Maker 8.0 Pro
Деятельность: GML, С++, OpenGL, Java. Бывший Директор бывшей школы GML
Сообщений: 2573
|
 |
« Ответ #12 : Январь 24, 2011, 17:52:22 » |
|
тут вообще с самого начала выкидывает, потому что жертвы появляются через определенное время(тайм лайн)[/spoiler]
А если через аларм попробовать? И проверять это после создания всех объектов
|
|
|
Записан
|
Есть вещи, которые нельзя объяснить. Для всего остального есть Справка Рандом-рандом-рандомище (с)  C++ & OpenGL
|
|
|
_KO_
Участник
  
Репутация: 9
Offline
Пол: 
API: 8.0 Pro
Сообщений: 187
Залипаю..
|
 |
« Ответ #13 : Январь 24, 2011, 18:06:08 » |
|
тут вообще с самого начала выкидывает, потому что жертвы появляются через определенное время(тайм лайн)[/spoiler]
А если через аларм попробовать? И проверять это после создания всех объектов теперь не вылетает, но всеравно ничего сюда нужно вписывать жертву или убийцу? они у меня разные объекты(тип одинаковый)
|
|
|
Записан
|
|
|
|
Dva_Kota
|
 |
« Ответ #14 : Январь 25, 2011, 09:28:16 » |
|
Код with(объект2){alarm[0]=1;} alarm[1]=2; нужно писать у родителя первой группы, Вот этот код: if instance_exists(объект_соответствующий_данному_объекту) { global.no_obj=false; } для каждого объекта второй группы (например если у тебя объект второй группы называется 02_a, и он должен уничтожать объект первой группы 01_a, то вместо объект_соответствующий_данному_объекту пиши 01_aОстальное ты, вроде бы, правильно написал.
|
|
|
Записан
|
|
|
|
|