Вариант шаговки. ( СПАСИБО - РЕШЕНО )

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Вариант шаговки. ( СПАСИБО - РЕШЕНО )

Сообщение 46165957 18 янв 2013, 15:22

Всем привет )
Не отпускает идея все таки разобраться с шаговыми играми.

В качестве тестика, накарябал - 3 действия, на 3 хода (без проверок на остаток од, просто шарик погонять, посмотреть как оно). Получилась вот такая стремная штука:

На кнопках управления
Синтаксис:
Используется javascript
function OnMouseDown () {
od_control.curOD +=1;

        if(name=="N1") {
                if (od_control.curOD == 1){od_control.funct1 = od_control.f1;}
                if (od_control.curOD == 2){od_control.funct2 = od_control.f1;}
                if (od_control.curOD == 3){od_control.funct3 = od_control.f1;}
                }

        if(name=="N2") {
                if (od_control.curOD == 1){od_control.funct1 = od_control.f2;}
                if (od_control.curOD == 2){od_control.funct2 = od_control.f2;}
                if (od_control.curOD == 3){od_control.funct3 = od_control.f2;}
                }

        if(name=="N3") {
                if (od_control.curOD == 1){od_control.funct1 = od_control.f3;}
                if (od_control.curOD == 2){od_control.funct2 = od_control.f3;}
                if (od_control.curOD == 3){od_control.funct3 = od_control.f3;}
                }


}


И сам контроллер:

Синтаксис:
Используется javascript
static var od : int;
static var curOD : int;

function Start () {
curOD = 0;
}

static function dummy (){
GameObject.Find("PLAYER").transform.position.z +=0;
}

static function f1 (){
GameObject.Find("PLAYER").transform.position.y +=2;
}

static function f2 (){
GameObject.Find("PLAYER").transform.position.x +=2;
}

static function f3 (){
GameObject.Find("PLAYER").transform.position.x -=2;
}

static var funct1 = dummy;
static var funct2 = dummy;
static var funct3 = dummy;


function go_od (){
yield WaitForSeconds (1);
funct1();
yield WaitForSeconds (1);
funct2();
yield WaitForSeconds (1);
funct3();
}

function OnMouseDown () {
go_od ();
curOD = 0;
}


Собственно в чем вопрос... я понимаю что, то что я сделал, мягко говоря не актуально, стоит только представить, что ОД может быть 30 а действий за сотню :) Прописывать их все таким макаром, можно устать случайно :))) Не подскажете, куда копнуть и что скурить (согласен даже на мухоморы), чтобы узнать, как это правильно делается ))))))))

Спасибо!
Последний раз редактировалось 46165957 19 янв 2013, 17:36, всего редактировалось 1 раз.
46165957
Старожил
 
Сообщения: 835
Зарегистрирован: 13 май 2011, 12:14

Re: Вариант шаговки.

Сообщение seaman 18 янв 2013, 17:09

Списки, массивы, циклы...
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Вариант шаговки.

Сообщение 46165957 18 янв 2013, 18:03

seaman писал(а):Списки, массивы, циклы...


Спасибо! Буду теперь знать, что гуглить...
эхх если б ещепримерчик найти с камментами... но эт я по ходу уже борзею )))))))
46165957
Старожил
 
Сообщения: 835
Зарегистрирован: 13 май 2011, 12:14

Re: Вариант шаговки.

Сообщение BornFoRdeatH 18 янв 2013, 18:10

я бы наверное заюзал список и рефлекцию.

тоесть добавляем в список свои действия, считаем заодно сколько од потрачено на это все, а далее как только делаем окончательно ход гоним через рефлекцию выполнение функций в списке(можно образно представить что получиться что-то похожее на интерпретатор команд).
Не бойся, если ты один, бойся, если ты ноль.
BornFoRdeatH
Адепт
 
Сообщения: 2377
Зарегистрирован: 22 окт 2011, 23:41
Откуда: Украина
Skype: bornfordeath

Re: Вариант шаговки.

Сообщение seaman 18 янв 2013, 18:13

Да. Еще, поскольку Вы оперируете функциями нужно читать про делегаты.
Если заранее известны все возможные действия зачем рефлексия?
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Вариант шаговки.

Сообщение BornFoRdeatH 18 янв 2013, 18:15

seaman писал(а):Да. Еще, поскольку Вы оперируете функциями нужно читать про делегаты.
Если заранее известны все возможные действия зачем рефлексия?


Я имею ввиду сам System.Reflection который в том числе и за делегаты отвечает.

но думаю что-то вот подобное:
Синтаксис:
Используется csharp
using System;
using System.Reflection;
 
class CallMethodByName
{
   string name;
   
   CallMethodByName (string name)
   {
      this.name = name;
   }
   
   public void DisplayName()      // method to call by name
   {
      Console.WriteLine (name);   // prove we called it
   }
   
   static void Main()
   {
      // Instantiate this class
      CallMethodByName cmbn = new CallMethodByName ("CSO");
 
      // Get the desired method by name: DisplayName
      MethodInfo methodInfo =
         typeof (CallMethodByName).GetMethod ("DisplayName");
 
      // Use the instance to call the method without arguments
      methodInfo.Invoke (cmbn, null);
   }
}
 

было бы удобнее.
Не бойся, если ты один, бойся, если ты ноль.
BornFoRdeatH
Адепт
 
Сообщения: 2377
Зарегистрирован: 22 окт 2011, 23:41
Откуда: Украина
Skype: bornfordeath

Re: Вариант шаговки.

Сообщение seaman 18 янв 2013, 18:35

System.Reflection который в том числе и за делегаты отвечает.

С каких это пор System.Reflection за делегаты отвечает?
http://msdn.microsoft.com/ru-ru/library ... egate.aspx
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Вариант шаговки.

Сообщение BornFoRdeatH 18 янв 2013, 18:37

seaman писал(а):С каких это пор System.Reflection за делегаты отвечает?
http://msdn.microsoft.com/ru-ru/library ... egate.aspx


а это что?)
http://msdn.microsoft.com/ru-ru/library ... ethod.aspx

Значение свойства
Тип: System.Reflection.MethodInfo
Объект MethodInfo, описывающий метод, представленный делегатом.
Не бойся, если ты один, бойся, если ты ноль.
BornFoRdeatH
Адепт
 
Сообщения: 2377
Зарегистрирован: 22 окт 2011, 23:41
Откуда: Украина
Skype: bornfordeath

Re: Вариант шаговки.

Сообщение seaman 18 янв 2013, 19:10

И что? Сборки .NET вообще сильно связаны. То, что у делегата есть поля из System.Reflection не означает, что сам делегат вдруг туда перенесся. Тем более что в данном случае эти поля скорее всего не нужны. Да, для глубокого изучения делегатов нужно будет изучать и рефлексию и еще массу вещей.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Вариант шаговки.

Сообщение BornFoRdeatH 18 янв 2013, 19:19

seaman писал(а):И что? Сборки .NET вообще сильно связаны. То, что у делегата есть поля из System.Reflection не означает, что сам делегат вдруг туда перенесся. Тем более что в данном случае эти поля скорее всего не нужны. Да, для глубокого изучения делегатов нужно будет изучать и рефлексию и еще массу вещей.


Не буду спорить, так как я не спец в шарпе и знания мои не столь глубоки, могу и ошибаться. Этот спорный вопрос может решить только реверсинженеринг делегатов. Да и ни к чему это. В приведенном мной выше примере видно что способ не особо отличается от делегатов но немного проще. А как это реализовать уж не нам решать B-)
Не бойся, если ты один, бойся, если ты ноль.
BornFoRdeatH
Адепт
 
Сообщения: 2377
Зарегистрирован: 22 окт 2011, 23:41
Откуда: Украина
Skype: bornfordeath

Re: Вариант шаговки.

Сообщение 46165957 18 янв 2013, 21:33

о_О омг...
46165957
Старожил
 
Сообщения: 835
Зарегистрирован: 13 май 2011, 12:14

Re: Вариант шаговки. ( СПАСИБО - РЕШЕНО )

Сообщение 46165957 19 янв 2013, 17:38

Все же тяжело без сенсея :)
Странными какими то методами все тянет решать ))))
Неплохо помог спор в продолжении топика, появилось много интересных слов которые нужно нагуглить - спасибо seaman и BornFoRdeatH :)))

Почитал про массивы, впечатлился, в итоге все срослось ))))

Спасибо!
46165957
Старожил
 
Сообщения: 835
Зарегистрирован: 13 май 2011, 12:14


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15