Top.Mail.Ru

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

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

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

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

x
Последний раз это сообщение было отредактировано Astraliya в 2024-10-17 21:34
1 a. O% B: e. ]% m% d6 V: ~2 d* l& |3 @8 R; R. h
: O3 l3 Z+ |! f
Шаг 1.3: Продолжение темы методов и инкапсуляции на примере L2J_Mobius
" q& |' ~3 R- a3 p$ f6 H8 R3 U  w, |& o. x8 N) C/ O) `

+ S9 A$ M' K; g9 [2 I, WДобро пожаловать в обсуждение третьего шага нашего цикла статей по разработке серверов на основе L2J_Mobius! В этой статье мы продолжаем изучать методы и инкапсуляцию на примере класса Player и разбираем, как правильно работать с уровнями, здоровьем и взаимодействием с NPC.
4 t+ o) m9 ?; k8 Y  X# HЗдесь можно:
5 G9 y: G" j* A% F
  • Задать вопросы о геттерах и сеттерах в L2J_Mobius.
  • Обсудить логику проверки данных в методах.
  • Узнать больше о взаимодействии с NPC и методах, которые это обеспечивают.
    # D" u9 y" o$ e+ D+ m" {
/ b" H! D' T$ G3 r
Не стесняйтесь делиться своими вопросами, предложениями и примерами! А если что-то не выходит — это не баг, это код просто делает паузу и размышляет о своей судьбе! ?
7 n  U8 |+ H( y( m# w! hАстралия ?
1 V0 w2 F# ]5 L

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

AlexCoder Опубликовано 2024-10-17 22:32:08 | Показать все сообщения
Можешь подробнее объяснить, почему мы проверяем значение уровня в методе setLevel() перед его установкой? Почему нельзя просто присвоить любое значение?
 Автор| Astraliya Опубликовано 2024-10-17 23:00:07 | Показать все сообщения
AlexCoder опубликовал в 2024-10-17 22:32
# u6 b2 ~1 z0 a" @Можешь подробнее объяснить, почему мы проверяем значе ...

( N4 q( N+ s' lПривет, AlexCoder!
' O. Z6 {+ ]/ |# Q7 xДавай разберём подробнее, почему важно проверять значение уровня в методе setLevel() перед его установкой. Это связано с защитой данных и соблюдением логики игрового процесса.
2 s2 N* d9 X0 q
1. Защита от некорректных данных
0 P! c$ z+ `& F- CЕсли мы не будем проверять значение уровня, можно случайно присвоить игроку отрицательный уровень или ноль, что нарушит логику игры. Уровень — это ключевой параметр, который всегда должен быть положительным числом, отражающим прогресс игрока.2 n$ B* S4 a" T) W; U8 D3 a& F
Пример на основе Player.java из L2J_Mobius:
/ W2 m4 A% [' Q! N" k% y7 M5 u
  1. public void setLevel(int newLevel) {  // public void установитьУровень(int новыйУровень)
    % M% ^3 [- z+ p/ s3 K4 n) T
  2.     // Проверяем, что новый уровень больше 0' e: h! e7 V1 c. N
  3.     if (newLevel > 0) {
    6 b" R: A% E( b5 f. p- t
  4.         this.level = newLevel;  // Устанавливаем новый уровень8 ]4 E% i2 {' e8 C0 r4 s" l: L
  5.     } else {
    , D! @& X: r9 E" j5 t& D
  6.         System.out.println("Неверный уровень: уровень должен быть больше 0");
    * u5 u. U5 J3 d& R, _% G! i
  7.     }
    8 U: k! b* {3 R0 J( a1 T$ i, }9 G7 H
  8. }
    8 b4 _% X' r; E1 z: u) z- F3 L
Скопировать код
Перевод и пояснение:
* Q  j/ h8 h. I  msetLevel(int newLevel) — метод для установки уровня игрока.
, ^" K) @' d4 h; @* c: m, a+ NМы проверяем, что новый уровень больше 0:
$ O: D, ?( I  j
  1. if (newLevel > 0)
    : R* k6 t' o9 y: ?$ E" j
Скопировать код
Это предотвращает присвоение некорректных значений уровня (например, отрицательных или нулевых).
+ {  U: X0 R$ q8 {7 ]Если условие выполняется, уровень устанавливается
& r1 p: i6 y0 Z3 E
  1. this.level = newLevel;, w9 {! L* R, G& J0 N6 L; N
Скопировать код
Если новый уровень меньше или равен 0, выводится сообщение об ошибке:- [$ ~0 H2 R0 k, u7 J* a# D2 S$ n
8 g, d; Y  [7 J8 Q3 p# M) }/ k: O+ }
  1. System.out.println("Неверный уровень: уровень должен быть больше 0");
    1 {. |; L3 {8 E; }) p- I% c
Скопировать код
2. Логика игрового процесса& I0 z6 ?# o' I: h$ @( C2 e
Представь, если бы у игрока был отрицательный уровень — это могло бы нарушить баланс игры. Например, при отрицательном уровне игрок мог бы получать неверные значения для здоровья, урона и других параметров, что привело бы к багам в игре.- b# Y+ o& N) T
Итог:Проверка значения уровня помогает предотвратить ошибки и поддерживать корректную логику игрового процесса. Она защищает данные и предотвращает баги, связанные с некорректными значениями уровня.; k0 h: U# ]2 [, S
7 d: \0 o/ U8 O" o9 T/ m
P.S.
5 J( ^" J, a. XДаже если у нас не получится "прокачаться", зато будем уверены, что наш уровень всегда правильный! ?
6 U  |8 b  Q) |. R2 I, G' H) p% y) n" R

3 A/ A( F9 Y4 o9 B/ }9 o
Чтобы ответить, вам надо авторизироваться в системе Вход | Зарегистрироваться

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

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

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

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

подписок0

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

постов9

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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