22/05/14 8:35
Thejuster
Salve gente.
Ho un estremo bisogno del vostro aiuto riguardante questo algoritmo per un mio gioco.
Vi spiego un pò la questione.
Ho 3 Valori fissi
int modello = 500;
int aggiunta = 500;
int correzzione = 500;
int livello = 1;
int exp = 0;
int exp_arrivo = 1500;
int vecchia_exp = 0;
In base a questi 3 valori io creo una curva di esperienza formando una tabella
esempio
[ LV 1 EXP 0 / 1500 ]
Algoritmo di calcolo
modello + (aggiunta * livello) + correzione
quindi facendo un calcolo abbiamo
500 + ( 500 ) + 500 + vecchia_exp = 1500;
la vecchia exp ora dovrà memorizzare l'exp di completamento del livello
quindi la vecchia_exp diventa 1500 invece di 0
quindi per il successivo livello
[ LV 2 EXP 1500 / 3500 ]
perché
500 + ( 500 * LV ) + 500 + vecchia_exp = 3500
e così via
quindi continuando per i vari livelli avrei una tabella del genere
0
1500
3500
6000
9000
12500
16500
21000
ecc. ecc.
Questo e per quanto riguarda l'algoritmo di calcolo per i punti di esperienza.
Ora il problema sorge in questo punto.
Io devo riuscire a ricavare tra l'exp iniziale del nuovo livello, all'exp finale del nuovo livello
ottenere la percentuale tra i due numeri e visionarla tramite una progressbar.
Ho provato tantissime volte con tanti metodi ma ottengo sempre valori errati non corrispondenti.
Questo è il codice che ho usato io.
Ditemi dove sbaglio
Lo sò, il codice potrebbe essere sicuramente errato.
Per i primi 2 livelli funziona
0 -> 1500 -> 3500.
Poi stranamente non si smuove più.
1° Come posso tenere memorizzato il lavore della vecchia exp se essa può essere usata solo
ed esclusivamente in un clico di rendering?
2°
successivamente avere una percentuale che poi devo andarla ad abbinare ad una progressbar di max
63 pixel.
NB: L'applicazione non accetta numeri decimali o valori float.
Ho un estremo bisogno del vostro aiuto riguardante questo algoritmo per un mio gioco.
Vi spiego un pò la questione.
Ho 3 Valori fissi
int modello = 500;
int aggiunta = 500;
int correzzione = 500;
int livello = 1;
int exp = 0;
int exp_arrivo = 1500;
int vecchia_exp = 0;
In base a questi 3 valori io creo una curva di esperienza formando una tabella
esempio
[ LV 1 EXP 0 / 1500 ]
Algoritmo di calcolo
modello + (aggiunta * livello) + correzione
quindi facendo un calcolo abbiamo
500 + ( 500 ) + 500 + vecchia_exp = 1500;
la vecchia exp ora dovrà memorizzare l'exp di completamento del livello
quindi la vecchia_exp diventa 1500 invece di 0
quindi per il successivo livello
[ LV 2 EXP 1500 / 3500 ]
perché
500 + ( 500 * LV ) + 500 + vecchia_exp = 3500
e così via
quindi continuando per i vari livelli avrei una tabella del genere
0
1500
3500
6000
9000
12500
16500
21000
ecc. ecc.
Questo e per quanto riguarda l'algoritmo di calcolo per i punti di esperienza.
Ora il problema sorge in questo punto.
Io devo riuscire a ricavare tra l'exp iniziale del nuovo livello, all'exp finale del nuovo livello
ottenere la percentuale tra i due numeri e visionarla tramite una progressbar.
Ho provato tantissime volte con tanti metodi ma ottengo sempre valori errati non corrispondenti.
Questo è il codice che ho usato io.
Ditemi dove sbaglio
//Questa funzione consente di ottenere l'exp //rimanente tra un livello e l'altro. //Esempio se da LV 2 exp 1500 a lv 3 3500 ed io ho 500 exp //Mi restituisce l'exp rimanente per raggiungere il livello. int Calcolo(int id) { // modello + (aggiunta * livello) + correzione int modello = RPG::dbActors[id]->expPrimary; int aggiunta = RPG::dbActors[id]->expSecondary; int correzzione = RPG::dbActors[id]->expTertiary; int livello = RPG::actors[id]->level; int calc1 = aggiunta * livello; int calc2 = modello + correzzione; int tot = calc1 + calc2; return tot; } //Eroe 1 if(eroi == 1) { int modello = 500; int aggiunta = 500; int correzzione = 500; int exp_massima=0; int exp_minima=0; int exp_rimanente=0; int livello = 1; int c1 = 0,c2 = 0; // modello + (aggiunta * livello) + correzione if(livello != RPG::actors[1]->level) { c1 = aggiunta * livello; vecchia_exp = c1 + modello + correzzione; livello++; } for(int i = 0; i < RPG::actors[1]->level; i++) { c1 = aggiunta * livello; exp_rimanente = modello + c1 + correzzione + vecchia_exp; }
Lo sò, il codice potrebbe essere sicuramente errato.
Per i primi 2 livelli funziona
0 -> 1500 -> 3500.
Poi stranamente non si smuove più.
1° Come posso tenere memorizzato il lavore della vecchia exp se essa può essere usata solo
ed esclusivamente in un clico di rendering?
2°
successivamente avere una percentuale che poi devo andarla ad abbinare ad una progressbar di max
63 pixel.
NB: L'applicazione non accetta numeri decimali o valori float.
Ultima modifica effettuata da Thejuster 22/05/14 8:57
mire.forumfree.it/ - Mire Engine
C# UI Designer
C# UI Designer