Opublikowano 25 Listopada 20231 r 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: 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ąć). Wymagane: Implementacja: 📂 Lokalizacja pliku: 'common -> length.h' 🔍 Szukaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ➕ Dodaj: 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 📂 Lokalizacja pliku: 'game -> marriage.cpp' 🔍 Szukaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ➕ Dodaj: 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 🔍 Szukaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ♻️ Zamień 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 📂 Lokalizacja pliku: 'game -> marriage.h' 🔍 Szukaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ♻️ Zamień 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się
Dołącz do dyskusji
Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.