23-08-2010, 09:40 AM
un peu dans le même genre mais en plus "dirigiste"
un tableau avec chacune des caractéristiques contenant une valeur
base['vitesse'] = 100
base[force'] = 20
base['intelligence'] = 80
un "reste" (pour arriver à la somme des caractéristiques que tu veux)
dans le chiffrage "oxman"
reste = 30 (pour arriver au "230 oxman")
ensuite tu boucles et tu distribues ces points (en supposant que le tableau des caractéristiques soit $caracs
c = count(base) // combien de carac
p = 1 // combien de carac déjà attribuées
foreach (base as carac => valeur)
{
d = eclate(reste, c,p++)
caracs[carac] = valeur + d
reste - = d
if reste ==0 break; // inutile de continuer à boucler
}
c'est du proto code mais bon on est pas loin
reste plus qu'a définir la fonction "eclate"
je vois au moins deux solutions
la première simple
eclate n'est rien d'autre qu un rand entre 0 et reste
cette méthode favorise les premières caractéristiques au dépend des dernières
la deuxième guère plus poussée
eclate fait un rand entre 0 et reste * p/c
cette méthode favorise plutôt les dernières caractéristiques au dépend des premières
après tu n'as plus qu'à jongler avec les valeurs de base
un tableau avec chacune des caractéristiques contenant une valeur
base['vitesse'] = 100
base[force'] = 20
base['intelligence'] = 80
un "reste" (pour arriver à la somme des caractéristiques que tu veux)
dans le chiffrage "oxman"
reste = 30 (pour arriver au "230 oxman")
ensuite tu boucles et tu distribues ces points (en supposant que le tableau des caractéristiques soit $caracs
c = count(base) // combien de carac
p = 1 // combien de carac déjà attribuées
foreach (base as carac => valeur)
{
d = eclate(reste, c,p++)
caracs[carac] = valeur + d
reste - = d
if reste ==0 break; // inutile de continuer à boucler
}
c'est du proto code mais bon on est pas loin
reste plus qu'a définir la fonction "eclate"
je vois au moins deux solutions
la première simple
eclate n'est rien d'autre qu un rand entre 0 et reste
cette méthode favorise les premières caractéristiques au dépend des dernières
la deuxième guère plus poussée
eclate fait un rand entre 0 et reste * p/c
cette méthode favorise plutôt les dernières caractéristiques au dépend des premières
après tu n'as plus qu'à jongler avec les valeurs de base