Chciałbym podzielić się z wami pewną aktualizacją, którą wprowadziłem w systemie małżeństwa. Dotyczy ona funkcji Update w klasie TMarriage, odpowiedzialnej za zarządzanie punktami miłości (love_point). W oryginalnej wersji, mieliśmy do czynienia z potencjalnym problemem przepełnienia. Zmienna love_point była typu DWORD, co oznacza maksymalny zakres wartości na poziomie około 4,29 miliarda. W sytuacji, gdy dodawane punkty przekraczały ten limit, mogło dochodzić do błędnych wyników. Aby zapobiec tej sytuacji, wykorzystano funkcję MIN, ograniczając maksymalną wartość love_point do 2 miliardów. Niestety, było to rozwiązanie dalekie od idealnego, ponieważ mogło prowadzić do utraty punktów, które przekraczały ten limit.
Wprowadzone zmiany:
Zmieniłem typ zmiennej z DWORD na uint64_t dla totalLovePoints to znacznie zwiększa zakres wartości i eliminuje ryzyko przepełnienia.
Zastąpiłem funkcję MIN funkcją std::clamp - dzięki temu wartość love_point jest bezpiecznie ograniczana do prawidłowego zakresu, bez ryzyka utraty punktów.
Zoptymalizowałem kod, dodałem warunki wczesnego zakończenia funkcji i użyłem pętli for do iteracji po identyfikatorach graczy, co poprawia wydajność kodu.
Zaktualizowałem nazwy zmiennych i argumentów dla lepszego zrozumienia kodu (możesz to pominąć).
Cześć wszystkim,
Chciałbym podzielić się z wami pewną aktualizacją, którą wprowadziłem w systemie małżeństwa. Dotyczy ona funkcji Update w klasie TMarriage, odpowiedzialnej za zarządzanie punktami miłości (love_point). W oryginalnej wersji, mieliśmy do czynienia z potencjalnym problemem przepełnienia. Zmienna love_point była typu DWORD, co oznacza maksymalny zakres wartości na poziomie około 4,29 miliarda. W sytuacji, gdy dodawane punkty przekraczały ten limit, mogło dochodzić do błędnych wyników. Aby zapobiec tej sytuacji, wykorzystano funkcję MIN, ograniczając maksymalną wartość love_point do 2 miliardów. Niestety, było to rozwiązanie dalekie od idealnego, ponieważ mogło prowadzić do utraty punktów, które przekraczały ten limit.
Wprowadzone zmiany:
Wymagane:
Implementacja:
📂 Lokalizacja pliku: 'common -> length.h'
🔍 Szukaj
➕ Dodaj:
📂 Lokalizacja pliku: 'game -> marriage.cpp'
🔍 Szukaj
➕ Dodaj:
🔍 Szukaj
♻️ Zamień
📂 Lokalizacja pliku: 'game -> marriage.h'
🔍 Szukaj
♻️ Zamień