⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 <B>Digital的Unix操作系统VAX 4.2源码</B>
💻 C
📖 第 1 页 / 共 3 页
字号:
    /* command help: highlighted */    move_to(CMDHELPR,CMDHELPC);    standout();				/* curses usually does rev video */    string_out ("[1-9] bearing   C Cloak  D Dock   G Get-msg   I[0-9] Impulse   L Locate   M Map");    move_to(CMDHELPR + 1,CMDHELPC);    string_out ("N Redraw-scan   P[A-Z] Phaser   Q<CR> Quit   R[A-Z][msg]<CR> Radio   X[A-Z] Xam");    move_to(CMDHELPR + 2,CMDHELPC);    string_out ("S[01-25]/S-[1-9] Shields+nK/-nK    T[1-9] Torpedo    W[0-6] Warp-Speed    Z Zap");    standend();				/* end "stand-out" mode */    /* set up message line & command input prompt */    move_to(MESSAGER, MESSAGEC - 9);    string_out ("MESSAGE:");    move_to(COMMANDR, COMMANDC - 9);    string_out ("COMMAND:");    refresh_scr();    };  /* draw screen */redraw_screen()    /* Re-draws the screen.  Useful in switch a broadcast or system message       messed it up.    */    {    register struct ship *pships;    draw_screen();    pships = ships + (local_ship - A);    pships->dis_energy = true;    pships->dis_shields = true;    pships->dis_torpedos = true;    pships->dis_warp_set = true;    pships->dis_warp_speed = true;    pships->dis_quad = true;    pships->dis_sector = true;    pships->dis_bearing = true;    pships->dis_fleet = true;    pships->dis_dir = true;    redraw = false;    };  /* proc redraw_screen */shipinrange(callship, findship, range, wantbd, dist, bearing, ontarget)    char callship;	/* calling ship */    char findship;	/* ship to look for */    int range;		/* range (in sectors) to scan: upto 5 */    boolean wantbd;	/* true if bearing & distance wanted */    int *dist;		/* distance to ship (if found) */    int *bearing;	/* bearing toward ship (if found) */    boolean *ontarget;	/* true if on target for torpedo */    /*     * Determine if another ship (findship) is within "range" & if so,     * optionally its distance & bearing.     *     * RETURNS 1 if ship found, 0 if not found.     */    {    register struct ship *pships;    register int i,j;	/* loop index */    boolean found;	/* set true when ship found */    int sqr;		/* starting quad row */    int sqc;		/* starting quad col */    int ssr;		/* starting sector row */    int ssc;		/* starting sector col */    int cqr;		/* current quad row */    int cqc;		/* current quad col */    register int csr;	/* current sector row */    register int csc;	/* current sector col */    pships = ships + (callship - A);      /* calculate starting quad & sector, row & col */      sqr = pships->q_row;      sqc = pships->q_col;      ssr = pships->s_row - range;      ssc = pships->s_col - range;      /* adjust starting values if they start in previous quadrant */      if (ssr < 0)	  {	  ssr = NUMSECTORS + ssr;	  sqr = sqr - 1;	  if (sqr < 0)	      sqr = NUMQUADS -1;	  };      if (ssc < 0)	  {	  ssc = NUMSECTORS + ssc;	  sqc = sqc - 1;	  if (sqc < 0)	      sqc = NUMQUADS - 1;	  };      /* init "current" values */      cqr = sqr;      csr = ssr;      /* loop for (range*2)+1 rows: ship position +/- range */      for (i=0, found=false; i < (range * 2)+1 && ! found ;)	  {	  csc = ssc;	  cqc = sqc;	  /* loop for (range * 2)+1 cols: ship position +/- range */	  for (j=0; j < (range * 2)+1 && ! found ;)	      {	      if (universe [cqr][cqc].sectors [csr][csc].image == findship)		   found = true;	      else {		    j++;		    csc++;		    if (csc > NUMSECTORS -1)			 {		/* goto 1st sector col, in next quad col */			 csc = 0;			 cqc++;			 if (cqc > NUMQUADS -1)			      cqc = 0;			 };		   };	      };  /* column loop */	  if (! found)	      {	      i++;	      csr++;	      if (csr > NUMSECTORS -1)		   {		   csr = 0;		   cqr++;		   if (cqr > NUMQUADS -1)			cqr = 0;		   };	      };	  };  /* row loop */       /* calculate distance bearing */       if (found && wantbd)	   {	    switch (i)	       {	       case 0:		   *dist = 5; 		   switch (j)		       {		       case 0:			   *ontarget = true; *bearing = 7; break;		       case 1:		       case 2:		       case 3:		       case 4:			   *bearing = 7; break;		       case 5:			   *bearing = 8; *ontarget = true; break;		       case 6:		       case 7:		       case 8:		       case 9:			   *bearing = 9; break;		       case 10:			   *bearing = 9; *ontarget = true; break;		       }		   break;	       case 1:		   switch (j)		       {		       case 0:			   *dist = 5; *bearing = 7; break;		       case 1:			   *dist = 4; *ontarget = true; *bearing = 7; break;		       case 2:		       case 3:		       case 4:			   *dist = 4; *bearing = 7; break;		       case 5:			   *dist = 4; *bearing = 8; *ontarget = true; break;		       case 6:		       case 7:		       case 8:			   *dist = 4; *bearing = 9; break;		       case 10:			   *dist = 5; *bearing = 9; break;		       case 9:			   *dist = 4; *bearing = 9; *ontarget = true; break;		       }		   break;	       case 2:		   switch (j)		       {		       case 0:			   *dist = 5; *bearing = 7; break;		       case 1:			   *dist = 4; *bearing = 7; break;		       case 2:			   *dist = 3; *ontarget = true; *bearing = 7; break;		       case 3:		       case 4:			   *dist = 3; *bearing = 7; break;		       case 5:			   *dist = 3; *bearing = 8; *ontarget = true; break;		       case 6:		       case 7:			   *dist = 3; *bearing = 9; break;		       case 8:			   *dist = 3; *bearing = 9; *ontarget = true; break;		       case 9:			   *dist = 4; *bearing = 9; break;		       case 10:			   *dist = 5; *bearing = 9; break;		       }		   break;	       case 3:		   switch (j)		       {		       case 0:			   *dist = 5; *bearing = 7; break;		       case 1:			   *dist = 4; *bearing = 7; break;		       case 2:			   *dist = 3; *bearing = 7; break;		       case 3:			   *dist = 2; *bearing = 7; *ontarget = true; break;		       case 4:			   *dist = 2; *bearing = 4; *dist = 2; break;		       case 5:			   *dist = 2; *bearing = 8; *ontarget = true; break;		       case 6:			   *dist = 2; *bearing = 6; *dist = 2; break;		       case 7:			   *dist = 2; *bearing = 9; *ontarget = true; break;		       case 8:			   *dist = 3; *bearing = 9; break;		       case 9:			   *dist = 4; *bearing = 9; break;		       case 10:			   *dist = 5; *bearing = 9; break;		       }		   break;	       case 4:		   switch (j)		       {		       case 0:			   *dist = 5; *bearing = 7; break;		       case 1:			   *dist = 4; *bearing = 7; break;		       case 2:			   *dist = 3; *bearing = 7; break;		       case 3:			   *dist = 2; *bearing = 8; break;		       case 4:			   *dist = 1; *bearing = 7; *ontarget = true; break;		       case 5:			   *dist = 1; *bearing = 8; *ontarget = true; break;		       case 6:			   *dist = 1; *bearing = 9; *ontarget = true; break;		       case 7:			   *dist = 2; *bearing = 2; break;		       case 8:			   *dist = 3; *bearing = 9; break;		       case 9:			   *dist = 4; *bearing = 9; break;		       case 10:			   *dist = 5; *bearing = 9; break;		       }		   break;	       case 5:		   *dist = abs(j-range);		   switch (j)		       {		       case 0:		       case 1:		       case 2:		       case 3:		       case 4:			   *bearing = 4; *ontarget = true; break;		       case 5:			   /* this case shouldn't happen */			   *bearing = 4; break;		       case 6:		       case 7:		       case 8:		       case 9:		       case 10:			   *bearing = 6; *ontarget = true; break;		       }		   break;	       case 6:		   switch (j)		       {		       case 0:			   *dist = 5; *bearing = 1; break;		       case 1:			   *dist = 4; *bearing = 1; break;		       case 2:			   *dist = 3; *bearing = 1; break;		       case 3:			   *dist = 2; *bearing = 8; *dist = 2; break;		       case 4:			   *dist = 1; *bearing = 1; *ontarget = true; break;		       case 5:			   *dist = 1; *bearing = 2; *ontarget = true; break;		       case 6:			   *dist = 1; *bearing = 3; *ontarget = true; break;		       case 7:			   *dist = 2; *bearing = 8; *dist = 2; break;		       case 8:			   *dist = 3; *bearing = 3; break;		       case 9:			   *dist = 4; *bearing = 3; break;		       case 10:			   *dist = 5; *bearing = 3; break;		       }		   break;	       case 7:		   switch (j)		       {		       case 0:			   *dist = 5; *bearing = 1; break;		       case 1:			   *dist = 4; *bearing = 1; break;		       case 2:			   *dist = 3; *bearing = 1; break;		       case 3:			   *dist = 2; *bearing = 1; *ontarget = true; break;		       case 4:			   *dist = 2; *bearing = 4; *dist = 2; break;		       case 5:			   *dist = 2; *bearing = 2; *ontarget = true; break;		       case 6:			   *dist = 2; *bearing = 4; *dist = 2; break;		       case 7:			   *dist = 2; *bearing = 3; *ontarget = true; break;		       case 8:			   *dist = 3; *bearing = 3; break;		       case 9:			   *dist = 4; *bearing = 3; break;		       case 10:			   *dist = 5; *bearing = 3; break;		       }		   break;	       case 8:		   switch (j)		       {		       case 0:			   *dist = 5; *bearing = 1; break;		       case 1:			   *dist = 4; *bearing = 1; break;		       case 2:			   *dist = 3; *bearing = 1; *ontarget = true; break;		       case 3:		       case 4:			   *dist = 3; *bearing = 1; break;		       case 5:			   *dist = 3; *bearing = 2; *ontarget = true; break;		       case 6:		       case 7:			   *dist = 3; *bearing = 3; break;		       case 8:			   *dist = 3; *bearing = 3; *ontarget = true; break;		       case 9:			   *dist = 4; *bearing = 3; break;		       case 10:			   *dist = 5; *bearing = 3; break;		       }		   break;	       case 9:		   switch (j)		       {		       case 0:			   *dist = 5; *bearing = 1; break;		       case 1:			   *dist = 4; *bearing = 1; *ontarget = true; break;		       case 2:		       case 3:		       case 4:			   *dist = 4; *bearing = 1; break;		       case 5:			   *dist = 4; *bearing = 2; *ontarget = true; break;		       case 6:		       case 7:		       case 8:			   *dist = 4; *bearing = 3; break;		       case 9:			   *dist = 4; *bearing = 3; *ontarget = true; break;		       case 10:			   *dist = 5; *bearing = 3; break;		       }		   break;	       case 10:		   *dist = 5; 		   switch (j)		       {		       case 0:			   *bearing = 1; *ontarget = true; break;		       case 1:		       case 2:		       case 3:		       case 4:			   *bearing = 1; break;		       case 5:			   *bearing = 2; *ontarget = true; break;		       case 6:		       case 7:		       case 8:		       case 9:			   *bearing = 3; break;		       case 10:			   *bearing = 3; *ontarget = true; break;		       }		   break;	       }   /* switch i  */	    }  /* found & wantbd */    if (found)	return(1);    else	return(0);    };  /* shipinrange */

⌨️ 快捷键说明

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