Top.Mail.Ru

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

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

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

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

x
Последний раз это сообщение было отредактировано Astraliya в 2024-10-17 21:34 ' b5 x) {3 P0 M6 }( F( N/ u
& D: j8 i8 a" \7 K, B% ?  s
. f) E( I1 {7 H4 f
Шаг 1.3: Продолжение темы методов и инкапсуляции на примере L2J_Mobius# b3 k  [  O) C0 W  B, w9 I; A
7 W% T; C/ P- S+ W2 o# d) F

0 g8 x5 d/ C, \, \Добро пожаловать в обсуждение третьего шага нашего цикла статей по разработке серверов на основе L2J_Mobius! В этой статье мы продолжаем изучать методы и инкапсуляцию на примере класса Player и разбираем, как правильно работать с уровнями, здоровьем и взаимодействием с NPC.
( z' K9 x* o6 d& mЗдесь можно:0 Y" X2 J9 `4 c3 j
  • Задать вопросы о геттерах и сеттерах в L2J_Mobius.
  • Обсудить логику проверки данных в методах.
  • Узнать больше о взаимодействии с NPC и методах, которые это обеспечивают.
      r( f! X6 t7 l0 F% \

) K( a# }+ ^0 x+ `% ^3 X) oНе стесняйтесь делиться своими вопросами, предложениями и примерами! А если что-то не выходит — это не баг, это код просто делает паузу и размышляет о своей судьбе! ?2 ~1 q9 t$ m7 d' v6 ^
Астралия ?7 v" I& K1 O9 Z# y5 T: c6 n- a

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

AlexCoder Опубликовано 2024-10-17 22:32:08 | Показать все сообщения
Можешь подробнее объяснить, почему мы проверяем значение уровня в методе setLevel() перед его установкой? Почему нельзя просто присвоить любое значение?
 Автор| Astraliya Опубликовано 2024-10-17 23:00:07 | Показать все сообщения
AlexCoder опубликовал в 2024-10-17 22:320 q( o" V/ W4 ~: R. H
Можешь подробнее объяснить, почему мы проверяем значе ...

9 |/ S1 A- w8 u  EПривет, AlexCoder!, I; w  S  J) T( ]& v
Давай разберём подробнее, почему важно проверять значение уровня в методе setLevel() перед его установкой. Это связано с защитой данных и соблюдением логики игрового процесса.! w& B3 g7 i- y9 z2 ~: h7 G2 K

1. Защита от некорректных данных2 E  i2 m5 P% ^9 c
Если мы не будем проверять значение уровня, можно случайно присвоить игроку отрицательный уровень или ноль, что нарушит логику игры. Уровень — это ключевой параметр, который всегда должен быть положительным числом, отражающим прогресс игрока.
0 R) Y+ M! I8 Y, f6 d0 w1 ]Пример на основе Player.java из L2J_Mobius:
8 }4 `: @6 w1 ]6 Z; Z! @4 M
  1. public void setLevel(int newLevel) {  // public void установитьУровень(int новыйУровень)  M2 A2 P, Z: |# K8 v
  2.     // Проверяем, что новый уровень больше 0
    7 v1 j" l& w! Q- f; L- l. e
  3.     if (newLevel > 0) {
    ( ?2 J' m* z( i* S; Y
  4.         this.level = newLevel;  // Устанавливаем новый уровень& P7 I" _0 V# ]4 o; y/ p( r
  5.     } else {
    # {" W3 t% r, J; j% E$ q$ u' V7 u
  6.         System.out.println("Неверный уровень: уровень должен быть больше 0");' w* J# ]. K8 ]! s. @
  7.     }
    , a6 U, K  O# R( i
  8. }8 h; d, q% E0 N% `* R+ K
Скопировать код
Перевод и пояснение:
1 y- E0 B4 j; MsetLevel(int newLevel) — метод для установки уровня игрока.
5 h. J7 r3 N# H0 O- k1 ZМы проверяем, что новый уровень больше 0:
$ ~0 O  t# y# V. t3 Q7 A/ u
  1. if (newLevel > 0)3 _; \7 g2 c# L+ A$ A; R6 m5 a
Скопировать код
Это предотвращает присвоение некорректных значений уровня (например, отрицательных или нулевых).' W/ \8 [# C! S; S
Если условие выполняется, уровень устанавливается9 S. c: _  K0 E6 b" w" `" I
  1. this.level = newLevel;
    $ G+ i9 g7 J& U' S6 k
Скопировать код
Если новый уровень меньше или равен 0, выводится сообщение об ошибке:* A8 o/ X+ m& g8 x2 m3 y, M
& e- y8 h4 D1 _1 b
  1. System.out.println("Неверный уровень: уровень должен быть больше 0");
    " e% V. w) i- Y4 o* v0 U9 a1 Q
Скопировать код
2. Логика игрового процесса
. G& ?( `- ?! |: e7 CПредставь, если бы у игрока был отрицательный уровень — это могло бы нарушить баланс игры. Например, при отрицательном уровне игрок мог бы получать неверные значения для здоровья, урона и других параметров, что привело бы к багам в игре.
2 X  s" V5 G7 |5 h7 k4 |0 XИтог:Проверка значения уровня помогает предотвратить ошибки и поддерживать корректную логику игрового процесса. Она защищает данные и предотвращает баги, связанные с некорректными значениями уровня.' S4 x7 E" v- ~! c# A5 K' F
; k1 r: n2 N3 g+ ^6 W
P.S.6 Z4 @$ J9 w5 J" ^0 S6 p
Даже если у нас не получится "прокачаться", зато будем уверены, что наш уровень всегда правильный! ?
  j0 O* n- D8 v& y  I
/ d. p4 P9 F# t" b# x6 b2 _8 o( w" I2 b. u) F( n9 j$ Q5 x
Чтобы ответить, вам надо авторизироваться в системе Вход | Зарегистрироваться

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

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

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

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

подписок0

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

постов9

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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