[GO] Gacha in Python-Rarity geschrieben mit Bonus bestätigt

Inhalt

** "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 **.

In zwei Schritten ausführen und zusammenführen

#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.

Versuchen Sie, die Gacha-Funktion zu ändern

Ü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

Führen Sie die renovierte Gacha aus

#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 **

Erstellen Sie eine Gacha-Funktion mit einem Bonus

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

Gacha in Python-Rarity geschrieben mit Bonus bestätigt
Gacha geschrieben in Python-Übung 1-
Gacha geschrieben in Python-Data Design-
Gacha geschrieben in Python -BOX Gacha-
Einfache Gacha-Logik in Python geschrieben
Stresstest mit Locust in Python geschrieben
Gacha geschrieben in Python-Implementierung in grundlegende Datenstruktur-
Gacha geschrieben in Python-Übung 2 ・ Grundlagen der Step-up-Gacha-
Gacha geschrieben in Python-Übung 3 ・ Hinzufügen von Step-up-Gacha-Funktionen-
Gacha geschrieben in Python-Addition der Periodeneinstellungsfunktion-
Ersetzen Sie alle Flags, die in maya.cmds mit Kurznamen geschrieben wurden, durch Langnamen
Morphologische Analyse mit Igo + mecab-ipadic-neologd in Python (mit Ruby-Bonus)