Top.Mail.Ru

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

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

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

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

x
Последний раз это сообщение было отредактировано Astraliya в 2024-10-17 21:34 / j% Q' u& [% p& Y- ]8 Z- l3 b
' u  h# J! g2 Z" N9 G( |
: h) Z' O* x" s4 A) q: t7 Q* Q
Шаг 1.3: Продолжение темы методов и инкапсуляции на примере L2J_Mobius3 B$ `8 J' E* p; ^* o; ~' H1 S

& D" s3 q9 q( R9 @
7 v7 W) ], G+ S9 L1 U# MДобро пожаловать в обсуждение третьего шага нашего цикла статей по разработке серверов на основе L2J_Mobius! В этой статье мы продолжаем изучать методы и инкапсуляцию на примере класса Player и разбираем, как правильно работать с уровнями, здоровьем и взаимодействием с NPC.2 k( V# @3 j4 n+ l9 H1 D
Здесь можно:* R( d+ F- |3 O/ s+ c6 t
  • Задать вопросы о геттерах и сеттерах в L2J_Mobius.
  • Обсудить логику проверки данных в методах.
  • Узнать больше о взаимодействии с NPC и методах, которые это обеспечивают.0 U, L+ s& Y% F& z0 U; X

; b3 N' W9 a2 b/ o% GНе стесняйтесь делиться своими вопросами, предложениями и примерами! А если что-то не выходит — это не баг, это код просто делает паузу и размышляет о своей судьбе! ?2 }% {( A4 c* F% i' ?7 c; w
Астралия ?$ \+ K  m( g7 H! P' Y. H

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

AlexCoder Опубликовано 2024-10-17 22:32:08 | Показать все сообщения
Можешь подробнее объяснить, почему мы проверяем значение уровня в методе setLevel() перед его установкой? Почему нельзя просто присвоить любое значение?
 Автор| Astraliya Опубликовано 2024-10-17 23:00:07 | Показать все сообщения
AlexCoder опубликовал в 2024-10-17 22:328 m$ \0 g  ~5 ~0 \* t4 j( L
Можешь подробнее объяснить, почему мы проверяем значе ...

8 g$ ?6 R7 @; Y, vПривет, AlexCoder!% P1 I* U* o" N: U* v$ g0 [( r; }
Давай разберём подробнее, почему важно проверять значение уровня в методе setLevel() перед его установкой. Это связано с защитой данных и соблюдением логики игрового процесса.
8 c7 B) k4 H) g" p5 |1 b" m& ~
1. Защита от некорректных данных2 g/ E  K8 f0 k" d3 T& }
Если мы не будем проверять значение уровня, можно случайно присвоить игроку отрицательный уровень или ноль, что нарушит логику игры. Уровень — это ключевой параметр, который всегда должен быть положительным числом, отражающим прогресс игрока.
, Z0 l) q) m5 D8 @2 \( o+ uПример на основе Player.java из L2J_Mobius:
9 Q, g1 b+ j* ^& \$ B# I3 V
  1. public void setLevel(int newLevel) {  // public void установитьУровень(int новыйУровень)
    7 v& l0 I& m9 |2 {' b3 D0 Z. u/ M$ H( i
  2.     // Проверяем, что новый уровень больше 0/ Q1 [: `* S& V# L+ f0 \3 q7 M) B
  3.     if (newLevel > 0) {+ v) H$ J( [3 A: A. H% x
  4.         this.level = newLevel;  // Устанавливаем новый уровень
    1 k0 C1 `7 B( K' O
  5.     } else {
    ) x9 X" B$ ^/ i8 _' f
  6.         System.out.println("Неверный уровень: уровень должен быть больше 0");
    3 h% ]# ?! N! w3 Y  E
  7.     }
    1 ?5 }/ f% w) X" D- \
  8. }
    . a1 d4 }+ Y. m% U8 C
Скопировать код
Перевод и пояснение:
' G& H* T* w1 ?) A, C# N6 k* S6 HsetLevel(int newLevel) — метод для установки уровня игрока.
8 Y5 h* H1 x0 I: s) Z9 EМы проверяем, что новый уровень больше 0:. A' c* \8 Y3 q# M
  1. if (newLevel > 0)& ^4 B* H: E% N* X5 K* s
Скопировать код
Это предотвращает присвоение некорректных значений уровня (например, отрицательных или нулевых).
% V0 p+ D, H% I! E3 c4 Q. @5 VЕсли условие выполняется, уровень устанавливается" Q, W1 D! h7 q
  1. this.level = newLevel;
    - O. ~' ^0 o0 e# s! @3 C
Скопировать код
Если новый уровень меньше или равен 0, выводится сообщение об ошибке:
7 K8 f! L5 d$ F$ o2 D$ g2 Y7 I+ Q/ ^8 B
  1. System.out.println("Неверный уровень: уровень должен быть больше 0");
    0 Y8 d. _2 p6 o& _& |7 z" }) m" {( ?
Скопировать код
2. Логика игрового процесса! T( E; {/ C( V( Q( Y
Представь, если бы у игрока был отрицательный уровень — это могло бы нарушить баланс игры. Например, при отрицательном уровне игрок мог бы получать неверные значения для здоровья, урона и других параметров, что привело бы к багам в игре.
% ?5 ?3 w+ P* W  Y# Y% FИтог:Проверка значения уровня помогает предотвратить ошибки и поддерживать корректную логику игрового процесса. Она защищает данные и предотвращает баги, связанные с некорректными значениями уровня.
3 a/ ]8 i4 E) b" P' C% Q
( i, n7 J' j  j1 ^+ ]P.S.; U8 P$ v& B1 @; z! y  b
Даже если у нас не получится "прокачаться", зато будем уверены, что наш уровень всегда правильный! ?* ?& T! c) o% M8 F
6 |' R1 r8 W' A) K  e6 I- r

& O! }( X9 S4 T. O
Чтобы ответить, вам надо авторизироваться в системе Вход | Зарегистрироваться

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

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

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

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

подписок0

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

постов9

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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