Top.Mail.Ru

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

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

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

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

x
Последний раз это сообщение было отредактировано Astraliya в 2024-10-17 21:34
8 }7 n# o' z, y/ g7 Q( o% y& I% c; g" X( o( Q6 E3 x7 W
' O  W4 m) k% [# p' O3 L0 O6 ?
Шаг 1.3: Продолжение темы методов и инкапсуляции на примере L2J_Mobius
! r! Q# d9 }6 C8 t. q7 ^+ l9 N
! S1 a3 N# V9 F6 M+ i- y( ^; e% Q6 T( j0 o" x# F
Добро пожаловать в обсуждение третьего шага нашего цикла статей по разработке серверов на основе L2J_Mobius! В этой статье мы продолжаем изучать методы и инкапсуляцию на примере класса Player и разбираем, как правильно работать с уровнями, здоровьем и взаимодействием с NPC.# K- c: @7 Q' \0 g: m% D' w5 r
Здесь можно:
) g3 m- t' c! n, p; `( q
  • Задать вопросы о геттерах и сеттерах в L2J_Mobius.
  • Обсудить логику проверки данных в методах.
  • Узнать больше о взаимодействии с NPC и методах, которые это обеспечивают.& I" p( j' f" d$ f

/ N# M( f8 C: ?" d1 l  ^Не стесняйтесь делиться своими вопросами, предложениями и примерами! А если что-то не выходит — это не баг, это код просто делает паузу и размышляет о своей судьбе! 😄
5 H0 E. b& A2 J% G( ?Астралия 🌟: F1 f$ E8 B3 n# {6 z) }) q( ~

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

AlexCoder Опубликовано 2024-10-17 22:32:08 | Показать все сообщения
Можешь подробнее объяснить, почему мы проверяем значение уровня в методе setLevel() перед его установкой? Почему нельзя просто присвоить любое значение?
 Автор| Astraliya Опубликовано 2024-10-17 23:00:07 | Показать все сообщения
AlexCoder опубликовал в 2024-10-17 22:32
4 \) Q! ]3 o5 r( o/ B/ `  c; |( t8 cМожешь подробнее объяснить, почему мы проверяем значе ...
8 {3 f4 w9 X* P: f2 E1 T+ p* b' c
Привет, AlexCoder!( ]. c9 O& e* _. @+ a
Давай разберём подробнее, почему важно проверять значение уровня в методе setLevel() перед его установкой. Это связано с защитой данных и соблюдением логики игрового процесса.* A2 ^+ f. d  G

1. Защита от некорректных данных- f- H  `2 x. I, @6 d2 Q/ G
Если мы не будем проверять значение уровня, можно случайно присвоить игроку отрицательный уровень или ноль, что нарушит логику игры. Уровень — это ключевой параметр, который всегда должен быть положительным числом, отражающим прогресс игрока." ?9 w; W' p& n
Пример на основе Player.java из L2J_Mobius:
) x$ l; i+ I" V  t4 `* X
  1. public void setLevel(int newLevel) {  // public void установитьУровень(int новыйУровень)1 Y7 I  l. ]; `7 T* O% w
  2.     // Проверяем, что новый уровень больше 0
    : ?3 b) U7 R! |3 c, y* W
  3.     if (newLevel > 0) {
    # y$ u- H) Z$ J' @4 ~- b9 `5 L. W
  4.         this.level = newLevel;  // Устанавливаем новый уровень
    ( G: `' Y; M! L) u8 m. Y
  5.     } else {  X2 R- m# A# m, q2 t3 F2 m" K4 m
  6.         System.out.println("Неверный уровень: уровень должен быть больше 0");
      w2 J/ @2 v, D4 m8 r9 x9 g
  7.     }: T2 w; D( X# D& J# y" i- `2 L
  8. }
    0 _  F. b1 j( E% X
Скопировать код
Перевод и пояснение:9 |" j8 [  [" b6 N
setLevel(int newLevel) — метод для установки уровня игрока.1 \- M9 r+ q* i0 O' b4 D2 o$ m- s
Мы проверяем, что новый уровень больше 0:
& S, ^" x- S# P* L
  1. if (newLevel > 0)
    ; W# p2 t: @+ p  b/ e% d) q0 Q
Скопировать код
Это предотвращает присвоение некорректных значений уровня (например, отрицательных или нулевых).
8 [# O8 n0 i0 W2 SЕсли условие выполняется, уровень устанавливается
7 X# k1 w, U1 ?2 |) C% y% l
  1. this.level = newLevel;& Y" E1 d, \* \5 o) i
Скопировать код
Если новый уровень меньше или равен 0, выводится сообщение об ошибке:0 E2 C3 O7 c: u7 h
1 X& e( y4 R5 q
  1. System.out.println("Неверный уровень: уровень должен быть больше 0");- h1 T4 k: U$ w7 _  Y
Скопировать код
2. Логика игрового процесса
. i8 m0 F. i: d0 u: \4 p6 YПредставь, если бы у игрока был отрицательный уровень — это могло бы нарушить баланс игры. Например, при отрицательном уровне игрок мог бы получать неверные значения для здоровья, урона и других параметров, что привело бы к багам в игре.
; r$ s% G$ E8 [0 E8 k$ yИтог:Проверка значения уровня помогает предотвратить ошибки и поддерживать корректную логику игрового процесса. Она защищает данные и предотвращает баги, связанные с некорректными значениями уровня.! M' {/ ?. |6 A1 ]

1 j! n4 e' |: P0 ]3 d2 HP.S.
- L9 l+ r! l2 p; uДаже если у нас не получится "прокачаться", зато будем уверены, что наш уровень всегда правильный! 😄
: q+ a0 K9 F0 ]6 T5 J  u' y- H# R: L% M

4 x. }9 ?0 J, X; J
Чтобы ответить, вам надо авторизироваться в системе Вход | Зарегистрироваться

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

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

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

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

подписок0

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

постов9

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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