Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 28.08.2018
Сообщений: 49

Использование одного экземпляра класса

20.09.2018, 14:19. Показов 876. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем добрый день!
Вот хоть убей, не могу понять как!
Суть такая. Есть игра, в игре 4 класса, а именно. Main в котором идет игра. Battle, в котором битва, Player, где лежат атрибуты игрока(сила, ловкость, ХП и тд.) и Mob, тоже что и Player, только атрибуты не определены.

Вот в чем суть. Если в main Player получает урон, тоесть ХП становится меньше, то в Battle это изменение не учитывается. Потому что я Battle я создаю нового плеера. а вот как сделать так, что бы я всегда использовал только один экземпляр класса, и все изменения, будь то полученый урон, травма, уменьшающая силу и тд, были во всех классах где я буду юзать этого плеера. помогите, Вот не могу нагуглить.

Вот небольшой пример программы:
ХП я сделал методом, потому-что в игре ХП высчитывается выносливость*100. Выносливость в начале определяется броском кубика.
В начале мы просто вычитаем из ХП 10. Потом в Location мы из ХП вычитаем число выпавшее на кости. Как видно, ХП-10 не запомнилось.
Игра:
Java
1
2
3
4
5
6
7
8
9
10
class Main {
  public static void main(String[] args) {
    Dice dice = new Dice();
    Player player = new Player();
    int playerHp = player.hp();
    playerHp = playerHp - 10;
    System.out.println(playerHp);
    Location location = new Location();
  }
}
Герой
Java
1
2
3
4
5
6
class Player {
 int hp() {
   int hp = 200-100;
   return hp;
 }
}
Любой другой класс, для проверки, сохраняются ли изменения
Java
1
2
3
4
5
6
7
8
9
class Location {
  Location(){
    Dice dice = new Dice();
    Player player = new Player();
    int playerHp = player.hp();
    playerHp = playerHp - dice.dice(6);
    System.out.println(playerHp);
  }
}
Игральная кость
Java
1
2
3
4
5
6
7
8
9
10
11
import java.util.Random;
 
class Dice {
 
  Random random = new Random();
 
  int dice(int max) {
    int dice = random.nextInt(max);
    return dice + 1;
  }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.09.2018, 14:19
Ответы с готовыми решениями:

Использование одного экземпляра класса
Добрый день! Помогите, никак не могу накопать нужную информацию. Как использовать один и тот же экземпляр класса, одну инстанту? В...

Использование метода одного класса в другом
Вопрос вот в чем. Как в классе useEmployee использовать метод описанный в классе Employee? При запуске программы, компилятор никаких ошибок...

Как при создании экземпляра класса инициализировать переменные вложенного класса
Здравствуйте. Подскажите пожалуйста как при создании екземпляра класа инициализировать переменные вложеного класа. Добавлено через 22...

10
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
20.09.2018, 14:38
ну так не создавай где попало новые экземпляры, создай один и передавай его в конструктор например
0
0 / 0 / 0
Регистрация: 28.08.2018
Сообщений: 49
20.09.2018, 14:49  [ТС]
xoraxax
ну так не создавай где попало новые экземпляры, создай один и передавай его в конструктор например
Я бы с удовольствием)
Но я не знаю как. Напиши, если не трудно, как.
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
20.09.2018, 14:49
https://docs.oracle.com/javase... index.html
0
0 / 0 / 0
Регистрация: 28.08.2018
Сообщений: 49
20.09.2018, 14:56  [ТС]
xoraxax
К сожалению, я только учу английский.
0
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
20.09.2018, 15:01
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Location {
  Player player;
 
  Location(Player player){
    this.player = player;
  }
}
 
class Main {
  public static void main(String[] args) {
    Player player = new Player();
    Location location = new Location(player);  //передать созданный player
  }
}
0
0 / 0 / 0
Регистрация: 28.08.2018
Сообщений: 49
20.09.2018, 16:02  [ТС]
JIeIIIa
Location(Player player){
this.player = player;
}
Это конструктор?
0
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
20.09.2018, 16:05
Poreyzmih, да.
0
0 / 0 / 0
Регистрация: 28.08.2018
Сообщений: 49
20.09.2018, 16:12  [ТС]
JIeIIIa
Java
1
2
3
4
5
6
7
8
9
10
class Main {
  public static void main(String[] args) {
    Dice dice = new Dice();
    Player player = new Player();
    int playerHp = player.hp();
    playerHp = playerHp - 10;
    System.out.println(playerHp);
    Location location = new Location(player);
  }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
class Location {
  Player player;
    Location(Player player){
    this.player = player;
  }
  Location(){
    Dice dice = new Dice();
    int playerHp = player.hp();
    playerHp = playerHp - dice.dice(6);
    System.out.println(playerHp);
  }
}

Java
1
90
В локейшене второй участок кода игнорируется, что я делаю не так?
0
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
20.09.2018, 16:16
Цитата Сообщение от Poreyzmih Посмотреть сообщение
что я делаю не так?
Пытаетесь писать код не понимая базовых принципов.

Или создайте конструктор со всеми необходимыми параметрами, или добавляете в объект геттеры-сеттеры и после создания объекта "настраиваете" созданный экземпляр.
0
0 / 0 / 0
Регистрация: 28.08.2018
Сообщений: 49
20.09.2018, 18:15  [ТС]
JIeIIIa

Спасибо! начало положено, дальше буду гуглить.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.09.2018, 18:15
Помогаю со студенческими работами здесь

Добавление экземпляра класса в список
Добрый день, дорогие форумчане, мне дали задание : Создать пользовательский класс с полем string, создать список и заполнить его...

Непонятный пример экземпляра класса
Что значит? Выходит на 36 строке. Сам код public class delegate { private interface Graphics { void draw(); }

Запуск еще одного экземпляра программы как нового процесса.
Hi Kak zapustit drugoj java aplication kak novi(nezavisimi) process is pervovo aplicationa ?? znaju odin sposov no ne uveren 4to...

OutOfMemoryError при создании экземпляра класса в цикле
Здравствуйте! У меня есть функция, реализующая поиск на отрезке методом дихотомии. Там используется цикл, где на каждой итерации создается...

Для чего null при создании экземпляра класса?
Добрый вечер! Вопрос следующий, во второй строке кода, а именно City biggestcity = null, зачем делать именно так и почему нельзя создать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru