Top.Mail.Ru

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

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

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

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

x
Последний раз это сообщение было отредактировано Astraliya в 2024-10-17 21:34 ( {8 l$ t, Q0 d" d7 _- R1 d

* {5 }: ]7 L# I
8 U* ~6 Y9 k  ?0 M/ ?6 zШаг 1.3: Продолжение темы методов и инкапсуляции на примере L2J_Mobius7 N. h& }% K" Y# j& g' y

/ G! s& T" ?7 A) H1 s& j! z1 I7 {8 W" Q. X7 B# g
Добро пожаловать в обсуждение третьего шага нашего цикла статей по разработке серверов на основе L2J_Mobius! В этой статье мы продолжаем изучать методы и инкапсуляцию на примере класса Player и разбираем, как правильно работать с уровнями, здоровьем и взаимодействием с NPC.  L0 e$ R6 X; I! `5 K! v/ t
Здесь можно:+ W$ X( C" ?. j6 {* V# t& O
  • Задать вопросы о геттерах и сеттерах в L2J_Mobius.
  • Обсудить логику проверки данных в методах.
  • Узнать больше о взаимодействии с NPC и методах, которые это обеспечивают.9 U- h6 @: f, K8 |/ s7 o/ c% m
& _. m( C' c4 m) D# `
Не стесняйтесь делиться своими вопросами, предложениями и примерами! А если что-то не выходит — это не баг, это код просто делает паузу и размышляет о своей судьбе! ?
, ]: b& H' {) H/ O& Q/ s5 q/ i: @Астралия ?( u0 ?# i$ b" O( |* D: n6 H0 @

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

AlexCoder Опубликовано 2024-10-17 22:32:08 | Показать все сообщения
Можешь подробнее объяснить, почему мы проверяем значение уровня в методе setLevel() перед его установкой? Почему нельзя просто присвоить любое значение?
 Автор| Astraliya Опубликовано 2024-10-17 23:00:07 | Показать все сообщения
AlexCoder опубликовал в 2024-10-17 22:321 o( E- v# T! Q$ \% P& a8 S
Можешь подробнее объяснить, почему мы проверяем значе ...
& }3 X4 K" _3 d. Z6 M
Привет, AlexCoder!( a5 X& |" f  m3 R( W. v2 N- Z
Давай разберём подробнее, почему важно проверять значение уровня в методе setLevel() перед его установкой. Это связано с защитой данных и соблюдением логики игрового процесса.6 _) d& h& j, S( B# N3 ^: K6 n. ^

1. Защита от некорректных данных
4 ]) v* p' {' ]& Z( MЕсли мы не будем проверять значение уровня, можно случайно присвоить игроку отрицательный уровень или ноль, что нарушит логику игры. Уровень — это ключевой параметр, который всегда должен быть положительным числом, отражающим прогресс игрока.
2 G% O9 e* H2 z/ G& JПример на основе Player.java из L2J_Mobius:
8 T! w' g) A- o& j
  1. public void setLevel(int newLevel) {  // public void установитьУровень(int новыйУровень)
    , p* p9 s: |5 }  ^# {1 }' B
  2.     // Проверяем, что новый уровень больше 0, Y) t0 A. G6 m. J+ E: ]
  3.     if (newLevel > 0) {! }5 O9 q2 n9 m- T0 B* b
  4.         this.level = newLevel;  // Устанавливаем новый уровень) e, G( J0 L- J0 J! i/ y
  5.     } else {; T, D; |" X/ Z* R7 h$ R+ R
  6.         System.out.println("Неверный уровень: уровень должен быть больше 0");+ w" f) k, S# T/ A0 c$ H7 U
  7.     }3 Y0 F! S4 y3 C9 w( }: q
  8. }
    0 v3 e5 \, }' I8 C& u, O
Скопировать код
Перевод и пояснение:
/ }* X7 m2 ?) N9 e* e1 y3 X& S4 nsetLevel(int newLevel) — метод для установки уровня игрока.
3 v6 n4 i. E2 k" }' b' EМы проверяем, что новый уровень больше 0:
; k* x0 N$ O0 G7 {) {2 s5 ]
  1. if (newLevel > 0)( A8 ?* m1 T( ^- K7 c1 Y; b) C) R  `
Скопировать код
Это предотвращает присвоение некорректных значений уровня (например, отрицательных или нулевых).
' }$ J* k, R/ d. F% CЕсли условие выполняется, уровень устанавливается& ^# u7 q0 b! }. ]& [- |, A" b  e3 m
  1. this.level = newLevel;, f$ G. P) m' B6 r
Скопировать код
Если новый уровень меньше или равен 0, выводится сообщение об ошибке:
8 L- V  s0 ]# D5 M  |. G0 H( `9 Y8 x- Z' E
  1. System.out.println("Неверный уровень: уровень должен быть больше 0");
    / E1 {7 N1 n9 W: j! U3 }6 j& V+ `
Скопировать код
2. Логика игрового процесса
# T- y7 ]/ U( ~/ g6 CПредставь, если бы у игрока был отрицательный уровень — это могло бы нарушить баланс игры. Например, при отрицательном уровне игрок мог бы получать неверные значения для здоровья, урона и других параметров, что привело бы к багам в игре.9 Z, M2 c% G/ _' Q
Итог:Проверка значения уровня помогает предотвратить ошибки и поддерживать корректную логику игрового процесса. Она защищает данные и предотвращает баги, связанные с некорректными значениями уровня.
: \9 E/ W5 X% X0 S3 V; }$ [2 U! b5 h7 c0 v" S
P.S.
, B0 U2 l# i7 w  o/ `6 bДаже если у нас не получится "прокачаться", зато будем уверены, что наш уровень всегда правильный! ?
9 i( h1 [) n% g) e9 \
3 u7 S  N$ |5 E; j  W
( S  \4 y  a8 T& U( O9 |
Чтобы ответить, вам надо авторизироваться в системе Вход | Зарегистрироваться

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

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

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

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

подписок0

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

постов9

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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