"Ставка -> Карта -> Игра", как умнее сделать?
Помогите разобраться с вопросом
Геймплей таков: пользователь "сел" за игровой стол. Он может выбрать карту, на которую ставит и ставку. Если оба выбора сделаны кнопка "Играть" становится активной. При чем пользователь может менять карту, убавлять ставку, соответственно "Играть" тоже должна менять статус "Активна/не активна". Как правильнее, гибче для дальнейшего использования сделать активацию "Играть"? Вижу варианты: 1. После клика на "Выбрать карту" ("Сделать ставку") проверять "Сделана ставка?" ("Выбрана карта?") и в зависимости от результатов активировать "Играть" 2. Использовать Объекты Deferred (тут не нравится, что переключать их можно один раз. Получается, что если игрок уберет ставку совсем, то статус "Ставка сделана" останется. Или я что-то не так понимаю?) 3. Использовать Объекты Callbacks - вообще не могу представить где в реальном кодинге сие нужно! То, что показывают в примерах "фу-бар", как-то ни о чем. Буду рад выслушать любые мнения. |
Апну под вечер, может у кого под "вечерний горячительный напиток" мысль появится?
Давайте хотя бы порассуждаем? |
Цитата:
var player = { selectMap: function() { buttonPlay.updateState( someArg ); }, makeBet: function() { buttonPlay.updateState( someArg ); } }; var buttonPlay = { updateState: function( someArg ) { } }; |
nerv_, спасибо!
а можно еще словами логику? |
черт, Map===Card? /*речь о игральных картах))*/, но всё равно прошу словами.
|
Цитата:
т.е. я вижу это как-то так : Game = { conditions: [], conditionsAreAbided: function () { return this.conditions.every(function (condition) { return condition.check();//..... }); } // ... }; |
Вот что получилось :)
Можно пред тавить что игра находится в разных состояниях. И переключаться между этими состояниями. Это самый банальный подход в играх. Это автоматы основанные на состояниях Однако я сделал финт ушами и привязал события к определённому состоянию, тоесть система находясь в определённом состоянии будет реагировать на события. Несколько состояний могут быть подписаны как 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); |
спасибо! буду разбирать варианты!
собственно пока речь идет о игре "игрокИ vs казино", т.е. за столом несколько юзеров против системы, играем по очереди, но ставки в один ход (блек-джек, если хотите), в перспективе игра между юзерами. PS: дай мне Бог терпения на релиз! |
До кучи
Кури что то вроде http://shatalov.su/ru/articles/ai/fi...e_machines.php |
DjDiablo,
всем плюсанул, а тебе не могу, что за система... ((( Спасибо, еще раз! |
Часовой пояс GMT +3, время: 03:38. |