Top.Mail.Ru

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

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

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

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

x
Последний раз это сообщение было отредактировано Astraliya в 2024-10-17 21:34
# v+ q6 A. O6 F) f+ E( K8 b' E
. q* g7 U6 E0 y* E- w: {
Шаг 1.3: Продолжение темы методов и инкапсуляции на примере L2J_Mobius
( [- J2 F* @. l
! ]  e* S7 Z# ?! s1 v6 B' X* @$ [( T  {( _0 U1 f) N( [2 t7 r
Добро пожаловать в обсуждение третьего шага нашего цикла статей по разработке серверов на основе L2J_Mobius! В этой статье мы продолжаем изучать методы и инкапсуляцию на примере класса Player и разбираем, как правильно работать с уровнями, здоровьем и взаимодействием с NPC.5 f* n3 [: j6 }" C7 {# S& o8 L& e
Здесь можно:
0 ^- [/ [/ f0 u* q9 G8 ]
  • Задать вопросы о геттерах и сеттерах в L2J_Mobius.
  • Обсудить логику проверки данных в методах.
  • Узнать больше о взаимодействии с NPC и методах, которые это обеспечивают.
    $ b6 N6 o- v3 K* T; q

3 X* X0 b6 ?/ i, j9 S4 WНе стесняйтесь делиться своими вопросами, предложениями и примерами! А если что-то не выходит — это не баг, это код просто делает паузу и размышляет о своей судьбе! ?9 U$ ?# M) d1 o
Астралия ?$ p7 O, z2 Y* m9 L1 q9 F

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

AlexCoder Опубликовано 2024-10-17 22:32:08 | Показать все сообщения
Можешь подробнее объяснить, почему мы проверяем значение уровня в методе setLevel() перед его установкой? Почему нельзя просто присвоить любое значение?
 Автор| Astraliya Опубликовано 2024-10-17 23:00:07 | Показать все сообщения
AlexCoder опубликовал в 2024-10-17 22:32: Z0 G1 V, ]9 D& i  p0 J3 M
Можешь подробнее объяснить, почему мы проверяем значе ...
2 t  W% E$ N0 `
Привет, AlexCoder!; f% L/ J7 v5 h2 m8 Z8 v
Давай разберём подробнее, почему важно проверять значение уровня в методе setLevel() перед его установкой. Это связано с защитой данных и соблюдением логики игрового процесса.
2 }. T2 g$ @2 R' q/ L5 }3 r; q# D
1. Защита от некорректных данных' D9 [* ^4 x7 n+ U
Если мы не будем проверять значение уровня, можно случайно присвоить игроку отрицательный уровень или ноль, что нарушит логику игры. Уровень — это ключевой параметр, который всегда должен быть положительным числом, отражающим прогресс игрока.
" o2 H* d$ r/ b' L5 ]Пример на основе Player.java из L2J_Mobius:
4 h- \& c% r# I4 {2 o
  1. public void setLevel(int newLevel) {  // public void установитьУровень(int новыйУровень)
    4 U* k. T/ Q$ K) m2 z6 i( F- C% t! c
  2.     // Проверяем, что новый уровень больше 0: S; M9 ?$ s) Q% N9 V* Z8 w
  3.     if (newLevel > 0) {. C- D! F  O5 u+ [) _
  4.         this.level = newLevel;  // Устанавливаем новый уровень
      |9 B3 S0 G. g, f& ?' P# t
  5.     } else {
    ' \. J* U" _; R' _
  6.         System.out.println("Неверный уровень: уровень должен быть больше 0");8 x' v! m5 t. s% _; L" _
  7.     }
    & ]# ~1 s) }2 H; y1 U
  8. }1 w5 Z& F" a3 o
Скопировать код
Перевод и пояснение:7 ^" i0 M! K3 v
setLevel(int newLevel) — метод для установки уровня игрока.6 G3 D# B9 D6 l% O
Мы проверяем, что новый уровень больше 0:
  I3 @) }, D, B6 _4 c3 G5 O
  1. if (newLevel > 0)6 }; I8 f4 K0 z8 Z( d6 C+ {* b
Скопировать код
Это предотвращает присвоение некорректных значений уровня (например, отрицательных или нулевых).1 \$ D+ H7 u9 P$ M- M1 m* {) R3 z
Если условие выполняется, уровень устанавливается
  J3 W( ]6 ^$ a; X1 J# C
  1. this.level = newLevel;
    * V4 _6 @) P' c" c
Скопировать код
Если новый уровень меньше или равен 0, выводится сообщение об ошибке:* {! R" G4 A; ]* a, R' D
: N* Z) ^, ]5 q3 v% i# [3 W
  1. System.out.println("Неверный уровень: уровень должен быть больше 0");1 T% p3 _1 V" t9 i& K/ Y# L
Скопировать код
2. Логика игрового процесса
$ h, T0 J4 H" C2 [Представь, если бы у игрока был отрицательный уровень — это могло бы нарушить баланс игры. Например, при отрицательном уровне игрок мог бы получать неверные значения для здоровья, урона и других параметров, что привело бы к багам в игре.
. d/ c% s, _8 V4 y/ D0 jИтог:Проверка значения уровня помогает предотвратить ошибки и поддерживать корректную логику игрового процесса. Она защищает данные и предотвращает баги, связанные с некорректными значениями уровня." {0 F2 ?; L: \+ |/ I& W
. a& w$ d. B) L$ P
P.S.3 P, ?2 L/ s1 u$ {7 Z. f+ L
Даже если у нас не получится "прокачаться", зато будем уверены, что наш уровень всегда правильный! ?: M" F: Y  S. H8 }% a

0 a6 \0 I$ C7 a2 K* G- ~( C3 p6 U/ v* z9 E! O3 C4 f& K
Чтобы ответить, вам надо авторизироваться в системе Вход | Зарегистрироваться

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

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

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

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

подписок0

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

постов9

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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