Top.Mail.Ru

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

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

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

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

x
Последний раз это сообщение было отредактировано Astraliya в 2024-10-17 21:34
" ^8 ]) h3 E8 B  E5 r  y* e3 W% a+ V  R$ `% w

, {" d" b0 d3 x/ U& w7 x" e8 SШаг 1.3: Продолжение темы методов и инкапсуляции на примере L2J_Mobius
/ o1 h# [1 e) [% ~. g  `% i/ W) w1 M

$ u/ z" E& [' w1 k+ L4 P3 BДобро пожаловать в обсуждение третьего шага нашего цикла статей по разработке серверов на основе L2J_Mobius! В этой статье мы продолжаем изучать методы и инкапсуляцию на примере класса Player и разбираем, как правильно работать с уровнями, здоровьем и взаимодействием с NPC.
$ s, k( B- @+ L% h7 M0 aЗдесь можно:* P2 c+ u* V/ M) L9 U+ v# [4 f
  • Задать вопросы о геттерах и сеттерах в L2J_Mobius.
  • Обсудить логику проверки данных в методах.
  • Узнать больше о взаимодействии с NPC и методах, которые это обеспечивают.
    ; U  m6 Y: Z1 z3 Z1 Z, v8 n
$ X+ y! i! \) b- I' n
Не стесняйтесь делиться своими вопросами, предложениями и примерами! А если что-то не выходит — это не баг, это код просто делает паузу и размышляет о своей судьбе! ?
2 W2 E( G. l3 y+ {- R6 sАстралия ?  m! r, x+ @, R5 i: m5 z+ A

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

AlexCoder Опубликовано 2024-10-17 22:32:08 | Показать все сообщения
Можешь подробнее объяснить, почему мы проверяем значение уровня в методе setLevel() перед его установкой? Почему нельзя просто присвоить любое значение?
 Автор| Astraliya Опубликовано 2024-10-17 23:00:07 | Показать все сообщения
AlexCoder опубликовал в 2024-10-17 22:32
) f- ?( _1 g. BМожешь подробнее объяснить, почему мы проверяем значе ...
' P  T% r- L2 O  V
Привет, AlexCoder!
$ b9 N; M% h1 g$ J" t/ LДавай разберём подробнее, почему важно проверять значение уровня в методе setLevel() перед его установкой. Это связано с защитой данных и соблюдением логики игрового процесса.9 O9 |0 @+ M" c! b! Z3 }! a1 _7 A

1. Защита от некорректных данных( x5 t' a" X# q3 J9 P  {
Если мы не будем проверять значение уровня, можно случайно присвоить игроку отрицательный уровень или ноль, что нарушит логику игры. Уровень — это ключевой параметр, который всегда должен быть положительным числом, отражающим прогресс игрока.4 q. u( L0 ]* ?  W: w
Пример на основе Player.java из L2J_Mobius:
% S2 I2 p# y2 f3 p
  1. public void setLevel(int newLevel) {  // public void установитьУровень(int новыйУровень)
    - R+ L$ F. `3 S( x" u
  2.     // Проверяем, что новый уровень больше 0
    : O; D- e: y; t+ V
  3.     if (newLevel > 0) {
    " H* P2 g. L9 c; J
  4.         this.level = newLevel;  // Устанавливаем новый уровень
    1 q- D) Y8 Y1 Q, ?& y1 @
  5.     } else {
    2 O* p. P% b! a2 X$ ~
  6.         System.out.println("Неверный уровень: уровень должен быть больше 0");
    0 q+ F4 F  h0 a8 b( O8 N
  7.     }
    + Q% Q1 ?! |# O! ^, `8 ]: g1 c+ C
  8. }, b( Z6 P4 m' B( w8 e
Скопировать код
Перевод и пояснение:
: J& l/ X" b' a0 {9 g1 |setLevel(int newLevel) — метод для установки уровня игрока.
0 v  e8 z+ q  H, B4 _Мы проверяем, что новый уровень больше 0:( ?7 v/ j5 G+ E7 T; e4 B% c
  1. if (newLevel > 0)# @: }- q/ ^& Y7 H3 H5 P- w
Скопировать код
Это предотвращает присвоение некорректных значений уровня (например, отрицательных или нулевых).
+ W2 ~! J# q" RЕсли условие выполняется, уровень устанавливается
* a/ o' v! y5 ^4 C
  1. this.level = newLevel;: G) w; N$ l; \% D
Скопировать код
Если новый уровень меньше или равен 0, выводится сообщение об ошибке:
1 @; z2 |5 I6 I: g8 H/ S0 D2 a1 `8 }# K7 i  S& H" u
  1. System.out.println("Неверный уровень: уровень должен быть больше 0");+ y0 V1 f6 a& U  d
Скопировать код
2. Логика игрового процесса
: U$ I" e8 D2 @& d8 MПредставь, если бы у игрока был отрицательный уровень — это могло бы нарушить баланс игры. Например, при отрицательном уровне игрок мог бы получать неверные значения для здоровья, урона и других параметров, что привело бы к багам в игре.
. R. M9 ^$ p2 d0 o8 f5 c5 XИтог:Проверка значения уровня помогает предотвратить ошибки и поддерживать корректную логику игрового процесса. Она защищает данные и предотвращает баги, связанные с некорректными значениями уровня.6 t5 t9 s/ a6 X& ]3 E. E( u3 K7 Z- f0 r

7 f( V* b( c6 w6 q5 \' \P.S.
& K+ }+ k: Y2 _) i5 ^/ zДаже если у нас не получится "прокачаться", зато будем уверены, что наш уровень всегда правильный! ?
9 {" m( ^: C* Y: c& ^2 I" K- s( |4 k# n' Z7 U

( Z8 }! s3 o3 u4 C
Чтобы ответить, вам надо авторизироваться в системе Вход | Зарегистрироваться

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

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

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

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

подписок0

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

постов9

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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