2016-04-26 4 views
0

Dies ist eher eine Zusammenfassung "Wie würde ich an diese Frage herangehen?" Als ich mit Codierung zu kämpfen habe. Ich möchte einen Charaktererstellungsbildschirm machen, in dem du 0 Punkte hast, aber du kannst von einer Statistik nehmen und sie in eine andere setzen. Wie würden Sie unter diesem System Statistiken statistisch verteilen? Ich habe Basisstatistiken und die maximale Abweichung, aber ich weiß nicht, wie ich die statistischen Werte randomisieren soll, um spezialisierte Charaktere zu erstellen. Sie werden nicht alle 150% in einem und 75% in den anderen zwei Statistiken sein, aber ich denke, eine sanfte Spezialisierung, wahrscheinlich mit irgendeiner Form von gewichtetem Randomizer, wäre nett. Fühlen Sie sich frei, mit Pseudo-Code oder nur eine Erklärung zu beantworten, wie Sie es tun würden. : DF: Randomisierte Zeichenerstellung mit einem Punktesystem

Antwort

0

Hier ist meine Lösung in Python:

import random 
from operator import add, sub 

baseStats = { 
"baseHealth":10.00, 
"baseSpeed":10.00, 
"baseAccuracy":10.00, 
} 
baseDeviation = 3 

ops = (add, sub) 
charStats = {} 

#Make spread. Eg: If the deviation is 3 It'll be [0, 0, 0, 0, 1, 1, 1, 2, 2, 3] 
#With the highest deviations being the rarest 
spread = [] 
for i in range(1,baseDeviation+2): 
    for j in range(1,baseDeviation+2-i): 
     spread.append(i) 
print(spread) 

#Make a list of stats without the base values. 
remainingStats = [] 
for key, value in baseStats.items(): 
    charStats[key] = value 
    remainingStats.append(key) 

#Choose a stat and add or subract a random choice from our weighted spread 
op = random.choice(ops) 
chosenOne = random.choice(remainingStats) 
remainingStats.remove(chosenOne) 
chosenNumber = random.choice(spread) 
charStats[chosenOne] = op(charStats[chosenOne],chosenNumber) 
spread.remove(chosenNumber) 

#Work out the difference between the randomised stat and the standard then give 
#it to one and leave the other be. 
difference = baseStats[chosenOne] - charStats[chosenOne] 
charStats[random.choice(remainingStats)] = charStats[random.choice(remainingStats)] + difference 

print(charStats) 
Verwandte Themen