Переключение логической переменной (применяется)

0

Я пытаюсь сделать игру (липкий, я знаю), и учитывая тот факт, что я не так хорош с javascript/jquery, мне удалось застрять при переключении логической переменной. Я пробовал весь var =! Var (не знаю, что это значит), но некоторые предположили, что он работает только в объективе C (опять же, не знаю). Я сделал скрипт JS http://jsfiddle.net/clarinetking/mLG6c/1/, и он работает в настоящий момент, но я хочу добавить переменную ко всем моим объектам, называемым "экипировать", и начать с нее как ложные и переключается на истину, когда нажимается правильная кнопка.

var sword = {
nam:'Sword',
atk:5,
def:1,
spd:-1,
type:'LeftH',
//equip = false  
};

и т.д

switch ( $(this).attr('id') ) {
        case 'equipsword':
            atk += sword.atk;
            def += sword.def;
            spd += sword.spd;
            //insert equip switch here
            break;
  • 0
    да ! работает в javascript не просто C, а ! , это оператор NOT, он в основном принимает противоположность тому, перед чем находится, поэтому !true === false !false === true , это также относится к значениям true / false !null === true , !0 === true !15 === false !"" === true
  • 0
    Это блестяще! Я попробовал это, и это не сработало, хотя, надеюсь, кто-нибудь придет и будет использовать его практически, чтобы я мог видеть, насколько я идиот
Показать ещё 1 комментарий
Теги:
boolean

2 ответа

1
Лучший ответ

да ! работает в javascript не только C, но и ! , является оператором NOT, он в основном принимает противоположное тому, что есть перед, поэтому:

!true === false
!false === true

это также относится к значениям правды/ложности:

!null === true
!0 === true
!15 === false
!"" === true

Поэтому для переключения булевского значения используйте только следующее:

var sword = {
   nam:'Sword',
   atk:5,
   def:1,
   spd:-1,
   type:'LeftH',
   equip:false  
};    
switch ( $(this).attr('id') ) {
    case 'equipsword':
        atk += sword.atk;
        def += sword.def;
        spd += sword.spd;
        sword.equip = !sword.equip;
        break;

но поскольку случай "equipsword" из внешнего вида будет срабатывать только тогда, когда экипировка, а не отказ от использования, также может сделать только sword.equip = true; , особенно потому, что может возникнуть вероятность того, что какой-либо другой код может изменить значение equip, а затем переключатель не будет работать, как ожидалось, например, если следующий код запустился до того, как был запущен случай equipsword:

function someFunctionThatGetsCalled(){
   sword.equip = true;
}

это приведет к тому, что equip будет истинным, а затем, когда случай equipsword будет срабатывать, sword.equip станет ложным, потому что он использует переключатель !sword.equip.

1

Вам нужно сделать больше, чем просто! Bool здесь, вы тоже захотите изменить статистику изменений. Например:

        if (sword.equip) {
            atk -= sword.atk;
            def -= sword.def;
            spd -= sword.spd;
        }
        else {
            atk += sword.atk;
            def += sword.def;
            spd += sword.spd;
        }
        sword.equip = !sword.equip;

http://jsfiddle.net/mLG6c/2/

Обратите внимание, что вам, скорее всего, придется реорганизовать этот код, чтобы вам не требовался оператор switch, поскольку действие, которое вы выполняете для каждой части оборудования, идентично.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню