Top.Mail.Ru

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

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

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

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

x
Последний раз это сообщение было отредактировано Astraliya в 2024-10-17 21:34 9 k: w0 r0 [: W9 r

/ s7 c$ C! J1 ]% i7 R# B2 f, ?4 ]' h3 B. i; E0 H6 R* b8 Q
Шаг 1.3: Продолжение темы методов и инкапсуляции на примере L2J_Mobius- f. f+ v+ V# c% h/ ?

2 L" J6 J5 C, i2 q" m/ ?- p/ A2 M" o$ J7 r7 ]
Добро пожаловать в обсуждение третьего шага нашего цикла статей по разработке серверов на основе L2J_Mobius! В этой статье мы продолжаем изучать методы и инкапсуляцию на примере класса Player и разбираем, как правильно работать с уровнями, здоровьем и взаимодействием с NPC.$ E3 X0 \" K: S
Здесь можно:
, z+ h8 ~& |8 v0 Z3 z
  • Задать вопросы о геттерах и сеттерах в L2J_Mobius.
  • Обсудить логику проверки данных в методах.
  • Узнать больше о взаимодействии с NPC и методах, которые это обеспечивают.
    3 \4 }+ f5 h4 y  n0 C

8 {4 b( X# y& R1 b8 DНе стесняйтесь делиться своими вопросами, предложениями и примерами! А если что-то не выходит — это не баг, это код просто делает паузу и размышляет о своей судьбе! ?+ K  R. k; J& [1 ?& v. x' w+ @
Астралия ?' F, f" F( E. W2 L( O, H$ [; c; w

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

AlexCoder Опубликовано 2024-10-17 22:32:08 | Показать все сообщения
Можешь подробнее объяснить, почему мы проверяем значение уровня в методе setLevel() перед его установкой? Почему нельзя просто присвоить любое значение?
 Автор| Astraliya Опубликовано 2024-10-17 23:00:07 | Показать все сообщения
AlexCoder опубликовал в 2024-10-17 22:32
$ w4 F3 M+ x. C# Y9 u( Q/ vМожешь подробнее объяснить, почему мы проверяем значе ...

% o2 d1 O* r$ R: pПривет, AlexCoder!
( m5 `% k8 q7 r! o. j/ YДавай разберём подробнее, почему важно проверять значение уровня в методе setLevel() перед его установкой. Это связано с защитой данных и соблюдением логики игрового процесса.
- \2 b1 p$ Z1 B
1. Защита от некорректных данных, ~( C# g5 k/ [6 w; z  A! z
Если мы не будем проверять значение уровня, можно случайно присвоить игроку отрицательный уровень или ноль, что нарушит логику игры. Уровень — это ключевой параметр, который всегда должен быть положительным числом, отражающим прогресс игрока.
# _5 J' |6 I) o+ @' `) m" uПример на основе Player.java из L2J_Mobius:5 c' N' }  y/ M9 N9 v- D# P) s
  1. public void setLevel(int newLevel) {  // public void установитьУровень(int новыйУровень)+ [8 m$ ]9 ?" b$ I5 _; N9 c2 D
  2.     // Проверяем, что новый уровень больше 0
    : m$ v+ `& R6 C9 c$ _8 l
  3.     if (newLevel > 0) {3 X/ i1 M% [$ y! X  f) _. a
  4.         this.level = newLevel;  // Устанавливаем новый уровень
    9 P) m* T" ^* Q: Y9 ]
  5.     } else {
    6 c2 ^0 S; J; w1 Z5 J, j5 q
  6.         System.out.println("Неверный уровень: уровень должен быть больше 0");
    1 Y- S0 w$ y2 p: @1 i7 V/ L' l* w
  7.     }$ w& E, }7 T, `0 c) A, F: z
  8. }
    * I4 s8 B* F0 s- c$ }
Скопировать код
Перевод и пояснение:
  m$ K! N' d4 z- m' y  x$ QsetLevel(int newLevel) — метод для установки уровня игрока.( h- ]) L2 }$ n$ Y. }& ^
Мы проверяем, что новый уровень больше 0:8 j7 U6 V8 b/ {$ z7 T) O
  1. if (newLevel > 0)
    1 J4 i( y7 @' M+ D9 O9 \
Скопировать код
Это предотвращает присвоение некорректных значений уровня (например, отрицательных или нулевых).( d5 o1 s* d6 G8 E- q
Если условие выполняется, уровень устанавливается$ `8 @6 `& o) |; v; @  L1 l  K
  1. this.level = newLevel;
    + q& t. @; G" W( `2 q
Скопировать код
Если новый уровень меньше или равен 0, выводится сообщение об ошибке:9 r& m1 }, w+ v# A" `& V
0 Z- U+ g) F9 E# I% |* M, Q
  1. System.out.println("Неверный уровень: уровень должен быть больше 0");
    8 F+ |* v9 I: ~9 Z" p
Скопировать код
2. Логика игрового процесса4 v2 }9 p: }7 ?: V. `1 K: w
Представь, если бы у игрока был отрицательный уровень — это могло бы нарушить баланс игры. Например, при отрицательном уровне игрок мог бы получать неверные значения для здоровья, урона и других параметров, что привело бы к багам в игре.. W3 z9 k9 M  T' d9 h, G
Итог:Проверка значения уровня помогает предотвратить ошибки и поддерживать корректную логику игрового процесса. Она защищает данные и предотвращает баги, связанные с некорректными значениями уровня.
1 i+ w2 X, Q) }1 X. O. S- \8 t: b* N- \% x7 B
P.S.1 I8 u& @, C/ l- J
Даже если у нас не получится "прокачаться", зато будем уверены, что наш уровень всегда правильный! ?) x4 e. d4 |5 C" P4 h3 E6 u# J

4 s7 Z' u9 o7 z1 a
. n+ q% U" I4 E
Чтобы ответить, вам надо авторизироваться в системе Вход | Зарегистрироваться

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

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

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

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

подписок0

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

постов9

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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