main.c

来自「<B>Digital的Unix操作系统VAX 4.2源码</B>」· C语言 代码 · 共 73 行

C
73
字号
#ifndef lintstatic	char *sccsid = "@(#)main.c	1.1 83/03/17";#endif#include "externs.h"#define distance(x,y) (abs(x) >= abs(y) ? abs(x) + abs(y)/2 : abs(y) + abs(x)/2)range(fromship, toship)register int fromship, toship;{    int bow1r, bow1c, bow2r, bow2c;    int stern1r, stern1c, stern2c, stern2r;    register int bb, bs, sb, ss, result;    if (fromship > scene[game].vessels	    || toship > scene[game].vessels) /* just in case */	return(30000);    if (!pos[toship].dir)	return(30000);    stern1r = bow1r = pos[fromship].row;    stern1c = bow1c = pos[fromship].col;    stern2r = bow2r = pos[toship].row;    stern2c = bow2c = pos[toship].col;    result = bb = distance((bow2r - bow1r), (bow2c - bow1c));    if (bb < 5)	{	drdc(&stern2r, &stern2c, pos[toship].dir);	drdc(&stern1r, &stern1c, pos[fromship].dir);	bs = distance((bow2r - stern1r) ,(bow2c - stern1c));	sb = distance((bow1r - stern2r) ,(bow1c - stern2c));	ss = distance((stern2r - stern1r) ,(stern2c - stern1c));	result = min(bb, min(bs, min(sb, ss)));	}    return(result);}drdc(dr, dc, dir)register int *dr, *dc;int dir;{    switch (dir)	{	case 1:	    (*dr)++;	    break;	case 2:	    (*dr)++;	    (*dc)--;	    break;	case 3:	    (*dc)--;	    break;	case 4:	    (*dr)--;	    (*dc)--;	    break;	case 5:	    (*dr)--;	    break;	case 6:	    (*dr)--;	    (*dc)++;	    break;	case 7:	    (*dc)++;	    break;	case 8:	    (*dr)++;	    (*dc)++;	    break;	}}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?