Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.10.2012, 14:10
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 09.06.2009
Сообщений: 963

"Ставка -> Карта -> Игра", как умнее сделать?
Помогите разобраться с вопросом

Геймплей таков: пользователь "сел" за игровой стол. Он может выбрать карту, на которую ставит и ставку. Если оба выбора сделаны кнопка "Играть" становится активной.
При чем пользователь может менять карту, убавлять ставку, соответственно "Играть" тоже должна менять статус "Активна/не активна".

Как правильнее, гибче для дальнейшего использования сделать активацию "Играть"? Вижу варианты:
1. После клика на "Выбрать карту" ("Сделать ставку") проверять "Сделана ставка?" ("Выбрана карта?") и в зависимости от результатов активировать "Играть"
2. Использовать Объекты Deferred (тут не нравится, что переключать их можно один раз. Получается, что если игрок уберет ставку совсем, то статус "Ставка сделана" останется. Или я что-то не так понимаю?)
3. Использовать Объекты Callbacks - вообще не могу представить где в реальном кодинге сие нужно! То, что показывают в примерах "фу-бар", как-то ни о чем.

Буду рад выслушать любые мнения.
Ответить с цитированием
  #2 (permalink)  
Старый 23.10.2012, 21:26
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 09.06.2009
Сообщений: 963

Апну под вечер, может у кого под "вечерний горячительный напиток" мысль появится?
Давайте хотя бы порассуждаем?
Ответить с цитированием
  #3 (permalink)  
Старый 23.10.2012, 22:40
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от Serg_pnz
Как правильнее, гибче для дальнейшего использования сделать активацию "Играть"?
мое мнение - напрашиваются сущности (for example)
var player = {
    selectMap: function() {
        buttonPlay.updateState( someArg );
    },
    makeBet: function() {
        buttonPlay.updateState( someArg );
    }
};

var buttonPlay = {
    updateState: function( someArg ) {
    }
};
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #4 (permalink)  
Старый 23.10.2012, 23:05
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 09.06.2009
Сообщений: 963

nerv_, спасибо!
а можно еще словами логику?
Ответить с цитированием
  #5 (permalink)  
Старый 23.10.2012, 23:10
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 09.06.2009
Сообщений: 963

черт, Map===Card? /*речь о игральных картах))*/, но всё равно прошу словами.
Ответить с цитированием
  #6 (permalink)  
Старый 24.10.2012, 00:07
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от Serg_pnz
Как правильнее, гибче для дальнейшего использования сделать активацию "Играть"?
я бы сделал усовия, при которых игра будет "активна", и при любом бы действии проверял бы их список (ясное дело, что для оптимизации не стоит проверять сразу все ... я не противоречу сам себе ))

т.е. я вижу это как-то так :
Game = {

    conditions: [],

    conditionsAreAbided: function () {
        return this.conditions.every(function (condition) {
            
            return condition.check();//.....
            
        });
    }

    // ...

};
Ответить с цитированием
  #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.
Ответить с цитированием
  #8 (permalink)  
Старый 24.10.2012, 00:30
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 09.06.2009
Сообщений: 963

спасибо! буду разбирать варианты!

собственно пока речь идет о игре "игрокИ vs казино", т.е. за столом несколько юзеров против системы, играем по очереди, но ставки в один ход (блек-джек, если хотите), в перспективе игра между юзерами.

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

До кучи
Кури что то вроде http://shatalov.su/ru/articles/ai/fi...e_machines.php
__________________
Лучше калымить в гандурасе чем гандурасить на колыме
Ответить с цитированием
  #10 (permalink)  
Старый 24.10.2012, 09:38
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 09.06.2009
Сообщений: 963

DjDiablo,
всем плюсанул, а тебе не могу, что за система... (((
Спасибо, еще раз!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос как сделать эту панельку Определённых размеров и свойств. jei jQuery 3 09.06.2009 19:14
Как сделать электронный каталог продукции? natarius Серверные языки и технологии 6 24.05.2009 20:56
Как сделать, чтобы 2 ссылки отображались как hover при наведении мышкой на любую? Ava Элементы интерфейса 5 19.05.2009 23:24
как сделать плавное затухание страницы magistr_bender Элементы интерфейса 1 18.03.2009 14:34
Как сделать справочное окно? Vlaimir Events/DOM/Window 13 05.01.2009 14:06