Top.Mail.Ru

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

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

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

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

x
Последний раз это сообщение было отредактировано Astraliya в 2024-10-17 21:34
4 G2 H8 [& n; m! M. L* I* W( h; _& l6 C: |% H  B
. \0 n# p. e; N9 m
Шаг 1.3: Продолжение темы методов и инкапсуляции на примере L2J_Mobius. O3 n" A7 B! x+ j  C4 R# n

, C& s0 m4 U0 Y0 J5 H% i, _: l, q8 [7 b( @' ^; V) A* A# n
Добро пожаловать в обсуждение третьего шага нашего цикла статей по разработке серверов на основе L2J_Mobius! В этой статье мы продолжаем изучать методы и инкапсуляцию на примере класса Player и разбираем, как правильно работать с уровнями, здоровьем и взаимодействием с NPC.
/ r# E% w; q" Z5 PЗдесь можно:& c1 C1 h7 o4 x, G: S' W; B
  • Задать вопросы о геттерах и сеттерах в L2J_Mobius.
  • Обсудить логику проверки данных в методах.
  • Узнать больше о взаимодействии с NPC и методах, которые это обеспечивают.
    - c  J4 p" e3 p. Q( c0 N* F
5 ?4 k0 s8 |1 D+ S8 q+ f
Не стесняйтесь делиться своими вопросами, предложениями и примерами! А если что-то не выходит — это не баг, это код просто делает паузу и размышляет о своей судьбе! ?+ M6 h: P% z6 Q2 r* a3 I2 ~
Астралия ?, F" O, m2 m$ A& S! d: L1 S7 d

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

AlexCoder Опубликовано 2024-10-17 22:32:08 | Показать все сообщения
Можешь подробнее объяснить, почему мы проверяем значение уровня в методе setLevel() перед его установкой? Почему нельзя просто присвоить любое значение?
 Автор| Astraliya Опубликовано 2024-10-17 23:00:07 | Показать все сообщения
AlexCoder опубликовал в 2024-10-17 22:32! b) P8 V, H8 N1 C/ o, W) }5 a
Можешь подробнее объяснить, почему мы проверяем значе ...
/ L2 b& |/ l8 t
Привет, AlexCoder!
7 r& G7 V6 h% a6 Y1 ?Давай разберём подробнее, почему важно проверять значение уровня в методе setLevel() перед его установкой. Это связано с защитой данных и соблюдением логики игрового процесса." E/ H5 Y; L# y

1. Защита от некорректных данных
5 B& _5 R* M, Y& cЕсли мы не будем проверять значение уровня, можно случайно присвоить игроку отрицательный уровень или ноль, что нарушит логику игры. Уровень — это ключевой параметр, который всегда должен быть положительным числом, отражающим прогресс игрока.6 n2 K( ]9 m: G' e7 P/ ^* m
Пример на основе Player.java из L2J_Mobius:0 y5 p% a' v% C7 ]1 ]$ R1 V  O
  1. public void setLevel(int newLevel) {  // public void установитьУровень(int новыйУровень)
    8 }$ ~$ l0 c8 {  F* p
  2.     // Проверяем, что новый уровень больше 0) j, m8 d; ?7 t1 d. q+ [' |
  3.     if (newLevel > 0) {
    ! V4 u' P) C1 S% d/ g& m
  4.         this.level = newLevel;  // Устанавливаем новый уровень6 B- d' S) P: L
  5.     } else {5 D/ U* Z# b, r! O. s. q
  6.         System.out.println("Неверный уровень: уровень должен быть больше 0");
    8 w; P; a3 O5 f; y
  7.     }$ E( \7 M. E$ I. H7 C# ]1 D' L5 }
  8. }. G/ M9 H3 t' F# j/ c
Скопировать код
Перевод и пояснение:5 u8 E9 r% `; D! q
setLevel(int newLevel) — метод для установки уровня игрока.
9 r/ H& V' a  F1 HМы проверяем, что новый уровень больше 0:
( e! g# t# p4 _
  1. if (newLevel > 0)5 y& s, C2 w8 X6 p8 F5 d1 }
Скопировать код
Это предотвращает присвоение некорректных значений уровня (например, отрицательных или нулевых).
  l) T2 @* E+ X1 x; E0 h1 xЕсли условие выполняется, уровень устанавливается
. I" e# W7 a# ^( Y- N
  1. this.level = newLevel;9 S* G: V; L% \( I2 X* L
Скопировать код
Если новый уровень меньше или равен 0, выводится сообщение об ошибке:) d* k' a, s4 h. L( K4 L
6 ?8 v& b! m; M" M* ?
  1. System.out.println("Неверный уровень: уровень должен быть больше 0");5 o$ ]7 E' Q) q5 Z" [! R
Скопировать код
2. Логика игрового процесса+ ^( ?. Q% h" v% B1 }: ]; N
Представь, если бы у игрока был отрицательный уровень — это могло бы нарушить баланс игры. Например, при отрицательном уровне игрок мог бы получать неверные значения для здоровья, урона и других параметров, что привело бы к багам в игре.
( y3 E$ P3 P4 Z) z0 j# _# xИтог:Проверка значения уровня помогает предотвратить ошибки и поддерживать корректную логику игрового процесса. Она защищает данные и предотвращает баги, связанные с некорректными значениями уровня.
: `$ a: i0 {1 L( ^+ v9 l0 c; {" B8 c/ K' J' x7 e* R! J
P.S.
7 L6 y$ b# s! J* j/ |: W  ^% N7 vДаже если у нас не получится "прокачаться", зато будем уверены, что наш уровень всегда правильный! ?: S6 X' }, W( T5 H+ e* S( h: t$ d

/ G7 N. f, `. m! w
+ S3 ^5 j: c+ j* W" D% E4 r1 l) h1 F
Чтобы ответить, вам надо авторизироваться в системе Вход | Зарегистрироваться

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

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

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

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

подписок0

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

постов9

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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