Top.Mail.Ru

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

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

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

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

x
Последний раз это сообщение было отредактировано Astraliya в 2024-10-17 21:34
8 Y; a- I/ ^' L' }8 {- c+ n2 {! e
& o, L7 T/ U; A3 q
$ s, `1 z( V( b$ z! l4 fШаг 1.3: Продолжение темы методов и инкапсуляции на примере L2J_Mobius
6 `) e5 P9 ^/ ?# Q% F
$ ^- d: s) H6 P$ h6 {0 z, B4 \3 R
Добро пожаловать в обсуждение третьего шага нашего цикла статей по разработке серверов на основе L2J_Mobius! В этой статье мы продолжаем изучать методы и инкапсуляцию на примере класса Player и разбираем, как правильно работать с уровнями, здоровьем и взаимодействием с NPC.; U) N% ^8 @+ U0 L6 E
Здесь можно:
, o6 k% _+ ?4 Y4 e" k" J: P0 G
  • Задать вопросы о геттерах и сеттерах в L2J_Mobius.
  • Обсудить логику проверки данных в методах.
  • Узнать больше о взаимодействии с NPC и методах, которые это обеспечивают.
    5 M/ i. Q" b4 W

* L0 j/ |$ W2 Q" c- L: ~' x0 W0 ~Не стесняйтесь делиться своими вопросами, предложениями и примерами! А если что-то не выходит — это не баг, это код просто делает паузу и размышляет о своей судьбе! ?4 ^* \1 D1 H$ S8 X1 t2 O. J
Астралия ?3 t5 @3 f$ }  q! I1 X- d2 c6 F

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

AlexCoder Опубликовано 2024-10-17 22:32:08 | Показать все сообщения
Можешь подробнее объяснить, почему мы проверяем значение уровня в методе setLevel() перед его установкой? Почему нельзя просто присвоить любое значение?
 Автор| Astraliya Опубликовано 2024-10-17 23:00:07 | Показать все сообщения
AlexCoder опубликовал в 2024-10-17 22:327 v1 x$ Y) h1 f2 K0 f: w' a; X+ Z% d$ N
Можешь подробнее объяснить, почему мы проверяем значе ...
* w5 ]$ `& f# ~7 ~: _
Привет, AlexCoder!# x; ]) q9 y! k3 T2 A* Y4 [
Давай разберём подробнее, почему важно проверять значение уровня в методе setLevel() перед его установкой. Это связано с защитой данных и соблюдением логики игрового процесса.
5 H! M8 b* u- Y) \' `, b+ K9 {4 K
1. Защита от некорректных данных. f8 ?/ i. b: ^% v; a
Если мы не будем проверять значение уровня, можно случайно присвоить игроку отрицательный уровень или ноль, что нарушит логику игры. Уровень — это ключевой параметр, который всегда должен быть положительным числом, отражающим прогресс игрока.8 n2 `, I# |' R8 a6 u
Пример на основе Player.java из L2J_Mobius:
7 w! q: A" @: L) h& z* T& v% D
  1. public void setLevel(int newLevel) {  // public void установитьУровень(int новыйУровень)7 Z0 Y, @4 T4 J! \! w' ~0 l, s
  2.     // Проверяем, что новый уровень больше 0
    ) ^; d+ m- T4 |" t$ p4 i
  3.     if (newLevel > 0) {
    % t6 r- j! Y: y4 A1 O
  4.         this.level = newLevel;  // Устанавливаем новый уровень
    . r; Y- I+ k/ Z: W0 m0 W- r3 H9 c; `
  5.     } else {
    2 d/ c! B. _! ]* U
  6.         System.out.println("Неверный уровень: уровень должен быть больше 0");/ J2 T6 ^( y6 q& w5 h! w" J
  7.     }
    " @/ b% G; T+ \2 h  ]  E
  8. }
    5 f( c. d% r3 N3 K; u) O
Скопировать код
Перевод и пояснение:
9 k! d5 u# M' F) r' BsetLevel(int newLevel) — метод для установки уровня игрока.- I4 E" E# L. k& T! \& f
Мы проверяем, что новый уровень больше 0:
) `; o" n, [5 u4 q% y5 O8 j/ d5 L
  1. if (newLevel > 0)7 ~6 M5 D4 y9 }3 ?! L
Скопировать код
Это предотвращает присвоение некорректных значений уровня (например, отрицательных или нулевых).
  ]; V: S, a! C9 K1 ~$ R  g' cЕсли условие выполняется, уровень устанавливается
& o$ p$ Z9 b. s& a/ i. X
  1. this.level = newLevel;
    $ _% T9 L3 P5 H( k* `4 f+ y
Скопировать код
Если новый уровень меньше или равен 0, выводится сообщение об ошибке:. J  r3 A/ V" ?8 m, O8 _! n6 `

1 i& ]7 ~- P2 n/ a8 `. t! Z1 x: L
  1. System.out.println("Неверный уровень: уровень должен быть больше 0");
    + Y( \8 A4 F; G' v  y) h: u
Скопировать код
2. Логика игрового процесса! X  l+ n  g. c3 e7 i
Представь, если бы у игрока был отрицательный уровень — это могло бы нарушить баланс игры. Например, при отрицательном уровне игрок мог бы получать неверные значения для здоровья, урона и других параметров, что привело бы к багам в игре.8 \% @& `  N3 k$ |8 `2 F# X8 ]3 S
Итог:Проверка значения уровня помогает предотвратить ошибки и поддерживать корректную логику игрового процесса. Она защищает данные и предотвращает баги, связанные с некорректными значениями уровня.  X0 s% m- D/ J5 S. _3 v
  @+ ~+ \5 G/ Y4 V  Y- |
P.S.  h. m1 k( Y/ d2 C
Даже если у нас не получится "прокачаться", зато будем уверены, что наш уровень всегда правильный! ?
- t+ E" P1 M/ l
. b( Q( K0 F& T. g
: X) Z- e! E6 a7 z5 U" @+ P9 Z& }1 E
Чтобы ответить, вам надо авторизироваться в системе Вход | Зарегистрироваться

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

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

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

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

подписок0

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

постов9

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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