Показать сообщение отдельно
  #7 (permalink)  
Старый 24.10.2012, 00:11
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Вот что получилось
Можно пред тавить что игра находится в разных состояниях. И переключаться между этими состояниями.
Это самый банальный подход в играх. Это автоматы основанные на состояниях

Однако я сделал финт ушами и привязал события к определённому состоянию, тоесть система находясь в определённом состоянии будет реагировать на события. Несколько состояний могут быть подписаны как game.event([1,2,3],{//какаято инфа});

game={
      state:0,
     
      //флаги выбора ставки и карты / могли бы быть переменные со значением карты и суммой ставки
      selcarta:false,
      selstavka:false,

      //функция переключающая состояния
      setState:function(state){
            this.state=state;
     },  

     //альтернативный вариант переключения состояний
     nextState:function(){
           this.state++;
     },

     // запускает состояние
     goState:function(state){
         //необязательное переключение состояния
          if(state) this.state=state; 
          this[this.state](param);
     },
             
     //вызывает состояние как обработчик события 
     event:function(state,param){
           //если это массив, то подписаны несколько состояний      
           if (typeof(state) == 'object'){      
                 for (var i=0;i<state.length;i++) {
                      if (state[i]==this.state)  this[this.state](param);
                 }                  
          } else {
                //если только одно состояние
                if (state==this.state) this[state](param);
          }
    },

     //состояния игры

      //блок инициализации
     "0":function(){
        $("карта").click(function(){ game.event('1',{act:"selcarta"})})
        $("ставка").click(function(){ game.event('1',{act:"selstavka"} )})
        $("кнопка игра").click(function(){game.event('3')})

        game.setState('1');
     },
     
     //проверяем выбор пользователя
     "1":function(param){            
                  if(param.act=="selcarta") this.selcarta=true; 
                  if(param.act=="selstavka") this.selstavka=true;

                 //если оба условия определены, то переходим к активации кнопки
                 if (this.selstavka && this.selcarta) game.goState(2);                     
     },

     //активируем кнопку
     "2":function(){
            // что-то делаем, допустим активируем кнопку играть

            //переходим на состояние в котором ждём нажатия кнопки.
            this.setState(3);//
     },

     //реагирует на нажатие кнопки играть
     "3":function(){
             alert("ура мы играем");

             //вернёмся обратно к ожиданию нажатий по картам        
             game.setState('1'); 
     }

     //другие состояния, к примеру ход противника, тусовка колоды, вычисление удачности хода и тп, и тд
}

//начинаем игру
game.goState(0);
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 24.10.2012 в 02:16.
Ответить с цитированием