Top.Mail.Ru

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

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

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

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

x
Последний раз это сообщение было отредактировано Astraliya в 2024-10-17 21:34
4 W7 Z* W/ V& ~4 i5 n, Z! \, n! _/ ], d! t! N* g$ n3 l) S$ l" q

4 O/ H5 z, Q8 L7 U, M" ]! {: vШаг 1.3: Продолжение темы методов и инкапсуляции на примере L2J_Mobius* }& z6 v, I- A4 l: b: U

1 l# J- J3 F2 ]0 C' W( t% q' N/ r  K0 w" V
Добро пожаловать в обсуждение третьего шага нашего цикла статей по разработке серверов на основе L2J_Mobius! В этой статье мы продолжаем изучать методы и инкапсуляцию на примере класса Player и разбираем, как правильно работать с уровнями, здоровьем и взаимодействием с NPC.$ a* u4 t# z0 K# U8 J3 n  p# O
Здесь можно:9 d. \% t& |" L4 q5 V4 m3 L% Z6 H5 g
  • Задать вопросы о геттерах и сеттерах в L2J_Mobius.
  • Обсудить логику проверки данных в методах.
  • Узнать больше о взаимодействии с NPC и методах, которые это обеспечивают.( j5 n: ^* @, O* M- }

' [& Y& G5 e* v- ^Не стесняйтесь делиться своими вопросами, предложениями и примерами! А если что-то не выходит — это не баг, это код просто делает паузу и размышляет о своей судьбе! ?
: z2 g3 `) I" {7 S( _Астралия ?
4 I$ ^: ~' {* r5 G9 v( u! ^

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

AlexCoder Опубликовано 2024-10-17 22:32:08 | Показать все сообщения
Можешь подробнее объяснить, почему мы проверяем значение уровня в методе setLevel() перед его установкой? Почему нельзя просто присвоить любое значение?
 Автор| Astraliya Опубликовано 2024-10-17 23:00:07 | Показать все сообщения
AlexCoder опубликовал в 2024-10-17 22:32
2 r* u! D" V; d7 e+ AМожешь подробнее объяснить, почему мы проверяем значе ...

# u* c* i9 K2 ]6 G1 V/ d* {Привет, AlexCoder!& ~4 C! N8 B/ V( @
Давай разберём подробнее, почему важно проверять значение уровня в методе setLevel() перед его установкой. Это связано с защитой данных и соблюдением логики игрового процесса.
' t; q8 ~8 [: U4 T9 |; L
1. Защита от некорректных данных
1 I$ @& W& k) bЕсли мы не будем проверять значение уровня, можно случайно присвоить игроку отрицательный уровень или ноль, что нарушит логику игры. Уровень — это ключевой параметр, который всегда должен быть положительным числом, отражающим прогресс игрока.% C! g1 \. R$ }0 g# L% O" Z' F
Пример на основе Player.java из L2J_Mobius:
! ^: }* o* g* p
  1. public void setLevel(int newLevel) {  // public void установитьУровень(int новыйУровень)
    : j# u, F1 j- g9 L" O3 b  U1 L
  2.     // Проверяем, что новый уровень больше 05 Y: c/ N/ d; i! f; S
  3.     if (newLevel > 0) {( c' |! m" V) [% E% u( ~, z* X
  4.         this.level = newLevel;  // Устанавливаем новый уровень- O6 _3 {) y; C
  5.     } else {
    9 y0 a$ x& ~3 }- @4 g, @
  6.         System.out.println("Неверный уровень: уровень должен быть больше 0");6 J: J% E- {/ d- W. R6 o
  7.     }) X$ E9 W; B, m6 Q
  8. }; t+ Y! p% P8 k+ }" T! _
Скопировать код
Перевод и пояснение:4 d0 _3 }9 z; w4 S
setLevel(int newLevel) — метод для установки уровня игрока.
9 m+ T1 S+ w$ L* b/ tМы проверяем, что новый уровень больше 0:
/ J2 o" y, S/ @) J7 R2 c; ^
  1. if (newLevel > 0): H8 a; q  c2 T7 j9 n
Скопировать код
Это предотвращает присвоение некорректных значений уровня (например, отрицательных или нулевых).
4 A. Y. X" s; k3 ^( }$ [: V' gЕсли условие выполняется, уровень устанавливается% L9 f1 z+ ?' s" r- H( o1 C
  1. this.level = newLevel;
    ( n2 u8 R. Z& }1 {( J3 r
Скопировать код
Если новый уровень меньше или равен 0, выводится сообщение об ошибке:
) _) |+ V5 O7 ]. x1 |0 M+ w$ ^- ]- E9 Z- c7 `
  1. System.out.println("Неверный уровень: уровень должен быть больше 0");
    & H* L# @  A# `0 N4 G
Скопировать код
2. Логика игрового процесса$ G: Z# X* U0 x) f; N, U( ]* n
Представь, если бы у игрока был отрицательный уровень — это могло бы нарушить баланс игры. Например, при отрицательном уровне игрок мог бы получать неверные значения для здоровья, урона и других параметров, что привело бы к багам в игре.$ Q& {9 _4 Z7 G: H# r+ M
Итог:Проверка значения уровня помогает предотвратить ошибки и поддерживать корректную логику игрового процесса. Она защищает данные и предотвращает баги, связанные с некорректными значениями уровня.+ V0 B1 l6 D* @

0 ^, x1 g. I- ^, X/ PP.S.
/ C! t# T3 O" dДаже если у нас не получится "прокачаться", зато будем уверены, что наш уровень всегда правильный! ?) j' H4 L; ~" P3 J/ s

6 M, W; I" b& a+ M, O8 M8 l4 u$ m3 N* y4 h* T, ^
Чтобы ответить, вам надо авторизироваться в системе Вход | Зарегистрироваться

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

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

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

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

подписок0

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

постов9

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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