Top.Mail.Ru

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

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

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

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

x
Последний раз это сообщение было отредактировано Astraliya в 2024-10-17 21:34
5 X- b: T' c' X. [8 c' x) ~6 b7 e, N
: S! z6 H* P1 V: D& ]+ [6 {1 M  G2 v; |/ v, n
Шаг 1.3: Продолжение темы методов и инкапсуляции на примере L2J_Mobius$ x. M6 {6 P3 ?  }
- X' z# g* S* ^& R( l# o% T
( x/ N4 }0 Q% J0 ]/ m5 @
Добро пожаловать в обсуждение третьего шага нашего цикла статей по разработке серверов на основе L2J_Mobius! В этой статье мы продолжаем изучать методы и инкапсуляцию на примере класса Player и разбираем, как правильно работать с уровнями, здоровьем и взаимодействием с NPC.: o3 B0 P* B6 a( E. i
Здесь можно:
  {& l% u1 Q2 f' w3 m9 c; b8 f
  • Задать вопросы о геттерах и сеттерах в L2J_Mobius.
  • Обсудить логику проверки данных в методах.
  • Узнать больше о взаимодействии с NPC и методах, которые это обеспечивают.
    " ~- l0 O2 I# N
' c3 A7 G6 }9 z+ m' ]
Не стесняйтесь делиться своими вопросами, предложениями и примерами! А если что-то не выходит — это не баг, это код просто делает паузу и размышляет о своей судьбе! ?
! X( t# t! Y" y7 a$ z. f& LАстралия ?
0 ]% |! w2 h0 Y9 @% e" h

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

AlexCoder Опубликовано 2024-10-17 22:32:08 | Показать все сообщения
Можешь подробнее объяснить, почему мы проверяем значение уровня в методе setLevel() перед его установкой? Почему нельзя просто присвоить любое значение?
 Автор| Astraliya Опубликовано 2024-10-17 23:00:07 | Показать все сообщения
AlexCoder опубликовал в 2024-10-17 22:321 Z, T6 X* f& V  Z
Можешь подробнее объяснить, почему мы проверяем значе ...
  a! ^8 r, o  }( o- E. Q1 U* N( b
Привет, AlexCoder!
7 H! |) K1 k. c; y  K3 wДавай разберём подробнее, почему важно проверять значение уровня в методе setLevel() перед его установкой. Это связано с защитой данных и соблюдением логики игрового процесса.* z7 [# R0 U2 m2 ]$ I

1. Защита от некорректных данных# q, D/ ~* ?$ @& p& [
Если мы не будем проверять значение уровня, можно случайно присвоить игроку отрицательный уровень или ноль, что нарушит логику игры. Уровень — это ключевой параметр, который всегда должен быть положительным числом, отражающим прогресс игрока.
+ c( w6 d6 c5 z8 j' y5 NПример на основе Player.java из L2J_Mobius:
5 k2 X0 t' U8 [1 o, I1 u2 m, y: e
  1. public void setLevel(int newLevel) {  // public void установитьУровень(int новыйУровень)
    % R0 ]( ?' Z0 R2 Z6 K
  2.     // Проверяем, что новый уровень больше 03 \/ v. X! M8 I. ~
  3.     if (newLevel > 0) {! b& V4 _: w2 }6 `
  4.         this.level = newLevel;  // Устанавливаем новый уровень: ^0 T  Q/ S0 H+ _. h3 [
  5.     } else {9 a0 R" J# Z$ O
  6.         System.out.println("Неверный уровень: уровень должен быть больше 0");4 q# D6 _/ W  h. r7 c% Y3 R7 A
  7.     }
    . r. o& I2 m3 t; `; c. I
  8. }/ M, A: O( x! \  O6 y$ c
Скопировать код
Перевод и пояснение:8 a- R/ ^0 L" i$ i/ ]5 ^% {- Y
setLevel(int newLevel) — метод для установки уровня игрока.
* `7 n0 k# c: b" pМы проверяем, что новый уровень больше 0:2 z1 ^% O% u% L
  1. if (newLevel > 0)2 q% x4 i3 ]9 N, N
Скопировать код
Это предотвращает присвоение некорректных значений уровня (например, отрицательных или нулевых).0 A; i. O# `# Y8 u; V
Если условие выполняется, уровень устанавливается) }' k+ c7 ?$ z- g3 H
  1. this.level = newLevel;
    0 P7 `' Y* h# c2 N& }0 N8 K( q, d
Скопировать код
Если новый уровень меньше или равен 0, выводится сообщение об ошибке:5 }8 V" g9 d1 v1 X7 ^) m
7 F; y( @3 u* e
  1. System.out.println("Неверный уровень: уровень должен быть больше 0");
    / x+ e$ d9 [% s; A. m# Q: }
Скопировать код
2. Логика игрового процесса
/ w- [0 b  a# O8 g1 B- P& IПредставь, если бы у игрока был отрицательный уровень — это могло бы нарушить баланс игры. Например, при отрицательном уровне игрок мог бы получать неверные значения для здоровья, урона и других параметров, что привело бы к багам в игре.% G% K$ @' h+ b
Итог:Проверка значения уровня помогает предотвратить ошибки и поддерживать корректную логику игрового процесса. Она защищает данные и предотвращает баги, связанные с некорректными значениями уровня.% T" ~+ M5 z. p* l

+ m, C* O  y( |9 M( W- S/ bP.S.4 u& F+ d: O$ \* G% b$ X; Q
Даже если у нас не получится "прокачаться", зато будем уверены, что наш уровень всегда правильный! ?5 T6 M- F) T) s+ p. b% O# s. E
3 f% L" C: {; h4 |2 W7 x

  O, M2 T/ h8 ^* X$ T: x
Чтобы ответить, вам надо авторизироваться в системе Вход | Зарегистрироваться

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

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

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

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

подписок0

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

постов9

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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