Top.Mail.Ru

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

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

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

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

x
Последний раз это сообщение было отредактировано Astraliya в 2024-10-17 21:34 2 u" `  X& E5 e" S6 i1 e

; a, q3 c3 m. h+ p8 e" c* J$ l/ c. \2 f* {# c8 r
Шаг 1.3: Продолжение темы методов и инкапсуляции на примере L2J_Mobius
+ r' H  H( K+ q# N. D& a9 ]6 I9 g* D

% ^2 N. T9 n; [" b6 g, ?Добро пожаловать в обсуждение третьего шага нашего цикла статей по разработке серверов на основе L2J_Mobius! В этой статье мы продолжаем изучать методы и инкапсуляцию на примере класса Player и разбираем, как правильно работать с уровнями, здоровьем и взаимодействием с NPC.
' P6 Z8 \& E3 pЗдесь можно:! l% p/ K% T7 M
  • Задать вопросы о геттерах и сеттерах в L2J_Mobius.
  • Обсудить логику проверки данных в методах.
  • Узнать больше о взаимодействии с NPC и методах, которые это обеспечивают.
    3 x9 _; \! Q/ d; ?3 h* i. X# w

. F4 N0 V) s. ~3 Z- h8 `  P4 dНе стесняйтесь делиться своими вопросами, предложениями и примерами! А если что-то не выходит — это не баг, это код просто делает паузу и размышляет о своей судьбе! ?
/ C5 k; d$ m! J. QАстралия ?
8 ~7 }) ^$ Y! Z2 G: C7 U: @  V

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

AlexCoder Опубликовано 2024-10-17 22:32:08 | Показать все сообщения
Можешь подробнее объяснить, почему мы проверяем значение уровня в методе setLevel() перед его установкой? Почему нельзя просто присвоить любое значение?
 Автор| Astraliya Опубликовано 2024-10-17 23:00:07 | Показать все сообщения
AlexCoder опубликовал в 2024-10-17 22:32* Q- y" L; z& H5 s
Можешь подробнее объяснить, почему мы проверяем значе ...

6 \" e' D/ w# Z% r' w3 [# zПривет, AlexCoder!& k- k8 I) b) T  z3 a
Давай разберём подробнее, почему важно проверять значение уровня в методе setLevel() перед его установкой. Это связано с защитой данных и соблюдением логики игрового процесса.: q# A( D1 F9 L. R7 k1 P

1. Защита от некорректных данных! p( M# u- K3 p
Если мы не будем проверять значение уровня, можно случайно присвоить игроку отрицательный уровень или ноль, что нарушит логику игры. Уровень — это ключевой параметр, который всегда должен быть положительным числом, отражающим прогресс игрока.
/ I. T5 B1 Q1 a3 j% L' q( {Пример на основе Player.java из L2J_Mobius:6 O, G& S3 \; D
  1. public void setLevel(int newLevel) {  // public void установитьУровень(int новыйУровень)+ B- R5 X, P' j
  2.     // Проверяем, что новый уровень больше 0  T$ M+ ]  O4 ]# i, N. l- F( x
  3.     if (newLevel > 0) {3 ]9 I4 P: L' |2 k7 M2 ~
  4.         this.level = newLevel;  // Устанавливаем новый уровень3 A" p, Y; ^% E
  5.     } else {
    9 F1 _; e. Y3 F- N- t- X0 t
  6.         System.out.println("Неверный уровень: уровень должен быть больше 0");& e" h3 |  Q4 t5 ^, [$ j7 R# E
  7.     }
    $ n, g6 Q" c' M0 F
  8. }
    + G! ]/ [- g8 z. y: G
Скопировать код
Перевод и пояснение:
2 \3 J7 I0 t" t& s% LsetLevel(int newLevel) — метод для установки уровня игрока.( N* K4 o" G  e- X9 ?
Мы проверяем, что новый уровень больше 0:
" y3 |0 |# R) H. ^. \/ S3 K
  1. if (newLevel > 0)& P/ S4 i# }6 e5 V/ n
Скопировать код
Это предотвращает присвоение некорректных значений уровня (например, отрицательных или нулевых).
$ ?9 b5 O) c" J% j  M- I& mЕсли условие выполняется, уровень устанавливается9 b) o5 a, t$ L5 n, G. @- s
  1. this.level = newLevel;
    7 t! A# o2 G* U) U: y
Скопировать код
Если новый уровень меньше или равен 0, выводится сообщение об ошибке:
  T2 f" f$ t; T& F0 d* [, r# V" P7 S5 D1 @. q: M/ |. l
  1. System.out.println("Неверный уровень: уровень должен быть больше 0");
    3 J! T: f$ T  m6 n: x
Скопировать код
2. Логика игрового процесса
% \) r! o7 n5 V2 iПредставь, если бы у игрока был отрицательный уровень — это могло бы нарушить баланс игры. Например, при отрицательном уровне игрок мог бы получать неверные значения для здоровья, урона и других параметров, что привело бы к багам в игре.. z/ I$ r1 Z$ x0 m
Итог:Проверка значения уровня помогает предотвратить ошибки и поддерживать корректную логику игрового процесса. Она защищает данные и предотвращает баги, связанные с некорректными значениями уровня.( L2 ^0 d! T2 j6 H
( |7 M8 G$ W* v. Z7 t6 W9 L+ I
P.S.* |5 Z6 _/ V6 r* a6 F
Даже если у нас не получится "прокачаться", зато будем уверены, что наш уровень всегда правильный! ?
& u" c1 l, H+ y  W. D
$ K8 e* y; M! ?" B! e9 [
. D5 b0 c0 g/ w/ s+ @1 ^( E
Чтобы ответить, вам надо авторизироваться в системе Вход | Зарегистрироваться

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

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

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

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

подписок0

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

постов9

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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