Top.Mail.Ru

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

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

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

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

x
Последний раз это сообщение было отредактировано Astraliya в 2024-10-17 21:34 $ R! G/ I8 u3 x1 s! d  Z) I" h5 h) D

4 e: L" Q' h$ b+ U' a9 C) m6 {
; N& w  a8 l1 G% B; H, a7 X2 BШаг 1.3: Продолжение темы методов и инкапсуляции на примере L2J_Mobius9 i1 P& }3 R/ I+ B! \) ]

9 l6 P; h% N+ @$ Z. i% ?+ C, R  w: W
Добро пожаловать в обсуждение третьего шага нашего цикла статей по разработке серверов на основе L2J_Mobius! В этой статье мы продолжаем изучать методы и инкапсуляцию на примере класса Player и разбираем, как правильно работать с уровнями, здоровьем и взаимодействием с NPC.
. h/ m# D9 Z4 j- s6 FЗдесь можно:
! W" P& U. |7 U/ s
  • Задать вопросы о геттерах и сеттерах в L2J_Mobius.
  • Обсудить логику проверки данных в методах.
  • Узнать больше о взаимодействии с NPC и методах, которые это обеспечивают.
    * b# @  O: t  p: {$ {' h
+ {4 a$ h* t& F0 A5 M
Не стесняйтесь делиться своими вопросами, предложениями и примерами! А если что-то не выходит — это не баг, это код просто делает паузу и размышляет о своей судьбе! ?
2 U+ Z( z# d- w1 eАстралия ?6 y- q: B- E# U9 R. D# s5 ~

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

AlexCoder Опубликовано 2024-10-17 22:32:08 | Показать все сообщения
Можешь подробнее объяснить, почему мы проверяем значение уровня в методе setLevel() перед его установкой? Почему нельзя просто присвоить любое значение?
 Автор| Astraliya Опубликовано 2024-10-17 23:00:07 | Показать все сообщения
AlexCoder опубликовал в 2024-10-17 22:32
+ l- B( R2 k" F# ?. j* mМожешь подробнее объяснить, почему мы проверяем значе ...

8 S8 n' g2 k7 U9 XПривет, AlexCoder!
$ Q2 ?0 \) N  Y) N, uДавай разберём подробнее, почему важно проверять значение уровня в методе setLevel() перед его установкой. Это связано с защитой данных и соблюдением логики игрового процесса.* [# s. T- R/ z! h

1. Защита от некорректных данных
# d. `$ u6 u$ @  [Если мы не будем проверять значение уровня, можно случайно присвоить игроку отрицательный уровень или ноль, что нарушит логику игры. Уровень — это ключевой параметр, который всегда должен быть положительным числом, отражающим прогресс игрока.
2 r# t$ d% L5 i- q8 WПример на основе Player.java из L2J_Mobius:+ [; _* I, i7 Y
  1. public void setLevel(int newLevel) {  // public void установитьУровень(int новыйУровень)& o3 ^4 _# |1 R- L
  2.     // Проверяем, что новый уровень больше 0. w' L# k. x. s3 L6 m4 W
  3.     if (newLevel > 0) {  c2 o) W/ W- X4 {: L1 F; l" ~
  4.         this.level = newLevel;  // Устанавливаем новый уровень% k8 P) F% e3 H2 {& h: a4 N& }
  5.     } else {
    ! L0 q" ~) h5 V, D0 f
  6.         System.out.println("Неверный уровень: уровень должен быть больше 0");& v4 Y* G4 e. }7 P
  7.     }% T4 m( L" x1 z9 j$ E$ N( ]+ e  J
  8. }
    . H1 h5 ~! s" v% j4 N$ @2 G
Скопировать код
Перевод и пояснение:
5 m2 ?% k5 A4 b! ~% _0 DsetLevel(int newLevel) — метод для установки уровня игрока.: p; n) |$ s* c0 g2 u  [% v9 e: R
Мы проверяем, что новый уровень больше 0:
+ C: I- ~9 l- _3 L
  1. if (newLevel > 0). T1 y& C' C" `/ b% z
Скопировать код
Это предотвращает присвоение некорректных значений уровня (например, отрицательных или нулевых).( p/ M1 N% |, n4 k/ j* D+ F
Если условие выполняется, уровень устанавливается! w" b6 M& M2 ?0 Y. ?1 V2 }
  1. this.level = newLevel;  U' |! f. z$ ~/ o  ], b
Скопировать код
Если новый уровень меньше или равен 0, выводится сообщение об ошибке:
" F" b/ N$ Q  b/ [/ e; A7 N3 r
; ?$ G6 o( S: M) T/ O8 M+ I8 Y- d( o
  1. System.out.println("Неверный уровень: уровень должен быть больше 0");+ w8 g7 G& b9 F+ Z9 f6 e
Скопировать код
2. Логика игрового процесса
, v: Y! S. ]- Y$ XПредставь, если бы у игрока был отрицательный уровень — это могло бы нарушить баланс игры. Например, при отрицательном уровне игрок мог бы получать неверные значения для здоровья, урона и других параметров, что привело бы к багам в игре.+ w$ r, ~& j& \; p' N2 o% G9 y
Итог:Проверка значения уровня помогает предотвратить ошибки и поддерживать корректную логику игрового процесса. Она защищает данные и предотвращает баги, связанные с некорректными значениями уровня.
7 K- X5 @+ a* t8 X$ H
# n/ d3 C( y0 {$ P! _P.S.
6 U2 a# b6 R" v/ {Даже если у нас не получится "прокачаться", зато будем уверены, что наш уровень всегда правильный! ?2 M6 v/ L3 p$ [2 V: A

) s- e/ {* @) c4 _$ n) _0 ~# P: {2 {( ?
Чтобы ответить, вам надо авторизироваться в системе Вход | Зарегистрироваться

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

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

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

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

подписок0

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

постов9

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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