Top.Mail.Ru

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

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

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

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

x
Последний раз это сообщение было отредактировано Astraliya в 2024-10-17 21:34 9 ?. p+ ]7 L" w* o( ^/ ]
" h1 {3 Y% C: A, R$ V( a
' B$ u$ u2 X, V! \
Шаг 1.3: Продолжение темы методов и инкапсуляции на примере L2J_Mobius
$ v8 P* w6 F: |/ H4 _) u) j3 }% N) o) Z( e* W% ?$ T8 J) @

, m6 Z" D" e! ^; c0 K' }9 L# t* @Добро пожаловать в обсуждение третьего шага нашего цикла статей по разработке серверов на основе L2J_Mobius! В этой статье мы продолжаем изучать методы и инкапсуляцию на примере класса Player и разбираем, как правильно работать с уровнями, здоровьем и взаимодействием с NPC.2 K0 t# P) n) [
Здесь можно:
# ?: q- Z9 T% U6 x: z4 y
  • Задать вопросы о геттерах и сеттерах в L2J_Mobius.
  • Обсудить логику проверки данных в методах.
  • Узнать больше о взаимодействии с NPC и методах, которые это обеспечивают.
    * V! `8 Q7 \6 R, I6 ]; P

" c4 ]. ~# G8 ^- U. E' m1 y7 E8 `8 @Не стесняйтесь делиться своими вопросами, предложениями и примерами! А если что-то не выходит — это не баг, это код просто делает паузу и размышляет о своей судьбе! ?
) A- M0 @) b  s7 YАстралия ?+ w" _: O  |! w+ T( f& L

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

AlexCoder Опубликовано 2024-10-17 22:32:08 | Показать все сообщения
Можешь подробнее объяснить, почему мы проверяем значение уровня в методе setLevel() перед его установкой? Почему нельзя просто присвоить любое значение?
 Автор| Astraliya Опубликовано 2024-10-17 23:00:07 | Показать все сообщения
AlexCoder опубликовал в 2024-10-17 22:32
' i% M; y+ U, P# V$ SМожешь подробнее объяснить, почему мы проверяем значе ...

) J: V7 R; ^1 h5 r) AПривет, AlexCoder!
6 s1 K5 v5 q  f0 G4 s1 M4 c& M# E: NДавай разберём подробнее, почему важно проверять значение уровня в методе setLevel() перед его установкой. Это связано с защитой данных и соблюдением логики игрового процесса.
5 U+ n" @# Y( ?; D
1. Защита от некорректных данных$ R+ {2 b! ~1 t+ L8 H) s$ G
Если мы не будем проверять значение уровня, можно случайно присвоить игроку отрицательный уровень или ноль, что нарушит логику игры. Уровень — это ключевой параметр, который всегда должен быть положительным числом, отражающим прогресс игрока.: T/ r7 X. H7 y6 J2 Q7 w
Пример на основе Player.java из L2J_Mobius:; F9 u3 Q: i  o# H" ?9 B
  1. public void setLevel(int newLevel) {  // public void установитьУровень(int новыйУровень)
    / H% R2 |$ c5 j) b/ U+ p) D' `3 h
  2.     // Проверяем, что новый уровень больше 0
    0 j# j/ [0 L3 }) f
  3.     if (newLevel > 0) {
    ; v/ k- {; E( f/ Q% G9 A) u
  4.         this.level = newLevel;  // Устанавливаем новый уровень
    3 q! }- O7 L0 I
  5.     } else {
    " o: z. F! B/ |* e/ S) B8 n
  6.         System.out.println("Неверный уровень: уровень должен быть больше 0");! i. D- B/ @5 G) t& O
  7.     }
    % V: x& [& L: H/ C8 c. u( ~9 ~
  8. }$ M% o1 ^$ h" n" i6 L
Скопировать код
Перевод и пояснение:; F& P  i/ w5 e( N0 b
setLevel(int newLevel) — метод для установки уровня игрока." u; A! q' x5 I8 s
Мы проверяем, что новый уровень больше 0:" t9 m# @" m$ q! O( c  O$ I# a
  1. if (newLevel > 0)
    ' w3 i1 c, o4 g% z) N
Скопировать код
Это предотвращает присвоение некорректных значений уровня (например, отрицательных или нулевых).
, i+ I% Y* k( [, q& o8 j; l/ Q' J( qЕсли условие выполняется, уровень устанавливается
% _5 M, _2 ], f: `+ {  d7 c6 f
  1. this.level = newLevel;. m# R  k+ p+ |+ k  m6 c
Скопировать код
Если новый уровень меньше или равен 0, выводится сообщение об ошибке:% K- k2 @; V/ [

# X* r3 n' s2 a4 W6 B
  1. System.out.println("Неверный уровень: уровень должен быть больше 0");* w( y; }- i9 R# Z6 }' e* Q
Скопировать код
2. Логика игрового процесса$ s+ _2 r, O) a: g( V2 ~/ n
Представь, если бы у игрока был отрицательный уровень — это могло бы нарушить баланс игры. Например, при отрицательном уровне игрок мог бы получать неверные значения для здоровья, урона и других параметров, что привело бы к багам в игре.' c& D' y2 X& r2 L
Итог:Проверка значения уровня помогает предотвратить ошибки и поддерживать корректную логику игрового процесса. Она защищает данные и предотвращает баги, связанные с некорректными значениями уровня.- N7 F! M# q5 T. W

3 X8 f2 O, A2 X. ^4 H: ?P.S.$ j/ W' W6 A- t1 l1 s
Даже если у нас не получится "прокачаться", зато будем уверены, что наш уровень всегда правильный! ?
3 s3 T* o9 s  J! U7 [, ^
& Y8 T# r) _3 C3 i* h
9 N  y4 J, ^1 ?2 A
Чтобы ответить, вам надо авторизироваться в системе Вход | Зарегистрироваться

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

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

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

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

подписок0

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

постов9

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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