Top.Mail.Ru

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

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

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

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

x
Последний раз это сообщение было отредактировано Astraliya в 2024-10-17 21:34 " |1 p* H3 E2 s& X( |( h) G/ z
3 B  p+ M' S/ K/ T$ |. m
$ L0 z' Y# n* g8 j$ Q3 [6 J
Шаг 1.3: Продолжение темы методов и инкапсуляции на примере L2J_Mobius
! e/ E/ l8 l7 X1 [8 Y" h! F0 I
: O2 {  ?* \& b+ J
Добро пожаловать в обсуждение третьего шага нашего цикла статей по разработке серверов на основе L2J_Mobius! В этой статье мы продолжаем изучать методы и инкапсуляцию на примере класса Player и разбираем, как правильно работать с уровнями, здоровьем и взаимодействием с NPC.. i, N* R$ o' I9 W) w. {4 [) @/ S
Здесь можно:
4 ?4 I2 u9 f! U8 }0 o& P) k  M# r
  • Задать вопросы о геттерах и сеттерах в L2J_Mobius.
  • Обсудить логику проверки данных в методах.
  • Узнать больше о взаимодействии с NPC и методах, которые это обеспечивают.3 G6 |1 [$ P+ t5 E1 L6 S( V1 g+ f

* Q- o( U3 k7 W# @  LНе стесняйтесь делиться своими вопросами, предложениями и примерами! А если что-то не выходит — это не баг, это код просто делает паузу и размышляет о своей судьбе! ?
, U7 T' A3 F3 g! wАстралия ?
+ q7 h, k: w/ s& a3 Z

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

AlexCoder Опубликовано 2024-10-17 22:32:08 | Показать все сообщения
Можешь подробнее объяснить, почему мы проверяем значение уровня в методе setLevel() перед его установкой? Почему нельзя просто присвоить любое значение?
 Автор| Astraliya Опубликовано 2024-10-17 23:00:07 | Показать все сообщения
AlexCoder опубликовал в 2024-10-17 22:32
# @' v! j* y4 EМожешь подробнее объяснить, почему мы проверяем значе ...

  ^# \* C# Z- p/ m, `+ \2 j" S" u; `Привет, AlexCoder!
8 ?2 h- V+ i5 [% DДавай разберём подробнее, почему важно проверять значение уровня в методе setLevel() перед его установкой. Это связано с защитой данных и соблюдением логики игрового процесса.
9 u. J+ d( l3 l, [) M
1. Защита от некорректных данных
8 z& q5 v2 s5 c& M2 I" l0 _Если мы не будем проверять значение уровня, можно случайно присвоить игроку отрицательный уровень или ноль, что нарушит логику игры. Уровень — это ключевой параметр, который всегда должен быть положительным числом, отражающим прогресс игрока.
6 S: {1 f% e$ sПример на основе Player.java из L2J_Mobius:
0 O1 h9 E$ |1 ?) \# b+ m
  1. public void setLevel(int newLevel) {  // public void установитьУровень(int новыйУровень)
    ( w. l: S( Y5 r; v
  2.     // Проверяем, что новый уровень больше 0
    ) Q2 c  @' z' [( V
  3.     if (newLevel > 0) {
    " |6 [6 b2 a: R1 y3 b" j
  4.         this.level = newLevel;  // Устанавливаем новый уровень
    6 s# _7 D  p! u; ~: N2 ?
  5.     } else {
    ( q3 d6 N% @; \  p- h
  6.         System.out.println("Неверный уровень: уровень должен быть больше 0");
    + p6 W9 N7 Y# D' P* e& X" H
  7.     }
    & X, @" Y2 ]8 T& U; B
  8. }
    4 z) \- V, Q2 ]7 O- \& {0 ~
Скопировать код
Перевод и пояснение:2 l: n: e6 @7 V
setLevel(int newLevel) — метод для установки уровня игрока.
9 }" P, f7 H" C+ NМы проверяем, что новый уровень больше 0:
8 x' r- m" v# f: u+ v3 A, ~
  1. if (newLevel > 0)
    4 e* ^2 P9 Y* L) D
Скопировать код
Это предотвращает присвоение некорректных значений уровня (например, отрицательных или нулевых).  o7 a% b+ x( b: ^( d  U' J! s
Если условие выполняется, уровень устанавливается
5 Y( f+ d  v8 s+ L& D! J3 }% h$ \
  1. this.level = newLevel;) q8 V- h) B$ a+ p2 S1 |, m
Скопировать код
Если новый уровень меньше или равен 0, выводится сообщение об ошибке:: k1 G5 K( D4 x% y+ v) Q
3 E* h4 g$ ]5 k; B2 ^% A( |3 ^
  1. System.out.println("Неверный уровень: уровень должен быть больше 0");
    * b! Z% Z( Q) h$ V* b1 x
Скопировать код
2. Логика игрового процесса% z, S/ d1 m, E0 Z0 x
Представь, если бы у игрока был отрицательный уровень — это могло бы нарушить баланс игры. Например, при отрицательном уровне игрок мог бы получать неверные значения для здоровья, урона и других параметров, что привело бы к багам в игре./ Q: }8 [9 i' _# Z4 r6 V* k# y
Итог:Проверка значения уровня помогает предотвратить ошибки и поддерживать корректную логику игрового процесса. Она защищает данные и предотвращает баги, связанные с некорректными значениями уровня.1 R. J7 j9 V3 T8 M; F/ L
5 k, N' N  S, Y! }
P.S.
$ c: p3 Q1 [% K) F+ @+ y+ _9 v! CДаже если у нас не получится "прокачаться", зато будем уверены, что наш уровень всегда правильный! ?# U' M- j; i; ?4 \: h7 s- l7 N" U

9 u( T' W! z# {* F! e
9 \" M7 `, I7 W( y' y8 Z
Чтобы ответить, вам надо авторизироваться в системе Вход | Зарегистрироваться

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

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

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

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

подписок0

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

постов9

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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