Top.Mail.Ru

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

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

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

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

x
Последний раз это сообщение было отредактировано Astraliya в 2024-10-17 21:34
& a  F7 E' u% K( v' S6 _7 n0 K7 V) q
0 A) @  @' Q; M( b- ]9 P+ {( i( o5 G9 B' @- C/ X
Шаг 1.3: Продолжение темы методов и инкапсуляции на примере L2J_Mobius
. c. r- e) E, ~4 o. s; t9 M6 w- g) I5 K! U  \  f6 k
' V3 E, I5 ]+ z, Y' ?
Добро пожаловать в обсуждение третьего шага нашего цикла статей по разработке серверов на основе L2J_Mobius! В этой статье мы продолжаем изучать методы и инкапсуляцию на примере класса Player и разбираем, как правильно работать с уровнями, здоровьем и взаимодействием с NPC.
" u' c* L5 r6 |# t9 KЗдесь можно:$ W' V) g5 j- t. c& c5 }
  • Задать вопросы о геттерах и сеттерах в L2J_Mobius.
  • Обсудить логику проверки данных в методах.
  • Узнать больше о взаимодействии с NPC и методах, которые это обеспечивают.
    $ W* `4 U% q* P- H& z( d4 w# f& E

! f% f( @' l. p" q! D) D+ ]Не стесняйтесь делиться своими вопросами, предложениями и примерами! А если что-то не выходит — это не баг, это код просто делает паузу и размышляет о своей судьбе! ?- ~5 x; W& Y) [5 A+ ]8 x$ v
Астралия ?9 N4 n' `0 A8 @7 \

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

AlexCoder Опубликовано 2024-10-17 22:32:08 | Показать все сообщения
Можешь подробнее объяснить, почему мы проверяем значение уровня в методе setLevel() перед его установкой? Почему нельзя просто присвоить любое значение?
 Автор| Astraliya Опубликовано 2024-10-17 23:00:07 | Показать все сообщения
AlexCoder опубликовал в 2024-10-17 22:32
  _2 N6 P2 F  g  Q" s( dМожешь подробнее объяснить, почему мы проверяем значе ...
- B2 c$ G- c# L: ~
Привет, AlexCoder!
8 y; D: G/ c  O' OДавай разберём подробнее, почему важно проверять значение уровня в методе setLevel() перед его установкой. Это связано с защитой данных и соблюдением логики игрового процесса.7 p; Y% |: J" w9 H; b

1. Защита от некорректных данных% x1 G; X# u# u; ~) D1 t# O1 t
Если мы не будем проверять значение уровня, можно случайно присвоить игроку отрицательный уровень или ноль, что нарушит логику игры. Уровень — это ключевой параметр, который всегда должен быть положительным числом, отражающим прогресс игрока.
, M1 W; S4 I/ ], nПример на основе Player.java из L2J_Mobius:
3 x8 i! X! {, O; o% |. L- r2 R
  1. public void setLevel(int newLevel) {  // public void установитьУровень(int новыйУровень)( o; @& Y- S3 p3 |, c  q5 S
  2.     // Проверяем, что новый уровень больше 0& D5 W; z$ G# N: `1 X3 Y
  3.     if (newLevel > 0) {
    * ], }# o" D. w2 S. l" e1 G
  4.         this.level = newLevel;  // Устанавливаем новый уровень
    0 L; j/ r7 P+ p( |; K9 n. Z1 r; ^1 [' m
  5.     } else {# r$ E. U# M+ Z5 F2 c- `$ V6 k  Z
  6.         System.out.println("Неверный уровень: уровень должен быть больше 0");) K; ?; T% R2 u6 q# @
  7.     }
    ; S" n& y+ ]* g$ n$ |
  8. }
    7 C9 d+ F8 g* H( o/ `: ~
Скопировать код
Перевод и пояснение:
+ U; t1 o( U5 D: @setLevel(int newLevel) — метод для установки уровня игрока.
/ O& s- |2 T; l7 h0 K- T& h& lМы проверяем, что новый уровень больше 0:
2 x* N  w" ~5 m( R
  1. if (newLevel > 0)
    4 R# @5 O; E+ R3 N0 Z" y) m& l3 _
Скопировать код
Это предотвращает присвоение некорректных значений уровня (например, отрицательных или нулевых).. G: J: R6 w8 }1 U0 w  U& d
Если условие выполняется, уровень устанавливается' e- v4 r, [, w5 r; a# x- r- z
  1. this.level = newLevel;
    : K2 v3 D3 t0 F7 k1 C, [1 g
Скопировать код
Если новый уровень меньше или равен 0, выводится сообщение об ошибке:; d% ^9 q% ?; f# R+ |

" p3 ^6 E: P: Q( A
  1. System.out.println("Неверный уровень: уровень должен быть больше 0");
    ' q0 X% n. @4 c
Скопировать код
2. Логика игрового процесса
' q$ h  V8 H/ E5 L6 l  Q' tПредставь, если бы у игрока был отрицательный уровень — это могло бы нарушить баланс игры. Например, при отрицательном уровне игрок мог бы получать неверные значения для здоровья, урона и других параметров, что привело бы к багам в игре.
# N; a& u) m5 h9 M- N8 x; [Итог:Проверка значения уровня помогает предотвратить ошибки и поддерживать корректную логику игрового процесса. Она защищает данные и предотвращает баги, связанные с некорректными значениями уровня.
4 B7 t, D7 {, C0 w" L, e& [' J& E! V7 o* x. K, Q1 _, j
P.S.8 M/ q: v  A' n
Даже если у нас не получится "прокачаться", зато будем уверены, что наш уровень всегда правильный! ?" I2 t5 F/ ?" x( R( b
) |, O+ p& Y6 Q
' I- _5 w3 z3 l* Q3 w4 X* t
Чтобы ответить, вам надо авторизироваться в системе Вход | Зарегистрироваться

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

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

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

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

подписок0

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

постов9

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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