Top.Mail.Ru

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

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

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

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

x
Последний раз это сообщение было отредактировано Astraliya в 2024-10-17 21:34 0 d6 K7 o  g, \4 ?9 |7 A
  F" e( g8 N3 ~- j$ t* r' |: a0 e
" @* I5 ?9 m# Y) `' R
Шаг 1.3: Продолжение темы методов и инкапсуляции на примере L2J_Mobius
$ L: U" W3 V1 V# [$ R. X/ A. |* @( z% i1 {& m3 p
/ v4 _. ?  n0 ^" S
Добро пожаловать в обсуждение третьего шага нашего цикла статей по разработке серверов на основе L2J_Mobius! В этой статье мы продолжаем изучать методы и инкапсуляцию на примере класса Player и разбираем, как правильно работать с уровнями, здоровьем и взаимодействием с NPC.
/ J% s* N1 i) I7 F5 RЗдесь можно:4 ^  b5 L6 r: o( S6 `- S6 N
  • Задать вопросы о геттерах и сеттерах в L2J_Mobius.
  • Обсудить логику проверки данных в методах.
  • Узнать больше о взаимодействии с NPC и методах, которые это обеспечивают.
    # o" S! C7 t; @2 M& Q. B
  I9 ~3 E# O6 }1 c. U
Не стесняйтесь делиться своими вопросами, предложениями и примерами! А если что-то не выходит — это не баг, это код просто делает паузу и размышляет о своей судьбе! ?* f$ F3 R5 {# j6 z
Астралия ?) F7 @% ?) y. i2 Q6 R

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

AlexCoder Опубликовано 2024-10-17 22:32:08 | Показать все сообщения
Можешь подробнее объяснить, почему мы проверяем значение уровня в методе setLevel() перед его установкой? Почему нельзя просто присвоить любое значение?
 Автор| Astraliya Опубликовано 2024-10-17 23:00:07 | Показать все сообщения
AlexCoder опубликовал в 2024-10-17 22:32
; o# `( T; n- A# R2 |Можешь подробнее объяснить, почему мы проверяем значе ...
+ N5 \) F+ K, W/ d$ H* t; z3 Y  ]
Привет, AlexCoder!
- d1 B6 K( G" Q; T$ V( q; K% f7 d, Q1 kДавай разберём подробнее, почему важно проверять значение уровня в методе setLevel() перед его установкой. Это связано с защитой данных и соблюдением логики игрового процесса.$ V" |. D: ?+ i3 q

1. Защита от некорректных данных5 A/ _9 V8 g9 `  h4 h  r( ^" ?
Если мы не будем проверять значение уровня, можно случайно присвоить игроку отрицательный уровень или ноль, что нарушит логику игры. Уровень — это ключевой параметр, который всегда должен быть положительным числом, отражающим прогресс игрока.# L$ I$ H7 e1 W  ~- A$ z
Пример на основе Player.java из L2J_Mobius:
* G, n  r+ _# x! p, E, X% f
  1. public void setLevel(int newLevel) {  // public void установитьУровень(int новыйУровень)2 z, ^2 @8 U7 W* _
  2.     // Проверяем, что новый уровень больше 0$ N& M0 D2 ^! X4 Z( u# R: W
  3.     if (newLevel > 0) {
    ! ~3 K) `! g2 |& K
  4.         this.level = newLevel;  // Устанавливаем новый уровень
    $ T' B+ T; R9 S9 k1 y$ B
  5.     } else {$ e3 \- w1 \4 S; b0 T- N8 W2 ~
  6.         System.out.println("Неверный уровень: уровень должен быть больше 0");& ?& N4 I9 Z" Y6 P2 i1 o# p
  7.     }
    / w. k* i$ @( Q' p0 O, c
  8. }
    5 l- v1 W& X2 m- G* a
Скопировать код
Перевод и пояснение:1 }; q, B2 ?5 U/ p- |2 a/ K" A
setLevel(int newLevel) — метод для установки уровня игрока.0 t& W3 }4 u: b) n6 d
Мы проверяем, что новый уровень больше 0:) y2 J! J) T( e5 ~  K; w3 J1 P( V
  1. if (newLevel > 0)
    # G- N1 @6 v! k& ~, p
Скопировать код
Это предотвращает присвоение некорректных значений уровня (например, отрицательных или нулевых).7 i# S& [8 |, o  ?' t
Если условие выполняется, уровень устанавливается3 s$ E( b4 o$ P, |
  1. this.level = newLevel;2 C! z( u4 {2 \3 G% ]
Скопировать код
Если новый уровень меньше или равен 0, выводится сообщение об ошибке:
5 J+ \8 I! z2 K+ T3 _" m
, V: f0 P; h2 J# j- L$ ?. @
  1. System.out.println("Неверный уровень: уровень должен быть больше 0");# Z! I9 B9 x2 O; M7 }+ D
Скопировать код
2. Логика игрового процесса% g3 F* f' U  h
Представь, если бы у игрока был отрицательный уровень — это могло бы нарушить баланс игры. Например, при отрицательном уровне игрок мог бы получать неверные значения для здоровья, урона и других параметров, что привело бы к багам в игре.  h0 E$ y. A$ B# @
Итог:Проверка значения уровня помогает предотвратить ошибки и поддерживать корректную логику игрового процесса. Она защищает данные и предотвращает баги, связанные с некорректными значениями уровня.
0 k1 d2 T4 A+ j# f, ^4 g5 V( z' q5 R5 L$ P
P.S.# S2 f8 Q; H: G2 V+ ?; e
Даже если у нас не получится "прокачаться", зато будем уверены, что наш уровень всегда правильный! ?5 l8 y* \& `7 q! P3 t: P

% A; T5 w, E' o4 R
: i3 \: y/ O5 p# a
Чтобы ответить, вам надо авторизироваться в системе Вход | Зарегистрироваться

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

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

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

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

подписок0

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

постов9

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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