Gacha écrit en python-Rareté confirmée avec bonus-

Contenu

** "11 SR consécutifs ou plus 1 gacha confirmé" ** Dans un jeu social réel, un gacha avec une certaine rareté ou plus est une norme en utilisant le coût de 10 fois à la fois. Sur la base de la logique précédente du gacha, réfléchissons à la façon de le réaliser. Logique gacha simple écrite en Python

#ID d'article et dictionnaire de poids pour la loterie
item_dic = {"id_1":1,"id_2":5,"id_3":14,"id_4":30,"id_5":50}

Considérons id_1 à 4 comme la cible de la ** confirmation de rareté du bonus **.

Exécuter et fusionner en deux étapes

#ID d'article et dictionnaire de poids pour la loterie
item_dic = {"id_1":1,"id_2":5,"id_3":14,"id_4":30,"id_5":50}
#Nombre de loterie
times = 10

item_list = gacha(item_dic,times)

#ID de l'objet bonus et dictionnaire de poids pour la loterie
sp_item_dic = {"id_1":1,"id_2":5,"id_3":14,"id_4":30}
#Compte de loterie bonus
sp_times = 1

item_list.extend(gacha(sp_item_dic,sp_times))

Il s'agit d'une méthode d'implémentation simple qui utilise la fonction gacha créée telle quelle. Cependant, comme indiqué dans le code **, le traitement redondant est décrit sur l'appelant **. Par conséquent, je vais essayer d'inclure le traitement dans la fonction gacha.

Essayez de modifier la fonction gacha

Considérez quel type d'informations est nécessaire en tant que paramètre pour la fonction gacha. En principe, certains des objets ciblés pour ce gacha seront soumis à la loterie bonus. De plus, le bonus est fixé à un.

Les informations requises pour la loterie bonus sont la liste des identifiants cibles et le nombre de loteries. Tout d'abord, ajoutons simplement un paramètre.

--sp_item_ids: Liste des identifiants soumis au bonus gacha

Aussi, pour que vous puissiez exécuter gacha sans extras Essayez de définir les valeurs initiales des paramètres ajoutés.

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

Exécuter le gacha rénové

#ID d'article et dictionnaire de poids pour la loterie
item_dic = {"id_1":1,"id_2":5,"id_3":14,"id_4":30,"id_5":50}
#Nombre de loterie
times = 10

#Bonus Liste des identifiants d'objets soumis à la loterie
sp_item_list = ["id_1","id_2","id_3","id_4"]

item_list = gacha(item_dic, times, sp_item_list)

Des résultats similaires ont été obtenus. Cependant, la logique de la fonction gacha est devenue très compliquée. Dans ce cas, il est plus simple et plus propre d'exécuter le gacha d'origine séparément.

** On peut dire que le sens de réparation était erroné **

Créez une fonction gacha avec un bonus

Annulez la fonction gacha et Créez une nouvelle fonction appelée gacha_omake.

#Gacha avec bonus
def gacha_omake(item_dic, times, sp_item_ids=[]):
    item_list = gacha(item_dic, times)
    #sp_item_Si des identifiants existent, ce sera un gacha avec un 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
#ID d'article et dictionnaire de poids pour la loterie
item_dic = {"id_1":1,"id_2":5,"id_3":14,"id_4":30,"id_5":50}
#Nombre de loterie
times = 10

#Bonus Liste des identifiants d'objets soumis à la loterie
sp_item_list = ["id_1","id_2","id_3","id_4"]

item_list = gacha_omake(item_dic, times, sp_item_list)

Le traitement gacha lui-même est laissé à la fonction gacha En découpant et en résumant uniquement le gacha normal et le processus qui exécute le gacha bonus La fonction de la fonction a été clarifiée.

Recommended Posts

Gacha écrit en python-Rareté confirmée avec bonus-
Gacha écrit en python-Practice 1-
Gacha écrit en Python-Data design-
Gacha écrit en Python -BOX Gacha-
Logique gacha simple écrite en Python
Test de stress avec Locust écrit en Python
Gacha écrit en python-Implémentation dans la structure de données de base-
Gacha écrit en python-Practice 2 ・ Bases du step-up gacha-
Gacha écrit en python-Practice 3 ・ Ajout de fonctions gacha step-up-
Gacha écrit en python - Ajout d'une fonction de réglage de période -
Remplacez tous les indicateurs écrits par des noms courts dans maya.cmds par des noms longs
Analyse morphologique avec Igo + mecab-ipadic-neologd en Python (avec bonus Ruby)