Top.Mail.Ru

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

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

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

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

x
Последний раз это сообщение было отредактировано Astraliya в 2024-10-17 21:34 + K$ U  e, s5 k+ m

& s5 z& U  }+ f$ E+ L2 I: F1 }6 ~. k  n: K8 D* o8 e1 Z
Шаг 1.3: Продолжение темы методов и инкапсуляции на примере L2J_Mobius/ T+ K$ |" X2 x  a
5 c  ^5 W" b( t% u; j
" R' W- ?% P2 M3 {
Добро пожаловать в обсуждение третьего шага нашего цикла статей по разработке серверов на основе L2J_Mobius! В этой статье мы продолжаем изучать методы и инкапсуляцию на примере класса Player и разбираем, как правильно работать с уровнями, здоровьем и взаимодействием с NPC.
. H2 s3 R% N* GЗдесь можно:- D& ^4 F% z7 i: j5 H# `
  • Задать вопросы о геттерах и сеттерах в L2J_Mobius.
  • Обсудить логику проверки данных в методах.
  • Узнать больше о взаимодействии с NPC и методах, которые это обеспечивают." M+ T  U, i2 l0 k9 B3 c

. g. ]; k# o, m) {# U3 l, o' dНе стесняйтесь делиться своими вопросами, предложениями и примерами! А если что-то не выходит — это не баг, это код просто делает паузу и размышляет о своей судьбе! ?
, e3 w4 |7 t: r+ D0 G: }Астралия ?
% T# U+ l7 d! |8 }: m( m

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

AlexCoder Опубликовано 2024-10-17 22:32:08 | Показать все сообщения
Можешь подробнее объяснить, почему мы проверяем значение уровня в методе setLevel() перед его установкой? Почему нельзя просто присвоить любое значение?
 Автор| Astraliya Опубликовано 2024-10-17 23:00:07 | Показать все сообщения
AlexCoder опубликовал в 2024-10-17 22:328 }* O+ `, ]0 J: ?1 [  X0 j
Можешь подробнее объяснить, почему мы проверяем значе ...
5 B+ ~- }) j8 ?' I
Привет, AlexCoder!! @4 [/ u7 N$ i6 J
Давай разберём подробнее, почему важно проверять значение уровня в методе setLevel() перед его установкой. Это связано с защитой данных и соблюдением логики игрового процесса.6 f$ P: M+ A( i

1. Защита от некорректных данных
5 q. y$ s( x* P; ?. gЕсли мы не будем проверять значение уровня, можно случайно присвоить игроку отрицательный уровень или ноль, что нарушит логику игры. Уровень — это ключевой параметр, который всегда должен быть положительным числом, отражающим прогресс игрока.
1 T, R5 n6 t' Y0 U* oПример на основе Player.java из L2J_Mobius:$ T/ M7 y& w% p( N
  1. public void setLevel(int newLevel) {  // public void установитьУровень(int новыйУровень)
    3 @5 k+ T4 T) L% U& ]
  2.     // Проверяем, что новый уровень больше 09 s' ~7 A# c8 N
  3.     if (newLevel > 0) {  g9 O( ?( \) J% Z$ v3 o; K
  4.         this.level = newLevel;  // Устанавливаем новый уровень
    ; v# B( g5 w- o/ H: s9 d
  5.     } else {8 c# D: w, F# i
  6.         System.out.println("Неверный уровень: уровень должен быть больше 0");! w* k3 a& w9 P! x1 G' ^! D  q
  7.     }
    7 `$ T/ q0 z  E9 U
  8. }4 P5 z2 a- ?$ c7 C& @5 M4 {
Скопировать код
Перевод и пояснение:' J8 c/ u0 W5 n8 I$ h, O# n
setLevel(int newLevel) — метод для установки уровня игрока.  D9 e" u6 l) g& }
Мы проверяем, что новый уровень больше 0:( m: F8 ^3 r, K0 \, R- N  \
  1. if (newLevel > 0)
    & }" ~* a7 X, E: E
Скопировать код
Это предотвращает присвоение некорректных значений уровня (например, отрицательных или нулевых).  }8 r1 Z" a$ o1 B! x# Z- n
Если условие выполняется, уровень устанавливается* U) o0 [0 w$ o# U
  1. this.level = newLevel;3 A7 y8 m/ n: F+ Y; |* f! N# q
Скопировать код
Если новый уровень меньше или равен 0, выводится сообщение об ошибке:
$ a2 u* S9 J9 t" S
8 }7 N8 m) G9 F
  1. System.out.println("Неверный уровень: уровень должен быть больше 0");
    0 a7 J% J/ v3 @0 s4 a6 y  C1 w
Скопировать код
2. Логика игрового процесса
/ t) N  }/ F# \3 G8 WПредставь, если бы у игрока был отрицательный уровень — это могло бы нарушить баланс игры. Например, при отрицательном уровне игрок мог бы получать неверные значения для здоровья, урона и других параметров, что привело бы к багам в игре.& q/ ^/ T6 @2 [( k( P' E
Итог:Проверка значения уровня помогает предотвратить ошибки и поддерживать корректную логику игрового процесса. Она защищает данные и предотвращает баги, связанные с некорректными значениями уровня.6 d2 J* W. ~, ]# m" k
$ H, L  N& C8 G, q1 J6 Q
P.S.
* W) L; b! L: {- V! o- pДаже если у нас не получится "прокачаться", зато будем уверены, что наш уровень всегда правильный! ?7 t1 \6 p( p2 }2 W6 }& \

+ A) d: A, u. ~% h- N& s, N& f+ {, d$ b$ ~
Чтобы ответить, вам надо авторизироваться в системе Вход | Зарегистрироваться

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

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

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

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

подписок0

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

постов9

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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