📄 main.c
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -