Kleiner Zeitvertreib



  • Hm, klingt so weit sehr gut, und haut fuer die ersten Level offenbar auch hin.
    Ich habe aber noch ein paar hoehere Werte:
    145 (oder 144, wenn 0-basiert) muesste zB.14.069.736 (mehr verlaessliche Werte habe ich erstmal aber wirklich nicht :D)...
    Wie gesagt: Keine Ahnung, ob bei hoeheren Werten ploetzlich die Formel gewechselt wird oder was sonst fuer Spaesse - ich denke doch aber mal unwahrscheinlich. Zudem sollte ich vielleicht noch anmerken, dass der Algo hoechst wahrscheinlich nur mit ints rechnet. 😉

    Edit: Ha, SkillZ! 😃 Endlich habe ich das olle Gefrickel. 🕶

    In Java uebersetzt sieht es in etwa so aus:

    static int so_level2exp(int level)
    	{
    		if (level >=255) return (1000000000);
    		if (level <= 1) return (0);
    		int exp = 0;
    		for (int lv_cnt = 1; lv_cnt<level; lv_cnt++)
    		{
    			if (lv_cnt < 100)
    			{
    				exp+=(lv_cnt*lv_cnt+1)*
    					( (int)((((long)lv_cnt-1)*0x66666667)>>34) -
    							((lv_cnt-1)>>0x1f) +5 );
    			}
    			else
    			{
    				exp+=((lv_cnt*lv_cnt+1)<<4)-(lv_cnt*lv_cnt+1);
    			}
    		}
    		return (exp);
    	}
    

    Also doch eine Fallunterscheidung fuer >=100... Naja, fuer alle kleinere Werte tut's Christophs Formel aber. 👍


Anmelden zum Antworten