2016-04-30 6 views
0

Ich werde ehrlich sein: Ich weiß nicht wirklich, was ich mache.VicBot Dice Roller (Python 2.7)

Ich möchte es so machen, dass VicBot (für Python 2.7) auf dem Befehl "/ roll xdy" "würfeln" kann, wobei x die Anzahl der Würfel und y die Anzahl der Seiten dieser Würfel ist .

Also, mehr direkt benötigen ich in der Lage sein, x zu verlangen Variablen ≥y, und haben sie angezeigt "(Variable) + (Variable) = (Summe)"

Alle VicBot sind hier zu finden: https://github.com/Vicyorus/VicBot

(Falls Sie sich wundern. ich habe aus Versehen diese Frage habe schreiben, bevor ich fertig war)

+0

Ich habe gerade bearbeitet, um die Code-Formatierung zu verbessern, aber ich habe Ihren dritten Absatz nicht wirklich verstanden, so dass seine Formatierung ein wenig seltsam bleibt. Vielleicht können Sie klären, was Sie mit "x Variablen ≥y" meinen (z. B. mit einem konkreten Beispiel)? – Blckknght

+0

Mit x beziehe ich mich auf die Anzahl von "Würfeln" und mit y beziehe ich mich auf die Anzahl der Seiten auf diesen "Würfeln", die mit der höchsten Zahl korrelieren würden, die Sie erhalten könnten. Also "2d6" oder "2 Variablen kleiner oder gleich 6". Nehmen wir an, die gewählten Zahlen sind 3 und 6 werden in dem angezeigt, was ich meine "(Variable 1) + (Variable 2) = (Summe)" wäre "3 + 6 = 9". Ich werde auch versuchen, diesen Absatz zu verdeutlichen bisschen in meinem Beitrag. – Viper

+0

Wenn Sie dies in einem Konsolenprogramm tun würden, wüssten Sie dann, wie der Zufallszahlen-Teil des Problems funktioniert? Das heißt, sind Sie nur über den Chat-Bot-Teil des Problems verwirrt, oder mehr über die Berechnung der Ergebnisse für '3d6'? Ich habe noch nie von "VicBot" gehört und bin nicht wirklich daran interessiert, große Mengen an Code zu lesen, um etwas darüber zu erfahren, aber ich könnte eine Antwort über das Zufallszahlen-Zeug zusammenstellen, wenn es das ist, worüber du eigentlich fragst . – Blckknght

Antwort

0

ich weiß nicht viel über Ihre chatbot, noch will ich wirklich durch den gesamten Code graben Sie‘ Ich habe es in Ihre Frage aufgenommen (es ist mir nicht einmal klar, ob etwas davon Code ist, den Sie geschrieben haben, anstatt Beispielcode, der mit dem Bot).

Was ich tun kann, ist die Adresse die sterben rollenden Sachen. Das ist ziemlich einfach. Alles, was Sie brauchen, ist Pythons random Modul und einige String-Manipulation und Formatierungscode.

import random 

def roll_dice(dice_string): 
    """Parse a string like "3d6" and return a string showing the die rolls and their sum""" 
    number_of_dice, number_of_sides = map(int, dice_string.split("d")) 
    rolls = [random.randint(1, number_of_sides) for _ in range(number_of_dice)] 
    output_string = "{} = {}".format(" + ".join(map(str(rolls)), sum(rolls)) 
    return output_string 

Beispiel Ausgabe:

>>> roll_dice("5d6") 
'6 + 6 + 5 + 5 + 6 = 28' 
>>> roll_dice("5d6") 
'1 + 5 + 1 + 2 + 2 = 11' 
>>> roll_dice("3d100") 
'16 + 83 + 56 = 155' 
>>> roll_dice("1d20") 
'18 = 18' 

Hoffentlich wird der Code ist ziemlich selbsterklärend. Die vier Anweisungen in der Funktion machen jeweils eine Sache: Analysieren der Eingabe, Erzeugen der angeforderten Zufallszahlen, Formatieren in eine Zeichenfolge für die Ausgabe und schließlich Zurückgeben der Zeichenfolge. Die zweite Zeile, die die tatsächliche Zufallszahlengenerierung ausführt, könnte nützlich sein, um sie als separate Funktion zu extrahieren (indem Ganzzahlargumente genommen und eine Liste von Ganzzahlen zurückgegeben wird).