[BACK]Return to prob.c CVS log [TXT][DIR] Up to [contributed] / early-roguelike / rogue4

Annotation of early-roguelike/rogue4/prob.c, Revision 1.1

1.1     ! rubenllo    1: /*
        !             2:  *
        !             3:  * Rogue: Exploring the Dungeons of Doom
        !             4:  * Copyright (C) 1980, 1981, 1982 Michael Toy, Ken Arnold and Glenn Wichman
        !             5:  * All rights reserved.
        !             6:  *
        !             7:  * See the file LICENSE.TXT for full copyright and licensing information.
        !             8:  */
        !             9:
        !            10: # include      <curses.h>
        !            11: # include      "rogue.h"
        !            12:
        !            13: # undef        max
        !            14:
        !            15: # define       TRIES   10000
        !            16:
        !            17: static char *sccsid = "@(#)prob.c      1.3 (Berkeley) 12/17/81";
        !            18:
        !            19: main(ac, av)
        !            20: int    ac;
        !            21: char   **av;
        !            22: {
        !            23:        register unsigned int   prob, prob2, exp;
        !            24:        register struct monster *mp;
        !            25:        register unsigned int   max, min, i;
        !            26:        register unsigned int   max2, min2;
        !            27:
        !            28:        printf("%17.17s  ----experience--- ----hit points---\n", "");
        !            29:        printf("%17.17s  %7s %4s %4s %7s %4s %4s lvl\n", "monster", "avg", "min", "max", "avg", "min", "max", "max hp");
        !            30:        seed = 0;
        !            31:        for (mp = monsters; mp < &monsters[26]; mp++) {
        !            32:                i = TRIES;
        !            33:                prob2 = prob = 0;
        !            34:                min2 = min = 30000;
        !            35:                max2 = max = 0;
        !            36:                while (i--) {
        !            37:                        if ((exp = roll(mp->m_stats.s_lvl, 8)) < min2)
        !            38:                                min2 = exp;
        !            39:                        if (exp > max2)
        !            40:                                max2 = exp;
        !            41:                        prob2 += exp;
        !            42:                        mp->m_stats.s_maxhp = exp;
        !            43:                        if ((exp = mp->m_stats.s_exp + exp_add(mp)) < min)
        !            44:                                min = exp;
        !            45:                        if (exp > max)
        !            46:                                max = exp;
        !            47:                        prob += exp;
        !            48:                }
        !            49:                printf("%17.17s: %7.2f %4d %4d %7.2f %4d %4d %3d\n", mp->m_name, ((double) prob) / TRIES, min, max, ((double) prob2) / TRIES, min2, max2, mp->m_stats.s_lvl);
        !            50:                fflush(stdout);
        !            51:        }
        !            52: }
        !            53:
        !            54: exp_add(mp)
        !            55: register struct monster *mp;
        !            56: {
        !            57:     register unsigned int mod;
        !            58:
        !            59:     if (mp->m_stats.s_lvl == 1)
        !            60:        mod = mp->m_stats.s_maxhp / 8;
        !            61:     else
        !            62:        mod = mp->m_stats.s_maxhp / 6;
        !            63:     if (mp->m_stats.s_lvl > 9)
        !            64:        mod *= 20;
        !            65:     else if (mp->m_stats.s_lvl > 6)
        !            66:        mod *= 4;
        !            67:     return mod;
        !            68: }
        !            69:
        !            70: /*
        !            71:  * roll:
        !            72:  *     roll a number of dice
        !            73:  */
        !            74: roll(number, sides)
        !            75: register unsigned int number, sides;
        !            76: {
        !            77:     register unsigned int dtotal = 0;
        !            78:
        !            79:     dtotal = number;
        !            80:     while (number--)
        !            81:        dtotal += rnd(sides);
        !            82:     return dtotal;
        !            83: }
        !            84:
        !            85: /*
        !            86:  * rnd:
        !            87:  *     Pick a very random number.
        !            88:  */
        !            89:
        !            90:
        !            91: rnd(range)
        !            92: register unsigned int range;
        !            93: {
        !            94:
        !            95:     return RN % range;
        !            96: }

CVSweb