Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.05.2020, 02:25
Новичок на форуме
Отправить личное сообщение для alexander909090 Посмотреть профиль Найти все сообщения от alexander909090
 
Регистрация: 09.05.2020
Сообщений: 2

использование локальной переменной!?
есть задача сделать функцию, которая будет фиксировать "Здоровье-HP" в игре-файтинге.
вроде выходит(вложение) - но припустим "HP"=65, и потом должно каждый раз при вызове функции уменьшаться...оно не уменьшается а становится this.hp=fighter.getHealth() (припустим 90). (естественно потому что я так прописал в коде),
но КАК СДЕЛАТЬ ЧТОБЫ ПЕРЕМЕННАЯ this.hp уменьшалась каждый раз с последнего значения, а не с fighter.getHealth() - но первый раз должно браться с fighter.getHealth()
то есть, каждый раз когда я вызываю console.log(attack(myFighter2)) число жизней должно или уменьшаться или оставаться прежним.
если можно без особого спама и нравоучений-только учусь и нуждаюсь в небольшой подсказке.
function Fighter(name, damage, strenght, agility, hp) {
    this.name = name;
    this.damage = damage; 
    this.strength = strenght; 
    this.agility = agility;
    this.hp = hp;
    this.getName=function() {
        return this.name;
    }
    this.getDamage=function() {
        return this.damage;
    }
    this.getStrenght=function() {
        return this.strength;
    }
    this.getAgility=function() {
        return this.agility;
    }
    this.getHealth=function() {
        return this.hp;
    }
}

const myFighter1 = new Fighter('Maximus',25,1,1,100);
let name1 = myFighter1.getName();
let damage1 = myFighter1.getDamage();
let strenght1 = myFighter1.getStrenght();
let agility1 = myFighter1.getAgility();
let health1 = myFighter1.getHealth();

const myFighter2 = new Fighter('Commod',25,25,25,90);
let name2 = myFighter2.getName();
let damage2 = myFighter2.getDamage();
let strenght2 = myFighter2.getStrenght();
let agility2 = myFighter2.getAgility();
let health2 = myFighter2.getHealth();
//console.log(name2)

function getRandomInt(max) {
  return Math.floor(Math.random() * Math.floor(max));
}

function attack(fighter) {
    let hp=fighter.getHealth();
    let damage=fighter.getDamage();
    let success = 100-(fighter.getAgility()+fighter.getStrenght());
    let rand_number = getRandomInt(101);   
    if (rand_number < success) {
                hp=hp-damage;
                return hp
            } else {
                hp=hp-0;
                return hp
            }
}
console.log(attack(myFighter2));
console.log(attack(myFighter2));
console.log(attack(myFighter2));

Последний раз редактировалось alexander909090, 09.05.2020 в 05:27.
Ответить с цитированием
  #2 (permalink)  
Старый 09.05.2020, 08:54
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

alexander909090,
либо attack переносите в Fighter, либо в attack используйте fighter.hp вместо let hp=fighter.getHealth();
Ответить с цитированием
  #3 (permalink)  
Старый 09.05.2020, 09:01
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

alexander909090,
function Fighter(name, damage, strenght, agility, hp) {
    this.name = name;
    this.damage = damage;
    this.strength = strenght;
    this.agility = agility;
    this.hp = hp;
    this.getName=function() {
        return this.name;
    }
    this.getDamage=function() {
        return this.damage;
    }
    this.getStrenght=function() {
        return this.strength;
    }
    this.getAgility=function() {
        return this.agility;
    }
    this.getHealth=function() {
        return this.hp;
    }
}

const myFighter1 = new Fighter('Maximus',25,1,1,100);
let name1 = myFighter1.getName();
let damage1 = myFighter1.getDamage();
let strenght1 = myFighter1.getStrenght();
let agility1 = myFighter1.getAgility();
let health1 = myFighter1.getHealth();

const myFighter2 = new Fighter('Commod',25,25,25,90);
let name2 = myFighter2.getName();
let damage2 = myFighter2.getDamage();
let strenght2 = myFighter2.getStrenght();
let agility2 = myFighter2.getAgility();
let health2 = myFighter2.getHealth();
//console.log(name2)

function getRandomInt(max) {
  return Math.floor(Math.random() * Math.floor(max));
}

function attack(fighter) {
    let hp=fighter.getHealth();
    let damage=fighter.getDamage();
    let success = 100-(fighter.getAgility()+fighter.getStrenght());
    let rand_number = getRandomInt(101);
    if (rand_number < success) {
                hp=hp-damage;
            } else {
                hp=hp-0;
            };
    fighter.hp = hp;
    return hp
}
console.log(attack(myFighter2));
console.log(attack(myFighter2));
console.log(attack(myFighter2));
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Использование глобальной переменной salieri Общие вопросы Javascript 4 05.01.2019 21:08
Сохранение и использование данных в локальной памяти marc Общие вопросы Javascript 3 25.12.2017 00:20
Использование переменной в jQuery функции Lol9999 jQuery 1 18.06.2016 14:50
Значение переменной в запросе к локальной базе данных Tecos Общие вопросы Javascript 2 31.01.2013 16:27
Использование локальной переменной, в другой ф-ии 9xakep Ваши сайты и скрипты 6 31.10.2011 00:15