Opublikowano 25 Listopada 20232 l 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 Tylko zalogowani Zaloguj się, aby wyświetlić chronioną treść Ten post zawiera treści dostępne tylko dla członków. Zaloguj się lub utwórz konto, aby odblokować całą zawartość tego posta. Zaloguj się Utwórz konto ➕ Dodaj: 📂 Lokalizacja pliku: 'game -> marriage.cpp' 🔍 Szukaj ➕ Dodaj: 🔍 Szukaj ♻️ Zamień 📂 Lokalizacja pliku: 'game -> marriage.h' 🔍 Szukaj ♻️ Zamień
Opublikowano 18 Sierpnia 202518 Sie dla osóbek którym wyrzuca błąd z needsSave = true zamień na:TextKod został skopiowanybSave = true;
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto