Top.Mail.Ru

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

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

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

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

x
Последний раз это сообщение было отредактировано Astraliya в 2024-10-17 21:34 # A1 E8 v: E! D! i6 B
3 ~: C1 E3 v' a7 s( v$ M$ h
5 R% T! i$ J( G# T/ t
Шаг 1.3: Продолжение темы методов и инкапсуляции на примере L2J_Mobius2 z( E$ A/ N/ q* [0 C4 T% [
7 P2 ^+ @% C: {* p& ?
1 j7 ?" q' r4 `
Добро пожаловать в обсуждение третьего шага нашего цикла статей по разработке серверов на основе L2J_Mobius! В этой статье мы продолжаем изучать методы и инкапсуляцию на примере класса Player и разбираем, как правильно работать с уровнями, здоровьем и взаимодействием с NPC.
& V  M, d' X* k1 S% TЗдесь можно:- e$ w6 {9 g: ]! U8 t
  • Задать вопросы о геттерах и сеттерах в L2J_Mobius.
  • Обсудить логику проверки данных в методах.
  • Узнать больше о взаимодействии с NPC и методах, которые это обеспечивают.
    * Q+ b: ?. S# q0 q9 a7 L9 q

- d) R% D/ M; S2 X/ @# MНе стесняйтесь делиться своими вопросами, предложениями и примерами! А если что-то не выходит — это не баг, это код просто делает паузу и размышляет о своей судьбе! ?- o- j! f, l) u) Y( z& u
Астралия ?4 o* h4 _$ U" K( r1 `

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

AlexCoder Опубликовано 2024-10-17 22:32:08 | Показать все сообщения
Можешь подробнее объяснить, почему мы проверяем значение уровня в методе setLevel() перед его установкой? Почему нельзя просто присвоить любое значение?
 Автор| Astraliya Опубликовано 2024-10-17 23:00:07 | Показать все сообщения
AlexCoder опубликовал в 2024-10-17 22:32
9 k) h% M# a/ Y5 m; TМожешь подробнее объяснить, почему мы проверяем значе ...

/ [$ v8 ~. `$ Y5 V" Y! TПривет, AlexCoder!! H! M" V0 p3 J& C
Давай разберём подробнее, почему важно проверять значение уровня в методе setLevel() перед его установкой. Это связано с защитой данных и соблюдением логики игрового процесса.9 y* P% A) N8 g1 K( ]

1. Защита от некорректных данных) j3 f; z' P' o' ^
Если мы не будем проверять значение уровня, можно случайно присвоить игроку отрицательный уровень или ноль, что нарушит логику игры. Уровень — это ключевой параметр, который всегда должен быть положительным числом, отражающим прогресс игрока.
, e3 U# ^1 y0 ^% y8 s! DПример на основе Player.java из L2J_Mobius:2 O- r9 q, h! h4 W; u
  1. public void setLevel(int newLevel) {  // public void установитьУровень(int новыйУровень)5 f4 t0 ]+ v0 k2 K7 q
  2.     // Проверяем, что новый уровень больше 0, Z4 l/ R# j2 S- X2 p! Y
  3.     if (newLevel > 0) {
    & `9 A/ O: n3 w; R9 @+ v
  4.         this.level = newLevel;  // Устанавливаем новый уровень! X9 `2 Z$ f( h) ?- W% i: B& A3 B4 `
  5.     } else {9 }/ l6 \. u8 |
  6.         System.out.println("Неверный уровень: уровень должен быть больше 0");
    " l- e' f( Y# \
  7.     }
    & I/ E8 O/ E/ s5 I9 t  a
  8. }
    ( E0 l( P5 {' t; b  j( w/ [3 h
Скопировать код
Перевод и пояснение:
6 |9 R5 b# {0 esetLevel(int newLevel) — метод для установки уровня игрока.  \% T4 I' a$ n: u
Мы проверяем, что новый уровень больше 0:
) P3 W1 ~' w  \
  1. if (newLevel > 0)
    ! |8 j! @( ~# Z. g: u4 |
Скопировать код
Это предотвращает присвоение некорректных значений уровня (например, отрицательных или нулевых).3 `7 h: b/ z" Q9 d- L) d( Z0 p+ _0 s
Если условие выполняется, уровень устанавливается. M1 Z& i& P+ o* W4 x: {0 a
  1. this.level = newLevel;. b9 f1 V& R$ @4 e$ s
Скопировать код
Если новый уровень меньше или равен 0, выводится сообщение об ошибке:# z$ {' X3 l6 J, |% l

7 D: B: x, I6 @- F2 h
  1. System.out.println("Неверный уровень: уровень должен быть больше 0");4 S, Q# I. c2 `
Скопировать код
2. Логика игрового процесса2 _# |* b( h; m
Представь, если бы у игрока был отрицательный уровень — это могло бы нарушить баланс игры. Например, при отрицательном уровне игрок мог бы получать неверные значения для здоровья, урона и других параметров, что привело бы к багам в игре.+ B# |; p/ Y/ d0 q1 L/ l, A
Итог:Проверка значения уровня помогает предотвратить ошибки и поддерживать корректную логику игрового процесса. Она защищает данные и предотвращает баги, связанные с некорректными значениями уровня.
2 P1 h: O/ R: C% J' J
, ~6 O5 x0 q' n; z1 {4 sP.S.
: D, Y4 S6 _  U# C- K+ b: H- @2 {Даже если у нас не получится "прокачаться", зато будем уверены, что наш уровень всегда правильный! ?
$ v; p3 D/ u" r0 a
3 `7 l1 d6 d" t* p
2 a" u8 w- C& C, H
Чтобы ответить, вам надо авторизироваться в системе Вход | Зарегистрироваться

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

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

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

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

подписок0

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

постов9

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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