Top.Mail.Ru

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

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

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

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

x
Последний раз это сообщение было отредактировано Astraliya в 2024-10-17 21:34
) N( ]% w% T, U& `/ R; \' `: `4 B/ p$ Y' |8 W1 I
" r9 f+ J: p/ \
Шаг 1.3: Продолжение темы методов и инкапсуляции на примере L2J_Mobius* k* n6 G5 k2 k- u( S
' V+ s( ?- f$ s# S

+ O: f: \5 w1 W# V8 jДобро пожаловать в обсуждение третьего шага нашего цикла статей по разработке серверов на основе L2J_Mobius! В этой статье мы продолжаем изучать методы и инкапсуляцию на примере класса Player и разбираем, как правильно работать с уровнями, здоровьем и взаимодействием с NPC.6 {' @- X1 Q/ e. b- k1 w
Здесь можно:# F" a" @! @! M9 I  f$ i
  • Задать вопросы о геттерах и сеттерах в L2J_Mobius.
  • Обсудить логику проверки данных в методах.
  • Узнать больше о взаимодействии с NPC и методах, которые это обеспечивают.9 E2 J9 c- A1 j

+ w/ E5 P, h% {$ o1 [" P& ?5 _Не стесняйтесь делиться своими вопросами, предложениями и примерами! А если что-то не выходит — это не баг, это код просто делает паузу и размышляет о своей судьбе! ?: `) S, Z1 S; ^# D# ?' F
Астралия ?0 }* z+ V  `, ]; [' p. j3 k

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

AlexCoder Опубликовано 2024-10-17 22:32:08 | Показать все сообщения
Можешь подробнее объяснить, почему мы проверяем значение уровня в методе setLevel() перед его установкой? Почему нельзя просто присвоить любое значение?
 Автор| Astraliya Опубликовано 2024-10-17 23:00:07 | Показать все сообщения
AlexCoder опубликовал в 2024-10-17 22:32
- B% x; ?* a! i' kМожешь подробнее объяснить, почему мы проверяем значе ...
( d5 D+ M' f8 E! ]4 _9 b5 Z) A! P
Привет, AlexCoder!
: Y$ X' w8 r, ?) X- t; I' Q1 VДавай разберём подробнее, почему важно проверять значение уровня в методе setLevel() перед его установкой. Это связано с защитой данных и соблюдением логики игрового процесса.; R! U5 k2 h6 z

1. Защита от некорректных данных  D- x5 k4 d9 L" A5 s9 Y, ~; o# Z
Если мы не будем проверять значение уровня, можно случайно присвоить игроку отрицательный уровень или ноль, что нарушит логику игры. Уровень — это ключевой параметр, который всегда должен быть положительным числом, отражающим прогресс игрока." N. L$ l. n& B( g0 ?: X  F' P
Пример на основе Player.java из L2J_Mobius:
. e( l8 X/ q4 r& V! b% X" `6 i
  1. public void setLevel(int newLevel) {  // public void установитьУровень(int новыйУровень)0 l+ r) N/ N% t( E" A
  2.     // Проверяем, что новый уровень больше 0
    . G# q3 {8 n% z
  3.     if (newLevel > 0) {: Q2 Q1 h6 d3 v+ w; A* j7 p
  4.         this.level = newLevel;  // Устанавливаем новый уровень
    8 Q0 v  I  s  V( f, x
  5.     } else {
    0 u2 G% o/ Z- }  b3 T# s' b( |
  6.         System.out.println("Неверный уровень: уровень должен быть больше 0");
    ) l' M/ l/ ^& S1 l. T
  7.     }
    ! g9 T* v0 D4 F  T0 Y
  8. }
    ' H5 T% o5 Z2 P/ f
Скопировать код
Перевод и пояснение:
4 F$ u6 X! x& p4 [4 V% YsetLevel(int newLevel) — метод для установки уровня игрока.
# _* _' i! p* e. f6 ?Мы проверяем, что новый уровень больше 0:
* F; m! h0 m) w7 U. a  k
  1. if (newLevel > 0)
    ) u. [6 p' G, O% E9 U* k% _# h
Скопировать код
Это предотвращает присвоение некорректных значений уровня (например, отрицательных или нулевых).
  L7 U( \$ l$ n6 I$ _. EЕсли условие выполняется, уровень устанавливается
3 D/ n+ A6 D) Y5 B4 P' H- r# f
  1. this.level = newLevel;& [7 D; z5 d5 }/ V* `# j: A: {
Скопировать код
Если новый уровень меньше или равен 0, выводится сообщение об ошибке:
4 t" C  R1 n7 I  y5 R
+ |( f+ x* q/ }* ~# q' {
  1. System.out.println("Неверный уровень: уровень должен быть больше 0");0 F6 N! U7 J7 t5 Q  u1 Q$ h
Скопировать код
2. Логика игрового процесса
! q& Z6 L: q/ d6 q& iПредставь, если бы у игрока был отрицательный уровень — это могло бы нарушить баланс игры. Например, при отрицательном уровне игрок мог бы получать неверные значения для здоровья, урона и других параметров, что привело бы к багам в игре.
$ v1 {! r1 [, [. q+ bИтог:Проверка значения уровня помогает предотвратить ошибки и поддерживать корректную логику игрового процесса. Она защищает данные и предотвращает баги, связанные с некорректными значениями уровня.
& l% K4 J9 B2 H: b- M0 O4 O! g/ U& i$ s, W) ]; J) k  {
P.S.  a) V, Z5 c; [$ z
Даже если у нас не получится "прокачаться", зато будем уверены, что наш уровень всегда правильный! ?  T0 d4 M* o/ `- J/ @& B
+ g! {6 |; j: Q

% `) i  O; M! K' x' U5 w
Чтобы ответить, вам надо авторизироваться в системе Вход | Зарегистрироваться

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

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

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

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

подписок0

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

постов9

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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