Top.Mail.Ru

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

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

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

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

x
Последний раз это сообщение было отредактировано Astraliya в 2024-10-17 21:34 # |4 R% U. ^0 O* R( O8 m! z

. \$ C! l! F4 d
9 V; R  k8 m6 B3 r. o) W8 ?Шаг 1.3: Продолжение темы методов и инкапсуляции на примере L2J_Mobius
/ k0 @: i" e5 O: m; y
$ w: r; {, y0 S) z. R0 j, P; Z8 v6 R, G! j" a
Добро пожаловать в обсуждение третьего шага нашего цикла статей по разработке серверов на основе L2J_Mobius! В этой статье мы продолжаем изучать методы и инкапсуляцию на примере класса Player и разбираем, как правильно работать с уровнями, здоровьем и взаимодействием с NPC.$ }" `! x- Y3 a" O# e
Здесь можно:* _* y& v3 k: I$ U8 X
  • Задать вопросы о геттерах и сеттерах в L2J_Mobius.
  • Обсудить логику проверки данных в методах.
  • Узнать больше о взаимодействии с NPC и методах, которые это обеспечивают.
    ; i/ U. [% \) t
  Y5 T# s0 T! T" x4 e$ G# R
Не стесняйтесь делиться своими вопросами, предложениями и примерами! А если что-то не выходит — это не баг, это код просто делает паузу и размышляет о своей судьбе! ?
7 X& R. O2 N2 C4 p; k7 O3 O7 qАстралия ?+ X4 j' `1 \; D8 u9 N

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

AlexCoder Опубликовано 2024-10-17 22:32:08 | Показать все сообщения
Можешь подробнее объяснить, почему мы проверяем значение уровня в методе setLevel() перед его установкой? Почему нельзя просто присвоить любое значение?
 Автор| Astraliya Опубликовано 2024-10-17 23:00:07 | Показать все сообщения
AlexCoder опубликовал в 2024-10-17 22:32. @, h! e# X  m8 o; \/ D
Можешь подробнее объяснить, почему мы проверяем значе ...
# Z8 h' v( i2 J% J1 t
Привет, AlexCoder!
# B, Z) g% k# E9 S7 _# _2 fДавай разберём подробнее, почему важно проверять значение уровня в методе setLevel() перед его установкой. Это связано с защитой данных и соблюдением логики игрового процесса.& G" d/ D6 @; N6 ?% c

1. Защита от некорректных данных
- O% d# a  P) @# ~: PЕсли мы не будем проверять значение уровня, можно случайно присвоить игроку отрицательный уровень или ноль, что нарушит логику игры. Уровень — это ключевой параметр, который всегда должен быть положительным числом, отражающим прогресс игрока.
7 Z% |! K* A, c+ j6 d5 RПример на основе Player.java из L2J_Mobius:
  q: Q- A" Z5 ]. e7 }5 `
  1. public void setLevel(int newLevel) {  // public void установитьУровень(int новыйУровень)* }3 ?$ J( Z3 `) d7 n' o( h
  2.     // Проверяем, что новый уровень больше 05 A% G/ o7 t! k$ q3 @$ W/ Y" ]
  3.     if (newLevel > 0) {. ]9 K+ r0 S+ {2 ?! b
  4.         this.level = newLevel;  // Устанавливаем новый уровень+ [  e0 a7 J( D2 @
  5.     } else {
    ' ~0 z$ m( Q' R/ o7 E2 E! `0 J
  6.         System.out.println("Неверный уровень: уровень должен быть больше 0");
    4 a9 R4 g, T, H4 i/ ]  I
  7.     }, \) l1 w3 G- d) E  w8 {' G/ w
  8. }
    . t/ F+ D0 u( t( t1 g
Скопировать код
Перевод и пояснение:
( x; p1 s$ |  osetLevel(int newLevel) — метод для установки уровня игрока.
) b* m. J" a  p8 s, C; GМы проверяем, что новый уровень больше 0:
" U  }* R/ g0 N6 m3 b5 t; i- E/ k
  1. if (newLevel > 0)3 u7 X, \4 b( a8 `6 E
Скопировать код
Это предотвращает присвоение некорректных значений уровня (например, отрицательных или нулевых).& R/ i3 T/ g6 U1 ?2 `
Если условие выполняется, уровень устанавливается. {' ^& o, h# L( V2 d
  1. this.level = newLevel;2 e8 `- M+ H/ {, V) P. ^8 L
Скопировать код
Если новый уровень меньше или равен 0, выводится сообщение об ошибке:
  V3 {* e6 b3 q3 o6 M' Y+ X2 n. n+ L/ ^( _7 j- v! w
  1. System.out.println("Неверный уровень: уровень должен быть больше 0");
    8 H4 k6 M* O; Q
Скопировать код
2. Логика игрового процесса
& L. {% i- e. K7 q; ~Представь, если бы у игрока был отрицательный уровень — это могло бы нарушить баланс игры. Например, при отрицательном уровне игрок мог бы получать неверные значения для здоровья, урона и других параметров, что привело бы к багам в игре.
8 G4 p1 h4 s( lИтог:Проверка значения уровня помогает предотвратить ошибки и поддерживать корректную логику игрового процесса. Она защищает данные и предотвращает баги, связанные с некорректными значениями уровня.
, O0 U: g2 @4 M1 F' ~* d9 L- ~- u$ `' k* c' A& Y/ y
P.S.
% |1 Y# J4 V1 c+ {; LДаже если у нас не получится "прокачаться", зато будем уверены, что наш уровень всегда правильный! ?. @, V5 U' Q* P8 C
/ S/ J1 f. g0 W! f" Y  p

) X! X0 h8 c, w, Z  x# {; x
Чтобы ответить, вам надо авторизироваться в системе Вход | Зарегистрироваться

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

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

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

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

подписок0

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

постов9

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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