Skocz do zawartości
Masz już aplikację Sharegon?

Odkryj wszystkie możliwości. Dowiedz się więcej

Sharegon.pl

Zainstaluj aplikację Sharegon i korzystaj z powiadomień push oraz licznika nowych aktywności bezpośrednio z ekranu głównego.

Aby zainstalować tę aplikację na iOS i iPadOS.
  1. Tap the Share icon in Safari
  2. Przewiń menu i stuknij Dodaj do ekranu początkowego.
  3. Stuknij Dodaj w prawym górnym rogu.
Zainstaluj aplikację Sharegon na Androidzie
  1. Otwórz Sklep Google Play na swoim smarfonie.
  2. Wyszukaj „Sharegon” w pasku wyszukiwania.
  3. Stuknij „Zainstaluj”, aby pobrać aplikację.

Naprawa błędu przepełnienia punktów miłosnych

Featured Replies

Opublikowano

image.png.a144663d4007d16872d3413c4a1a8bf3.png

 

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ń

  • 1 rok później...

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Konto

Nawigacja

Skonfiguruj powiadomienia push w przeglądarce.

Chrome (Android)
  1. Stuknij ikonę kłódki obok paska adresu.
  2. Wybierz Uprawnienia → Powiadomienia.
  3. Dostosuj swoje preferencje.
Chrome (Desktop)
  1. Kliknij ikonę kłódki na pasku adresu.
  2. Wybierz Ustawienia witryny.
  3. Znajdź Powiadomienia i dostosuj swoje preferencje.