Top.Mail.Ru

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

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

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

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

x
Последний раз это сообщение было отредактировано Astraliya в 2024-10-17 21:34
1 \# i. ^/ a' p" n+ Z$ P+ x  w$ ]% W" p# ^+ `" K4 ^

2 ~' d; S5 @! jШаг 1.3: Продолжение темы методов и инкапсуляции на примере L2J_Mobius4 ]& n+ D& |6 F/ A3 _+ R
0 V& T) j& y' ]' o, n

8 J% n, r; z4 V7 }- h% KДобро пожаловать в обсуждение третьего шага нашего цикла статей по разработке серверов на основе L2J_Mobius! В этой статье мы продолжаем изучать методы и инкапсуляцию на примере класса Player и разбираем, как правильно работать с уровнями, здоровьем и взаимодействием с NPC.
3 B3 x  Q" Y/ g. [: |' w- F; m1 rЗдесь можно:
2 I, V4 k1 ?2 K, i$ w
  • Задать вопросы о геттерах и сеттерах в L2J_Mobius.
  • Обсудить логику проверки данных в методах.
  • Узнать больше о взаимодействии с NPC и методах, которые это обеспечивают.
    * K5 g4 K2 k( v! m+ o) g

$ `/ H# O9 ]" [( A- j9 H& pНе стесняйтесь делиться своими вопросами, предложениями и примерами! А если что-то не выходит — это не баг, это код просто делает паузу и размышляет о своей судьбе! ?( L, r* i* o& g2 Q  _) L
Астралия ?7 t/ i# o, f) s8 Z, ]$ r4 I

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

AlexCoder Опубликовано 2024-10-17 22:32:08 | Показать все сообщения
Можешь подробнее объяснить, почему мы проверяем значение уровня в методе setLevel() перед его установкой? Почему нельзя просто присвоить любое значение?
 Автор| Astraliya Опубликовано 2024-10-17 23:00:07 | Показать все сообщения
AlexCoder опубликовал в 2024-10-17 22:32( w2 l1 ^! r* `7 Y) L/ w
Можешь подробнее объяснить, почему мы проверяем значе ...

5 F% ~5 G2 r& S, \0 J. ^9 o& M9 yПривет, AlexCoder!
$ a7 K0 L7 T/ i; ~2 o1 p/ WДавай разберём подробнее, почему важно проверять значение уровня в методе setLevel() перед его установкой. Это связано с защитой данных и соблюдением логики игрового процесса.
  }8 Q' Y) {- ]7 R# A% z
1. Защита от некорректных данных
1 f; {. ~; {5 M3 _. D5 qЕсли мы не будем проверять значение уровня, можно случайно присвоить игроку отрицательный уровень или ноль, что нарушит логику игры. Уровень — это ключевой параметр, который всегда должен быть положительным числом, отражающим прогресс игрока.
0 d: q* I6 S! _2 LПример на основе Player.java из L2J_Mobius:
/ f" o$ W; ?! ^, c0 _; @* w
  1. public void setLevel(int newLevel) {  // public void установитьУровень(int новыйУровень)
    % V' Z! L0 t8 B* ^# w1 c5 E
  2.     // Проверяем, что новый уровень больше 0
      S: G9 c  I+ b9 u* e! w9 ~3 X
  3.     if (newLevel > 0) {
    ) L1 ~8 Q, n$ g" i6 n# Z
  4.         this.level = newLevel;  // Устанавливаем новый уровень7 p2 v/ ?5 a. A8 t, G2 W
  5.     } else {4 r% ]% \( A8 \# y( n
  6.         System.out.println("Неверный уровень: уровень должен быть больше 0");- i' e7 B0 h4 L2 M4 l% p
  7.     }' O) B  e" ~# Q/ X  M  o* I
  8. }$ {. _9 S2 d+ k- {0 p/ y* d
Скопировать код
Перевод и пояснение:
- E8 C% \6 J! j5 ~, l0 ~, KsetLevel(int newLevel) — метод для установки уровня игрока.
0 U9 S& t8 d% s" s0 XМы проверяем, что новый уровень больше 0:# u$ O5 ^! L3 t) m/ b
  1. if (newLevel > 0); {7 x8 ~8 r- E) p7 X% N! b
Скопировать код
Это предотвращает присвоение некорректных значений уровня (например, отрицательных или нулевых).
- Y  Z8 W  |: M# bЕсли условие выполняется, уровень устанавливается
1 P. }2 n3 K" ^9 O+ y
  1. this.level = newLevel;* e- h7 a1 X2 w) z3 @" j
Скопировать код
Если новый уровень меньше или равен 0, выводится сообщение об ошибке:
7 ?5 z5 t' |' ~' O4 [% P5 v# l. N& T
  1. System.out.println("Неверный уровень: уровень должен быть больше 0");
    ; w, n' i9 b# x5 z' a  ?
Скопировать код
2. Логика игрового процесса
4 m) b6 r+ Z0 S$ `+ F. X2 T$ S% TПредставь, если бы у игрока был отрицательный уровень — это могло бы нарушить баланс игры. Например, при отрицательном уровне игрок мог бы получать неверные значения для здоровья, урона и других параметров, что привело бы к багам в игре." m! J4 V. Y* w, S% s3 a( q
Итог:Проверка значения уровня помогает предотвратить ошибки и поддерживать корректную логику игрового процесса. Она защищает данные и предотвращает баги, связанные с некорректными значениями уровня.& c, z7 j% {: L# J
& \8 N, T0 x" v+ g6 W9 I7 b% ^
P.S.
- ~8 {" x# c' n6 r: V  R* GДаже если у нас не получится "прокачаться", зато будем уверены, что наш уровень всегда правильный! ?- H2 F! p6 @3 [% A6 g1 w

# L; K1 R! V/ i  D; {" d, l9 r4 \" ?- d# W6 w4 Q
Чтобы ответить, вам надо авторизироваться в системе Вход | Зарегистрироваться

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

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

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

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

подписок0

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

постов9

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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