Top.Mail.Ru

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

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

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

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

x
Последний раз это сообщение было отредактировано Astraliya в 2024-10-17 21:34 ' Q# I+ s7 T5 h; B, ~3 j

8 F% f2 @3 ~0 \+ p( L# r4 U% |+ x
& t' E" d  U& Z* I4 i# v* JШаг 1.3: Продолжение темы методов и инкапсуляции на примере L2J_Mobius
  b; C7 z0 E& I7 m* P9 W
0 d9 d0 H3 ^; N: \( ?5 e  l6 u0 b( t& g. ~. C5 d5 X2 r
Добро пожаловать в обсуждение третьего шага нашего цикла статей по разработке серверов на основе L2J_Mobius! В этой статье мы продолжаем изучать методы и инкапсуляцию на примере класса Player и разбираем, как правильно работать с уровнями, здоровьем и взаимодействием с NPC.( h! A; f$ ?) h- g% H3 w
Здесь можно:
1 h% _* J6 A& A5 I
  • Задать вопросы о геттерах и сеттерах в L2J_Mobius.
  • Обсудить логику проверки данных в методах.
  • Узнать больше о взаимодействии с NPC и методах, которые это обеспечивают.
    8 R4 l) G' r( [

+ E3 n% n& y0 @$ M7 lНе стесняйтесь делиться своими вопросами, предложениями и примерами! А если что-то не выходит — это не баг, это код просто делает паузу и размышляет о своей судьбе! ?$ |6 j/ k! ~; T* w0 t# o3 r
Астралия ?  }9 Z; B7 g  b/ s

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

AlexCoder Опубликовано 2024-10-17 22:32:08 | Показать все сообщения
Можешь подробнее объяснить, почему мы проверяем значение уровня в методе setLevel() перед его установкой? Почему нельзя просто присвоить любое значение?
 Автор| Astraliya Опубликовано 2024-10-17 23:00:07 | Показать все сообщения
AlexCoder опубликовал в 2024-10-17 22:321 d2 C6 k! ^/ x) `( t: d4 c. l; Z2 a
Можешь подробнее объяснить, почему мы проверяем значе ...

' u( Q6 d# z, PПривет, AlexCoder!  q* s/ m6 H& R( [. u
Давай разберём подробнее, почему важно проверять значение уровня в методе setLevel() перед его установкой. Это связано с защитой данных и соблюдением логики игрового процесса.* f; s& n( A' Q" C* d, X1 [

1. Защита от некорректных данных, G" D# ?; S7 q( e
Если мы не будем проверять значение уровня, можно случайно присвоить игроку отрицательный уровень или ноль, что нарушит логику игры. Уровень — это ключевой параметр, который всегда должен быть положительным числом, отражающим прогресс игрока.8 ^6 j9 I. p3 u1 r  P* [/ J
Пример на основе Player.java из L2J_Mobius:6 [. ]$ D' Y6 a/ F+ j5 X% V
  1. public void setLevel(int newLevel) {  // public void установитьУровень(int новыйУровень)
    3 ?% p% d; j. Y8 K1 h' ]' ?
  2.     // Проверяем, что новый уровень больше 09 a! Z7 @& h' P3 g& s
  3.     if (newLevel > 0) {7 `$ E# h) ]* o8 E* l  s+ f+ v
  4.         this.level = newLevel;  // Устанавливаем новый уровень6 u! Y! o2 E+ W' ^
  5.     } else {' G* ~" y9 s( b9 i, e; b5 z- K: ?
  6.         System.out.println("Неверный уровень: уровень должен быть больше 0");
    6 L/ x1 S$ I" Y0 C7 g% L
  7.     }, D5 _  U2 C0 V( p; n, a7 ]
  8. }
      c8 g% U( M2 R4 H) o' s* L
Скопировать код
Перевод и пояснение:
, o3 y4 F" y- z( `, g/ |setLevel(int newLevel) — метод для установки уровня игрока.( h! m, P: A0 ^/ Y2 \) T6 _4 u
Мы проверяем, что новый уровень больше 0:& [8 m( x* U1 v2 s1 w! p, Y
  1. if (newLevel > 0)* `* M' p; V: W% Z. |: N7 G
Скопировать код
Это предотвращает присвоение некорректных значений уровня (например, отрицательных или нулевых).% G2 q8 S% S: x5 Y5 z' `
Если условие выполняется, уровень устанавливается
6 [, v( K, c, L$ N* R8 e! y
  1. this.level = newLevel;
    6 m/ _; R; ]' h* N5 e
Скопировать код
Если новый уровень меньше или равен 0, выводится сообщение об ошибке:
6 p1 a" q( f/ Q0 I; x) h
6 O1 b3 B& ]/ D, Z, D
  1. System.out.println("Неверный уровень: уровень должен быть больше 0");
    2 S7 c- `9 B: Y: Q0 d; \5 y
Скопировать код
2. Логика игрового процесса
1 V. S! D- S6 h2 s8 d( q* FПредставь, если бы у игрока был отрицательный уровень — это могло бы нарушить баланс игры. Например, при отрицательном уровне игрок мог бы получать неверные значения для здоровья, урона и других параметров, что привело бы к багам в игре.
" h% s  W9 K/ c+ `+ r+ R2 \Итог:Проверка значения уровня помогает предотвратить ошибки и поддерживать корректную логику игрового процесса. Она защищает данные и предотвращает баги, связанные с некорректными значениями уровня.
* s$ _! x- R9 L* u  F9 u" J. J( _7 a8 \/ h% J
P.S.
( A2 e) o1 \6 b8 y9 {Даже если у нас не получится "прокачаться", зато будем уверены, что наш уровень всегда правильный! ?: N2 h" B  z. `1 k( C& R! P1 z$ C

1 h6 [; P0 I2 D) D7 Q2 Y
+ ~+ ^. R) @" z, g9 N( o. A
Чтобы ответить, вам надо авторизироваться в системе Вход | Зарегистрироваться

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

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

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

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

подписок0

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

постов9

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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