Top.Mail.Ru

[Руководство по Java для L2J] Шаг 1.3: Продолжение темы методов и инкапсуляции на примере L2J_Mobius

[Скопировать ссылку]
Astraliya Опубликовано 2024-10-17 21:33:27 | Показать все сообщения |Режим чтения Распечатать Назад Вперед

Зарегистрируйтесь сейчас чтобы найти еще больше друзей, и получить полноценный доступ ко всем функциям сайта!

Для просмотра Вам необходимо авторизоваться Если Вы еще не зарегистрированы, перейдите по ссылке:Зарегистрироваться

x
Последний раз это сообщение было отредактировано Astraliya в 2024-10-17 21:34
7 j. v& H4 Z& L" C7 s. [
9 N% Y6 }; s" R7 I8 t1 I* O6 s5 X1 m$ o# d4 X
Шаг 1.3: Продолжение темы методов и инкапсуляции на примере L2J_Mobius
5 h) f) c- g6 v7 {( P
$ F5 D2 n) e+ K  {$ |3 K
  C7 W8 K. r4 _4 Q# cДобро пожаловать в обсуждение третьего шага нашего цикла статей по разработке серверов на основе L2J_Mobius! В этой статье мы продолжаем изучать методы и инкапсуляцию на примере класса Player и разбираем, как правильно работать с уровнями, здоровьем и взаимодействием с NPC.
" E  T5 h5 X+ k$ N) c( bЗдесь можно:' t0 S3 T( H% {: W
  • Задать вопросы о геттерах и сеттерах в L2J_Mobius.
  • Обсудить логику проверки данных в методах.
  • Узнать больше о взаимодействии с NPC и методах, которые это обеспечивают.
    ' \7 c0 a- y2 x( J. s) j
3 H5 ]" b5 X) S5 a' y* o  C) B
Не стесняйтесь делиться своими вопросами, предложениями и примерами! А если что-то не выходит — это не баг, это код просто делает паузу и размышляет о своей судьбе! 😄# D1 v7 a$ [3 {( e( ^
Астралия 🌟
0 O6 T( [; _: d, O

Сообщений в теме:2

AlexCoder Опубликовано 2024-10-17 22:32:08 | Показать все сообщения
Можешь подробнее объяснить, почему мы проверяем значение уровня в методе setLevel() перед его установкой? Почему нельзя просто присвоить любое значение?
 Автор| Astraliya Опубликовано 2024-10-17 23:00:07 | Показать все сообщения
AlexCoder опубликовал в 2024-10-17 22:32  I/ p, E' D2 ?3 l/ k/ {$ e! P7 v' U. G
Можешь подробнее объяснить, почему мы проверяем значе ...

0 N, [9 V+ k0 u  @Привет, AlexCoder!# ]- v& z' x: h5 _$ p
Давай разберём подробнее, почему важно проверять значение уровня в методе setLevel() перед его установкой. Это связано с защитой данных и соблюдением логики игрового процесса.8 C0 A9 k0 C5 f2 f+ d2 C

1. Защита от некорректных данных9 L# i8 b6 ~$ N. G  l- Y
Если мы не будем проверять значение уровня, можно случайно присвоить игроку отрицательный уровень или ноль, что нарушит логику игры. Уровень — это ключевой параметр, который всегда должен быть положительным числом, отражающим прогресс игрока.' D! G* J0 b* a% N9 X3 a- O
Пример на основе Player.java из L2J_Mobius:! F8 _! l1 Y. z  T- h
  1. public void setLevel(int newLevel) {  // public void установитьУровень(int новыйУровень)4 q: X/ W; B6 z2 U  C
  2.     // Проверяем, что новый уровень больше 0
    6 J8 F+ \( ]/ j
  3.     if (newLevel > 0) {$ _1 F7 p$ }6 k3 O" F- A* c" ~
  4.         this.level = newLevel;  // Устанавливаем новый уровень* m7 Q3 ^* k+ A7 S* d+ ?
  5.     } else {
    " L0 b% J# b+ H. d9 v; J- {/ C
  6.         System.out.println("Неверный уровень: уровень должен быть больше 0");/ g2 G+ o7 ~  v9 ^* X, N) j1 S3 J
  7.     }. ^6 U$ |, f' T1 ?7 ~; @
  8. }
    5 C. N# u# |6 b1 n
Скопировать код
Перевод и пояснение:
) [$ D; ^- s) @7 L6 d$ DsetLevel(int newLevel) — метод для установки уровня игрока.
+ J6 P: M# ~* ^6 o+ J. h5 ZМы проверяем, что новый уровень больше 0:
' e5 H2 I4 F9 D. _; ~
  1. if (newLevel > 0)
    ) C, U( Q" I' Y4 e# K
Скопировать код
Это предотвращает присвоение некорректных значений уровня (например, отрицательных или нулевых).
2 N  G) J) r6 |0 UЕсли условие выполняется, уровень устанавливается
$ A  K9 d8 g8 ]5 T$ z4 b
  1. this.level = newLevel;$ X( A2 H0 ?# _4 z4 P6 q
Скопировать код
Если новый уровень меньше или равен 0, выводится сообщение об ошибке:* K; }" U- {( w/ |4 ?/ ?: x

/ N2 z$ B& r+ g6 M6 `
  1. System.out.println("Неверный уровень: уровень должен быть больше 0");
    % \& C4 `# u, |
Скопировать код
2. Логика игрового процесса/ W* h7 j% w1 Q- `
Представь, если бы у игрока был отрицательный уровень — это могло бы нарушить баланс игры. Например, при отрицательном уровне игрок мог бы получать неверные значения для здоровья, урона и других параметров, что привело бы к багам в игре./ z, u+ u" p6 J4 s/ r, D' Y
Итог:Проверка значения уровня помогает предотвратить ошибки и поддерживать корректную логику игрового процесса. Она защищает данные и предотвращает баги, связанные с некорректными значениями уровня./ {9 R/ X' U- q$ ~0 w6 }
& w0 V3 O. R0 t: u5 [
P.S.
/ u$ S+ X- Z: ^8 bДаже если у нас не получится "прокачаться", зато будем уверены, что наш уровень всегда правильный! 😄
9 J2 P0 a' O0 k* k! }; C# H; N% D6 y+ ^% Y* D' i

% ?* P2 l& \) g; Q$ R+ o9 Z
Чтобы ответить, вам надо авторизироваться в системе Вход | Зарегистрироваться

Правил начисления баллов

  • Выдающийся вклад

    Прилагайте постоянные усилия для процветания форума в течение длительного времени или много раз выдвигайте конструктивные предложения.
  • Авторитет сайта

    Участники, внесшие выдающийся вклад в работу форума

подписок0

подписчиков0

постов9

Опубликовать
Сектор творческих людей
Горячая линия

638638758

С понедельника по воскресенье с 9:00 до 23:00

Обратной связь

admin@artace.ru Онлайн

QR-код

Powered by Discuz! X3.5© 2001-2021 Comsenz Inc.