Top.Mail.Ru

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

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

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

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

x
Последний раз это сообщение было отредактировано Astraliya в 2024-10-17 21:34 5 I9 V6 ^- U8 J# g% A

* ~( J* u  D8 C6 P, \- u; V
8 M9 b& h1 H. \% ^Шаг 1.3: Продолжение темы методов и инкапсуляции на примере L2J_Mobius) X9 o: y; `7 J4 }) ]6 u2 q$ ]

0 c3 l2 C! s' f& w$ M9 Q
& N# S+ |6 w5 n8 U; |5 y$ ]Добро пожаловать в обсуждение третьего шага нашего цикла статей по разработке серверов на основе L2J_Mobius! В этой статье мы продолжаем изучать методы и инкапсуляцию на примере класса Player и разбираем, как правильно работать с уровнями, здоровьем и взаимодействием с NPC.5 Q, w) u# P0 D$ s6 f
Здесь можно:$ m$ p; i2 |  G
  • Задать вопросы о геттерах и сеттерах в L2J_Mobius.
  • Обсудить логику проверки данных в методах.
  • Узнать больше о взаимодействии с NPC и методах, которые это обеспечивают.% P: a9 ^: A0 o9 w

) L% o- s0 C' |) A8 ]" `- i; U4 k' wНе стесняйтесь делиться своими вопросами, предложениями и примерами! А если что-то не выходит — это не баг, это код просто делает паузу и размышляет о своей судьбе! ?( z( n% C; O, o" r
Астралия ?& }8 @/ ]: d4 j! ^! t  \. Y

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

AlexCoder Опубликовано 2024-10-17 22:32:08 | Показать все сообщения
Можешь подробнее объяснить, почему мы проверяем значение уровня в методе setLevel() перед его установкой? Почему нельзя просто присвоить любое значение?
 Автор| Astraliya Опубликовано 2024-10-17 23:00:07 | Показать все сообщения
AlexCoder опубликовал в 2024-10-17 22:32
2 a0 q) u. t$ u. Q! nМожешь подробнее объяснить, почему мы проверяем значе ...

% o* M# h, Z, ~! f6 g: V2 wПривет, AlexCoder!9 ~( E+ H2 z4 |0 b$ p: N( {+ ?0 p
Давай разберём подробнее, почему важно проверять значение уровня в методе setLevel() перед его установкой. Это связано с защитой данных и соблюдением логики игрового процесса.
# u7 L* [1 \, j  I( ^. b1 B
1. Защита от некорректных данных8 s: ?" \5 X9 {0 e
Если мы не будем проверять значение уровня, можно случайно присвоить игроку отрицательный уровень или ноль, что нарушит логику игры. Уровень — это ключевой параметр, который всегда должен быть положительным числом, отражающим прогресс игрока.4 @% p8 v$ V' j5 \
Пример на основе Player.java из L2J_Mobius:
! u. p7 w. T& A" w2 D
  1. public void setLevel(int newLevel) {  // public void установитьУровень(int новыйУровень)
    / a8 X$ Q. o. ]$ A4 O
  2.     // Проверяем, что новый уровень больше 0
    0 k  f7 M1 H/ ^" F  p
  3.     if (newLevel > 0) {
    $ \- i2 y5 S* s8 D# }
  4.         this.level = newLevel;  // Устанавливаем новый уровень
    % ]# Z2 {$ S* _" n$ `/ |: z
  5.     } else {
    7 H& ?: M1 d+ A* F, V: T
  6.         System.out.println("Неверный уровень: уровень должен быть больше 0");
    4 \- X7 R% D" q: m  Z- v$ `3 m
  7.     }
    ! e) L( d- n, R3 w2 `/ o
  8. }7 P' M- [1 Y5 j/ R" |8 q; U/ I
Скопировать код
Перевод и пояснение:
0 ?$ t( u1 h7 TsetLevel(int newLevel) — метод для установки уровня игрока.
% w9 l7 e7 ]" ~% H8 cМы проверяем, что новый уровень больше 0:
0 H1 _! ^: G( t1 V0 d, R& P
  1. if (newLevel > 0)
    7 D+ m& F9 W% b# B# M) ~
Скопировать код
Это предотвращает присвоение некорректных значений уровня (например, отрицательных или нулевых).
) V5 T. R: W3 q1 }Если условие выполняется, уровень устанавливается
+ o; L  I% L( Y  b
  1. this.level = newLevel;  [2 b/ W1 R3 G
Скопировать код
Если новый уровень меньше или равен 0, выводится сообщение об ошибке:
* h7 J: O& M5 Y3 N3 \( ~6 Q% q
7 ^: v0 p3 g! m# T
  1. System.out.println("Неверный уровень: уровень должен быть больше 0");
    + o8 w1 k; ^6 W9 G' @
Скопировать код
2. Логика игрового процесса( E8 y, {3 [6 \& X
Представь, если бы у игрока был отрицательный уровень — это могло бы нарушить баланс игры. Например, при отрицательном уровне игрок мог бы получать неверные значения для здоровья, урона и других параметров, что привело бы к багам в игре.8 w0 _. I3 P" w2 g6 U
Итог:Проверка значения уровня помогает предотвратить ошибки и поддерживать корректную логику игрового процесса. Она защищает данные и предотвращает баги, связанные с некорректными значениями уровня.
/ ~( s, ?' s# ^/ l, v9 V, a9 Z7 H+ S
P.S.. ?$ R1 q* l7 X3 |4 J1 s! }
Даже если у нас не получится "прокачаться", зато будем уверены, что наш уровень всегда правильный! ?$ C& ^5 ]" p- n/ Z! O( l& k

/ p/ D5 e2 f3 @! A/ I( }
- f- F2 ~; H/ A$ J1 i$ {: W2 g" |
Чтобы ответить, вам надо авторизироваться в системе Вход | Зарегистрироваться

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

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

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

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

подписок0

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

постов9

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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