** "11 aufeinanderfolgende SR oder mehr 1 bestätigte Gacha" ** In einem tatsächlichen sozialen Spiel ist eine Gacha mit einer bestimmten Seltenheit oder höher ein Standard, indem die Kosten jeweils zehnmal verwendet werden. Überlegen wir uns anhand der vorherigen Gacha-Logik, wie wir dies realisieren können. Einfache Gacha-Logik in Python geschrieben
#Artikel-ID und Gewichtswörterbuch für die Lotterie
item_dic = {"id_1":1,"id_2":5,"id_3":14,"id_4":30,"id_5":50}
Betrachten wir id_1 bis 4 als Ziel der ** Bestätigung der Bonus-Rarität **.
#Artikel-ID und Gewichtswörterbuch für die Lotterie
item_dic = {"id_1":1,"id_2":5,"id_3":14,"id_4":30,"id_5":50}
#Anzahl der Lotterien
times = 10
item_list = gacha(item_dic,times)
#Bonus Item ID und Gewichtswörterbuch für die Lotterie
sp_item_dic = {"id_1":1,"id_2":5,"id_3":14,"id_4":30}
#Bonus Lotterie zählen
sp_times = 1
item_list.extend(gacha(sp_item_dic,sp_times))
Dies ist eine einfache Implementierungsmethode, die die erstellte Gacha-Funktion unverändert verwendet. Wie im Code ** gezeigt, wird die redundante Verarbeitung jedoch auf dem Anrufer ** beschrieben. Daher werde ich versuchen, die Verarbeitung in die Gacha-Funktion aufzunehmen.
Überlegen Sie, welche Informationen als Parameter für die Gacha-Funktion benötigt werden. Als Voraussetzung, dass einige der Gegenstände, die für diese Gacha bestimmt sind, der Bonuslotterie unterliegen. Außerdem ist der Bonus auf eins festgelegt.
Die für die Bonuslotterie erforderlichen Informationen sind die Liste der Ziel-IDs und die Anzahl der Lotterien. Fügen wir zunächst einfach einen Parameter hinzu.
--sp_item_ids: Liste der IDs, die der Bonus-Gacha unterliegen
Auch, damit Sie Gacha ohne Extras ausführen können Versuchen Sie, die Anfangswerte für die hinzugefügten Parameter festzulegen.
def gacha(item_dic, times, sp_item_ids=[]):
total_weight = 0
sp_total_weight = 0
sp_item_dic = {}
for item_key,value in item_dic.items():
total_weight += value
if len(sp_item_ids) > 0:
if item_key in sp_item_ids:
sp_total_weight += value
sp_item_dic[item_key] = value
results = []
for i in range(times):
results.append(lottery(item_dic,total_weight))
#Bonus Gacha
if len(sp_item_dic) > 0:
results.append(lottery(sp_item_dic, sp_total_weight))
return results
#Artikel-ID und Gewichtswörterbuch für die Lotterie
item_dic = {"id_1":1,"id_2":5,"id_3":14,"id_4":30,"id_5":50}
#Anzahl der Lotterien
times = 10
#Bonusliste der lotteriepflichtigen Artikel-IDs
sp_item_list = ["id_1","id_2","id_3","id_4"]
item_list = gacha(item_dic, times, sp_item_list)
Ähnliche Ergebnisse wurden erhalten. Die Logik der Gacha-Funktion ist jedoch sehr kompliziert geworden. In diesem Fall ist es einfacher und sauberer, die ursprüngliche Gacha separat auszuführen.
** Es kann gesagt werden, dass die Reparaturrichtung falsch war **
Machen Sie die Gacha-Funktion rückgängig und Erstellen Sie eine neue Funktion namens gacha_omake.
#Gacha mit Bonus
def gacha_omake(item_dic, times, sp_item_ids=[]):
item_list = gacha(item_dic, times)
#sp_item_Wenn IDs vorhanden sind, handelt es sich um eine Gacha mit einem Bonus
if len(sp_item_ids) > 0:
sp_item_dic = {}
for item_key,value in item_dic.items():
if item_key in sp_item_ids:
sp_item_dic[item_key] = value
if len(sp_item_dic) > 0:
item_list.extend(gacha(sp_item_dic, 1))
return item_list
def gacha(item_dic, times):
total_weight = 0
for value in item_dic.values():
total_weight += value
results = []
for i in range(times):
results.append(lottery(item_dic,total_weight))
return results
#Artikel-ID und Gewichtswörterbuch für die Lotterie
item_dic = {"id_1":1,"id_2":5,"id_3":14,"id_4":30,"id_5":50}
#Anzahl der Lotterien
times = 10
#Bonusliste der lotteriepflichtigen Artikel-IDs
sp_item_list = ["id_1","id_2","id_3","id_4"]
item_list = gacha_omake(item_dic, times, sp_item_list)
Die Gacha-Verarbeitung selbst bleibt der Gacha-Funktion überlassen Durch Ausschneiden und Zusammenfassen nur der normalen Gacha und des Prozesses, der die Bonus-Gacha ausführt Die Funktion der Funktion wurde geklärt.
Recommended Posts