Top.Mail.Ru

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

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

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

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

x
Последний раз это сообщение было отредактировано Astraliya в 2024-10-17 21:34 + i+ O: d! ]5 s1 n+ w/ o) p- e
% w. ~' B# C& e! {
/ d) y/ t7 [2 O  ^
Шаг 1.3: Продолжение темы методов и инкапсуляции на примере L2J_Mobius
6 Q) q- a) d1 U1 M7 d% j4 ]" |3 v5 |* f! I; h+ ]) B- M

* C& X2 J0 r7 g* y1 h- q9 b8 [Добро пожаловать в обсуждение третьего шага нашего цикла статей по разработке серверов на основе L2J_Mobius! В этой статье мы продолжаем изучать методы и инкапсуляцию на примере класса Player и разбираем, как правильно работать с уровнями, здоровьем и взаимодействием с NPC.
" ?0 Y( ?  ]/ H' k" o/ c5 oЗдесь можно:
  s. C7 \& B0 ~! \8 g) t' n1 l
  • Задать вопросы о геттерах и сеттерах в L2J_Mobius.
  • Обсудить логику проверки данных в методах.
  • Узнать больше о взаимодействии с NPC и методах, которые это обеспечивают.. I$ \( z% V: g& y2 N
: D2 w$ N" n* j- V
Не стесняйтесь делиться своими вопросами, предложениями и примерами! А если что-то не выходит — это не баг, это код просто делает паузу и размышляет о своей судьбе! ?1 k0 G: g* m, |6 h1 l/ _1 t$ Z/ z
Астралия ?, q! K( f( j, b( b# X

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

AlexCoder Опубликовано 2024-10-17 22:32:08 | Показать все сообщения
Можешь подробнее объяснить, почему мы проверяем значение уровня в методе setLevel() перед его установкой? Почему нельзя просто присвоить любое значение?
 Автор| Astraliya Опубликовано 2024-10-17 23:00:07 | Показать все сообщения
AlexCoder опубликовал в 2024-10-17 22:32
' N' ]+ d! {9 ^7 u- j4 EМожешь подробнее объяснить, почему мы проверяем значе ...
0 u$ C7 ?; @" ]; z
Привет, AlexCoder!
" j1 y# t0 G$ Z* sДавай разберём подробнее, почему важно проверять значение уровня в методе setLevel() перед его установкой. Это связано с защитой данных и соблюдением логики игрового процесса.
1 x- Z& O5 @* K, x9 X' U, q
1. Защита от некорректных данных5 |) [# d3 l0 f' h$ |
Если мы не будем проверять значение уровня, можно случайно присвоить игроку отрицательный уровень или ноль, что нарушит логику игры. Уровень — это ключевой параметр, который всегда должен быть положительным числом, отражающим прогресс игрока.% v6 D( c8 G, O& g; e/ t% }7 o) J
Пример на основе Player.java из L2J_Mobius:
8 C! k$ b5 |  l$ }) x! [
  1. public void setLevel(int newLevel) {  // public void установитьУровень(int новыйУровень)# M; ]; j. A( q  C7 o
  2.     // Проверяем, что новый уровень больше 0
    0 l5 s7 F7 U5 `7 Y+ O, T; y
  3.     if (newLevel > 0) {
    / G+ p& |. W/ i2 a
  4.         this.level = newLevel;  // Устанавливаем новый уровень! ^  G( O% E, q5 n! J4 g2 e
  5.     } else {
    / C" u" D  T9 i% O5 L! i8 n
  6.         System.out.println("Неверный уровень: уровень должен быть больше 0");
    + N: q+ Y% {/ s+ x* d5 l5 C
  7.     }
    4 W3 T2 r3 C5 q- t6 t! k
  8. }
    ' ~1 a! |1 C/ ]+ B& Z# M$ Y/ j2 p3 `
Скопировать код
Перевод и пояснение:$ S3 X! l' G. J; {" W1 r
setLevel(int newLevel) — метод для установки уровня игрока.$ l5 O7 g& Y# J- Z2 @6 L9 A& D
Мы проверяем, что новый уровень больше 0:7 p  b0 _8 U7 c" C! S% `
  1. if (newLevel > 0)( f2 m" ?/ {, S4 Q. e% S
Скопировать код
Это предотвращает присвоение некорректных значений уровня (например, отрицательных или нулевых).% G5 n! B  r6 g6 Z7 ?" w
Если условие выполняется, уровень устанавливается
9 W: s; u0 n8 k1 W/ S  C" Q
  1. this.level = newLevel;
    $ e/ e0 B+ S8 y7 ~, n4 G
Скопировать код
Если новый уровень меньше или равен 0, выводится сообщение об ошибке:
( D( C/ ~# {: g5 A8 L2 G9 L; U  v" s0 y: u9 J) y# Y5 S2 U. Y
  1. System.out.println("Неверный уровень: уровень должен быть больше 0");
    0 e' R- y4 l) o4 ~1 M. {. ~
Скопировать код
2. Логика игрового процесса
/ \3 a3 k! z- ^% N% |# uПредставь, если бы у игрока был отрицательный уровень — это могло бы нарушить баланс игры. Например, при отрицательном уровне игрок мог бы получать неверные значения для здоровья, урона и других параметров, что привело бы к багам в игре.
) [- U3 K8 P2 @$ ]% Q( LИтог:Проверка значения уровня помогает предотвратить ошибки и поддерживать корректную логику игрового процесса. Она защищает данные и предотвращает баги, связанные с некорректными значениями уровня.
, R8 f% ?, k+ g
7 g2 m+ T) O# b- V5 t, {% pP.S.! V- G! [0 g/ A% \! K
Даже если у нас не получится "прокачаться", зато будем уверены, что наш уровень всегда правильный! ?
: l+ h& ]; U6 z8 F# L7 e
9 i! s- G5 E- G  w
: w& I. I% N6 E, B# {
Чтобы ответить, вам надо авторизироваться в системе Вход | Зарегистрироваться

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

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

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

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

подписок0

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

постов9

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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