Annotation of 42BSD/games/sail/main.c, revision 1.1

1.1     ! root        1: #ifndef lint
        !             2: static char *sccsid = "@(#)main.c      1.1 83/03/17";
        !             3: #endif
        !             4: #include "externs.h"
        !             5: 
        !             6: #define distance(x,y) (abs(x) >= abs(y) ? abs(x) + abs(y)/2 : abs(y) + abs(x)/2)
        !             7: 
        !             8: range(fromship, toship)
        !             9: register int fromship, toship;
        !            10: {
        !            11:     int bow1r, bow1c, bow2r, bow2c;
        !            12:     int stern1r, stern1c, stern2c, stern2r;
        !            13:     register int bb, bs, sb, ss, result;
        !            14: 
        !            15:     if (fromship > scene[game].vessels
        !            16:            || toship > scene[game].vessels) /* just in case */
        !            17:        return(30000);
        !            18:     if (!pos[toship].dir)
        !            19:        return(30000);
        !            20:     stern1r = bow1r = pos[fromship].row;
        !            21:     stern1c = bow1c = pos[fromship].col;
        !            22:     stern2r = bow2r = pos[toship].row;
        !            23:     stern2c = bow2c = pos[toship].col;
        !            24:     result = bb = distance((bow2r - bow1r), (bow2c - bow1c));
        !            25:     if (bb < 5)
        !            26:        {
        !            27:        drdc(&stern2r, &stern2c, pos[toship].dir);
        !            28:        drdc(&stern1r, &stern1c, pos[fromship].dir);
        !            29:        bs = distance((bow2r - stern1r) ,(bow2c - stern1c));
        !            30:        sb = distance((bow1r - stern2r) ,(bow1c - stern2c));
        !            31:        ss = distance((stern2r - stern1r) ,(stern2c - stern1c));
        !            32:        result = min(bb, min(bs, min(sb, ss)));
        !            33:        }
        !            34:     return(result);
        !            35: }
        !            36: 
        !            37: drdc(dr, dc, dir)
        !            38: register int *dr, *dc;
        !            39: int dir;
        !            40: {
        !            41:     switch (dir)
        !            42:        {
        !            43:        case 1:
        !            44:            (*dr)++;
        !            45:            break;
        !            46:        case 2:
        !            47:            (*dr)++;
        !            48:            (*dc)--;
        !            49:            break;
        !            50:        case 3:
        !            51:            (*dc)--;
        !            52:            break;
        !            53:        case 4:
        !            54:            (*dr)--;
        !            55:            (*dc)--;
        !            56:            break;
        !            57:        case 5:
        !            58:            (*dr)--;
        !            59:            break;
        !            60:        case 6:
        !            61:            (*dr)--;
        !            62:            (*dc)++;
        !            63:            break;
        !            64:        case 7:
        !            65:            (*dc)++;
        !            66:            break;
        !            67:        case 8:
        !            68:            (*dr)++;
        !            69:            (*dc)++;
        !            70:            break;
        !            71:        }
        !            72: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.