Top.Mail.Ru

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

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

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

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

x
Последний раз это сообщение было отредактировано Astraliya в 2024-10-17 21:34 % i$ t4 h; C& K' p" r# R
. k, b5 N) b: |0 T! z: R$ S+ y" N
: H' R$ e0 [; @
Шаг 1.3: Продолжение темы методов и инкапсуляции на примере L2J_Mobius
; l' H' V* U; j/ k( k: G: i; {$ B4 m( ~6 U
, R. Q# ~5 A1 p- b3 |, W  k
Добро пожаловать в обсуждение третьего шага нашего цикла статей по разработке серверов на основе L2J_Mobius! В этой статье мы продолжаем изучать методы и инкапсуляцию на примере класса Player и разбираем, как правильно работать с уровнями, здоровьем и взаимодействием с NPC.
" s% D5 A' Y9 l; |0 \) H$ BЗдесь можно:0 B7 a* p; n( L3 v
  • Задать вопросы о геттерах и сеттерах в L2J_Mobius.
  • Обсудить логику проверки данных в методах.
  • Узнать больше о взаимодействии с NPC и методах, которые это обеспечивают./ G) b# |* N, p* {

+ ~, Z; F/ I" c1 yНе стесняйтесь делиться своими вопросами, предложениями и примерами! А если что-то не выходит — это не баг, это код просто делает паузу и размышляет о своей судьбе! ?* I( O, D% @8 D9 ~6 u# w& {
Астралия ?
! E  V# u* ]* t+ N% _  l

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

AlexCoder Опубликовано 2024-10-17 22:32:08 | Показать все сообщения
Можешь подробнее объяснить, почему мы проверяем значение уровня в методе setLevel() перед его установкой? Почему нельзя просто присвоить любое значение?
 Автор| Astraliya Опубликовано 2024-10-17 23:00:07 | Показать все сообщения
AlexCoder опубликовал в 2024-10-17 22:32+ f6 v" o& k1 m5 C! u
Можешь подробнее объяснить, почему мы проверяем значе ...

! Q6 J# Y' d, O1 R, v* `Привет, AlexCoder!. w0 d  U* G% K% `" ~5 U
Давай разберём подробнее, почему важно проверять значение уровня в методе setLevel() перед его установкой. Это связано с защитой данных и соблюдением логики игрового процесса.
9 l) B3 }. H; R
1. Защита от некорректных данных
, L* A9 V, Q% Y* n4 A* iЕсли мы не будем проверять значение уровня, можно случайно присвоить игроку отрицательный уровень или ноль, что нарушит логику игры. Уровень — это ключевой параметр, который всегда должен быть положительным числом, отражающим прогресс игрока.' M5 [3 Y$ w1 m3 g! e( ~# D
Пример на основе Player.java из L2J_Mobius:5 N8 n0 `" _& T+ \" N4 x5 O
  1. public void setLevel(int newLevel) {  // public void установитьУровень(int новыйУровень)( |" ]* ?8 s. f# K3 ?. {* ^# J, c. y
  2.     // Проверяем, что новый уровень больше 0( Q/ h& [) S1 V7 A$ N7 w* d3 g
  3.     if (newLevel > 0) {
    , C' F3 s2 r$ O  B& @* S
  4.         this.level = newLevel;  // Устанавливаем новый уровень2 ?+ z  E8 I$ B: z' b0 H
  5.     } else {. i. [' i4 @) z7 D! {& J- L
  6.         System.out.println("Неверный уровень: уровень должен быть больше 0");! C' n" D1 y2 p8 S2 X- k' u" K
  7.     }5 q8 i$ Q+ c, I/ I9 \. k, D
  8. }
    + u1 O( a; f! g3 w
Скопировать код
Перевод и пояснение:
* ?+ _* ~% w/ i; y* f4 o% l  U8 YsetLevel(int newLevel) — метод для установки уровня игрока.
0 G# J$ s  |9 c2 _: }% v' T' x* GМы проверяем, что новый уровень больше 0:6 D3 t' s- I! m  z
  1. if (newLevel > 0)
    6 Q  T! p7 s: S# U3 d. B% o
Скопировать код
Это предотвращает присвоение некорректных значений уровня (например, отрицательных или нулевых).
& V, f$ [7 `0 L" o+ j4 dЕсли условие выполняется, уровень устанавливается- F9 x# A" E. w
  1. this.level = newLevel;
    , A3 J8 s8 u6 h
Скопировать код
Если новый уровень меньше или равен 0, выводится сообщение об ошибке:5 J- R; z+ Q! O8 |

# {" J! U8 j6 h
  1. System.out.println("Неверный уровень: уровень должен быть больше 0");
    ' g1 r1 J& n) V- `0 I5 l+ F
Скопировать код
2. Логика игрового процесса
1 A; g# C& |9 b: D% J; J; k6 UПредставь, если бы у игрока был отрицательный уровень — это могло бы нарушить баланс игры. Например, при отрицательном уровне игрок мог бы получать неверные значения для здоровья, урона и других параметров, что привело бы к багам в игре.
, ?+ y6 a6 m' oИтог:Проверка значения уровня помогает предотвратить ошибки и поддерживать корректную логику игрового процесса. Она защищает данные и предотвращает баги, связанные с некорректными значениями уровня.0 O; ~& s' }1 L, N8 c

" l3 D  o* l* X( l4 yP.S.# p# `) M$ d4 p6 ]
Даже если у нас не получится "прокачаться", зато будем уверены, что наш уровень всегда правильный! ?5 [/ Q- G6 {! t
1 t. Y- o) y. N; c1 S
/ O4 N/ }: f( a/ O( D
Чтобы ответить, вам надо авторизироваться в системе Вход | Зарегистрироваться

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

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

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

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

подписок0

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

постов9

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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