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

📄 nbnclient.c

📁 网络战船游戏
💻 C
📖 第 1 页 / 共 4 页
字号:
		  wprintw(msgboard,"\nThe board is OK and you cant modify it now.");		  wrefresh(msgboard);		  break;		default:		  wprintw(msgboard,"\nYou cant modify board while playing!");		  wrefresh(msgboard);		  break;	       }	     break;	   case 9:	   case 't':	     ncur.lugarg=BOTONES;	     yname();	     mname();	     globaltab();	     break;	   case 10:	   case 13:	   case KEY_ENTER:	     globalenter();	     break;	   case KEY_NPAGE:	   case 'n':	     globalpagedown();	     break;	   case KEY_PPAGE:	   case 'p':	     globalpageup();	     break;	   default:	     /*	      * wmove(miboard,ncur.y+1,ncur.x*2+1);	      * wrefresh(miboard);      	      */	     globalbotones2(i);	     break;	  }		/* switch(getch()) */			break;                         /* se acabo el case MITABLA */	      case BOTONES:                    /* main switch */	switch(i=getch())  	  {	   case ERR:	     break;	   case KEY_UP: case 'i':        /* new on v0.41 */	     ncur.lugarc--;	     if(ncur.lugarc<0) ncur.lugarc=MAXLUGARC;	     globalbotones();	     break;	   case KEY_DOWN: case 'k':        /* new on v0.41 */	     ncur.lugarc++;	     if(ncur.lugarc>MAXLUGARC)ncur.lugarc=0;	     globalbotones();	     break;	   case 9: case 't':	     if(usuario.play>=3)	       ncur.lugarg=TUTABLA;	     else ncur.lugarg=MITABLA;	     yname();	     mname();	     break;	   case KEY_LEFT: case 'j':        /* new on v0.41 */	     ncur.lugarg=MITABLA;	     yname();	     mname();	     break;	   case KEY_RIGHT: case 'l':        /* new on v0.41 */	     ncur.lugarg=TUTABLA;	     yname();	     mname();	     break;	   case 10:	   case 13:	   case KEY_ENTER:	     globalenter();	     break;	   case KEY_NPAGE:	   case 'n':	     globalpagedown();	     break;	   case KEY_PPAGE:	   case 'p':	     globalpageup();	     break;	   case 'h': case 'H':              /* new on v0.46 */	     hideH();	     break;	   default:	     globalbotones2(i);              /* que sera entonces ? new on v0.46 */	     break;	  }	break;	      case TUTABLA:             /* main switch */	wmove(tuboard,ncur.yt+1,ncur.xt*2+1);	wrefresh(tuboard);	switch(i=getch())  	  {	   case ERR:	     break;	   case KEY_LEFT: case 'j':        /* new on v0.41 */	     ncur.xt--;	     if(ncur.xt<0) ncur.xt=9;	     break;	   case KEY_RIGHT: case 'l':        /* new on v0.41 */	     ncur.xt++;	     if(ncur.xt>9)ncur.xt=0;	     break;	   case KEY_UP: case 'i':        /* new on v0.41 */	     ncur.yt--;	     if(ncur.yt<0)ncur.yt=9;	     break;	   case KEY_DOWN: case 'k':        /* new on v0.41 */	     ncur.yt++;	     if(ncur.yt>9)ncur.yt=0;	     break;	     /*       case KEY_SPACE: */	   case ' ': case 'x':        /* new on v0.41 */	     if((usuario.firsthit==0) && (usuario.play<2))  	       {		  fill0(WHITE,1);		  for(i=0;i<10;i++) 		    {          /* clean tabla */		       for(j=0;j<10;j++)			 mitabla[i][j]=NOBARCO;		    }		  repaintmi(); 		  usuario.firsthit=1;	       }	     switch(usuario.play) 	       {		case 0:		case 1:		case 2:		  wprintw(msgboard,"\nYou cant HIT now. First start a game.");		  wrefresh(msgboard);		  break;		case 3:		  wprintw(msgboard,"\nIt is not your turn!");		  wrefresh(msgboard);		  break;		default:		  usuario.play=3;                        /* it is no more your turn */		  outbuftemp[0]=ncur.xt;		  outbuftemp[1]=ncur.yt;		  bnwrite(sock,outbuftemp,BNHIT,0,0,usuario.numjug);		  bnwrite(sock,outbuftemp,BNREA,usuario.usrfrom,bnsup,usuario.numjug);		  break;	       }	     break;	   case 9:	   case 't':	     ncur.lugarg=BOTONES;	     yname();	     mname();	     globaltab();	     break;	   case 10:	   case 13:	   case KEY_ENTER:	     globalenter();	     break;	   case KEY_NPAGE:	   case 'n':	     globalpagedown();	     break;	   case KEY_PPAGE:	   case 'p':	     globalpageup();	     break;	   case 'h': case 'H':              /* new on v0.46 */	     hideH();	     break;	   default:	     globalbotones2(i);	     break;	     wmove(tuboard,ncur.yt+1,ncur.xt*2+1);	     wrefresh(tuboard);	  }  /* switch(getch()) */	break;                         /* se acabo el case MITABLA */	      case SENDMSG:	if(ncur.flag1!=0) 	  {	     touchwin(sendmesg);	     wrefresh(sendmesg);	     ncur.flag1=0;	  }	switch(i=getch()) 	  {	   case '0':	   case '1':	   case '2':	   case '3':	   case '4':	   case '5':	     switch(ncur.sendpos) 	       {		case 0:		  globalsendmsg(i);		  break;		case 1:		  ncur.sendto=atoi((char*)&i);		  mvwaddch(sendmesg,2,31,i);		  wmove(sendmesg,2,31);		  wrefresh(sendmesg);		  break;	       }	     break;	   case KEY_DOWN:	   case KEY_UP:	   case 9:	     ncur.sendpos++;	     if(ncur.sendpos>2) ncur.sendpos=0;	     switch(ncur.sendpos) 	       {		case 0:		  wmove(sendmesg,1,8+ncur.sendx);		  wrefresh(sendmesg);		  break;		case 1:		  wmove(sendmesg,2,31);		  wrefresh(sendmesg);		  break;		case 2:		  wmove(sendmesg,2,62);		  wrefresh(sendmesg);		  break;	       }	     break;	   case 'x':	   case 'X':	   case ' ':	     switch(ncur.sendpos) 	       {		case 0:		  globalsendmsg(i);		  break;		case 1:		  break;		case 2:		  if(ncur.sendle==0) 		    {		       ncur.sendle=1;		       mvwaddch(sendmesg,2,62,'X');		    }		  else 		    {		       ncur.sendle=0;		       mvwaddch(sendmesg,2,62,' ');		    }		  wmove(sendmesg,2,62);		  wrefresh(sendmesg);		  break;	       }	     break;	   case 10:	   case 13:	   case KEY_ENTER:	     bnwrite(sock,ncur.sendmsg,BNMSG,ncur.sendto,ncur.sendle,usuario.numjug);	     touchwin(msgboard);	     wrefresh(msgboard);	     ncur.lugarg=BOTONES;	     mname();	     yname();	     globaltab();	     break;	   case KEY_LEFT:	   case KEY_RIGHT:	   case ERR:	     break;	   case KEY_BACKSPACE: case '/':	     if(ncur.sendpos==0) 	       {		  ncur.sendx--;		  if(ncur.sendx<0) ncur.sendx=0;		  ncur.sendmsg[ncur.sendx]=' ';		  ncur.sendmsg[ncur.sendx+1]=0;		  mvwaddch(sendmesg,1,8+ncur.sendx,' ');		  wmove(sendmesg,1,8+ncur.sendx);		  wrefresh(sendmesg);	       }	     break;	   default:	     if(ncur.sendpos==0)	       globalsendmsg(i);	     else if(ncur.sendpos==1) 	       {		  wmove(sendmesg,2,31);		  wrefresh(sendmesg);	       }	     else if(ncur.sendpos==2) 	       {		  wmove(sendmesg,2,62);		  wrefresh(sendmesg);	       }	     break;	  }                     /* switch getch */	break;      case THECONF:	if(ncur.flag1!=0) 	  {	     touchwin(config);	     wrefresh(config);	     ncur.flag1=0;	  }	switch(i=getch()) 	  {	   case KEY_UP:	   case KEY_DOWN:	   case 9:	     ncur.confpos++;	     if(ncur.confpos>2) 	       ncur.confpos=0;	     wmove(config,ncur.confpos+1,ncur.conf[ncur.confpos]+10);	     wrefresh(config);	     break;	   case KEY_ENTER:	   case 10:	   case 13:	     strcpy(usuario.server_name,ncur.confc[0]);	     strcpy(usuario.nombre,ncur.confc[2]);	     usuario.port=atoi(ncur.confc[1]);	     	     ncur.lugarg=BOTONES;	     yname();	     mname();	     globaltab();	     touchwin(msgboard);	     wrefresh(msgboard);	     break;	   case KEY_BACKSPACE: case '/':	     ncur.conf[ncur.confpos]--;	     if(ncur.conf[ncur.confpos]<0)	       ncur.conf[ncur.confpos]=0;	     mvwaddch(config,ncur.confpos+1,ncur.conf[ncur.confpos]+10,' ');	     ncur.confc[ncur.confpos][ncur.conf[ncur.confpos]]=' ';	     ncur.confc[ncur.confpos][ncur.conf[ncur.confpos]+1]=0;	     	     wmove(config,ncur.confpos+1,ncur.conf[ncur.confpos]+10);	     wrefresh(config);	     break;	   case KEY_LEFT:	   case KEY_RIGHT:	   case ERR:	     break;	   default:	     globalconfig(i);	     wmove(config,ncur.confpos+1,ncur.conf[ncur.confpos]+10);	     wrefresh(config);	     break;	  }	break;      default:                  /* main switch */	break;     }                          /* switch(ncur.lugarg) */}/* * MAIN */void help() {   printf("\n\nBatalla Naval ncurses client v"BN_NVER"  (c) 1996,97 Ricardo Quesada\n");   printf("\nsyntax:");   printf("\nnbnclient [-s hostname] [-p server_port] [-u username]");   printf("\n");   printf("\n\t-s host_name:   The name of the host where bnserver is running");   printf("\n\t                default is: localhost");   printf("\n\t-p server_port: The number of the port that bnserver is listening to");   printf("\n\t                default is: 1995");   printf("\n\t-u username:    Your name or alias");   printf("\n\t                default is your login name");   printf("\n\t-c              force color mode");   printf("\n\t-m              force black & white mode");   printf("\n\t                VT100 terminal emulation recomended.");   printf("\n");   printf("\nKeys: Page up or 'p' shows previous players board");   printf("\n      Page down or 'n' shows next players board");   printf("\n      Use TAB,cursor left,cursor right to move between windows");   printf("\n");   printf("\nThe program automatically detects if you have a color terminal. ");   printf("\nSend bugs,doubts,fixes to rquesada@dc.uba.ar\n");   exit(-1);}void main(int argc, char ** argv){   int i;      ncur.color=0;   strcpy( usuario.server_name,"localhost");   usuario.port=1995;           /*     * New on v0.50 - modificado ya que la glibc tiene un comportamiento    * extra駉 con getlogin (me devuelve null )    * Dicen que es por compatibilidad con ipv6    */      /*		 * Usar en System-V    */   strncpy( usuario.nombre,getenv("LOGNAME"), MAXNAMELEN );      /*    * Usar en BSD    */      /* strncpy( usuario.nombre,getenv("USER"), MAXNAMELEN );  */         for(i=1;i<argc;i++)      {	if(argv[i][0]=='-') 	  {	     switch(argv[i][1]) 	       {		case 'M': case 'm': 		  ncur.color=FALSE+128;		  printf("\nForcing black & white mode...");		  break;		case 'C': case 'c': 		  ncur.color=TRUE+128; 		  printf("\nForcing color mode...");		  break;		case 'x':		  bnsup=argv[i][2];		  break;		case 's': case 'S':		  if(argc>i+1) 		    strcpy( usuario.server_name,argv[i+1]);		  else 		    help();		  i++;		  break;		case 'u': case 'U':		  if(argc>i+1) 		    strcpy( usuario.nombre,argv[i+1]);		  else 		    help();		  i++;		  break;		case 'p': case 'P':		  if(argc>i+1) 		    usuario.port=atoi(argv[i+1]);		  else 		    help();		  i++;		  break;		case 'h': case 'H':		case '?': case '-':		default:		  help();		  break;	       }	  }	else 	  {	     if(argv[i-1][0]!='-')	       help();	  }     }      /*   use_env(TRUE);   */           /* new on v0.41*/   initscr();   keypad(stdscr, TRUE);   raw();   noecho();   /*   scrollok(stdscr, TRUE); */   timeout(RAPID);         if(ncur.color>120)      ncur.color-=128;   else      {    	if(!has_colors()) 	  {	     printf("Warning: Color not detected.Black & white mode activated\n\r"		    "         Remember, you need at least 80x24 terminal\n\r"		    "         You can force COLOR mode with the -c switch\r\n"		    );	     ncur.color=FALSE;	     sleep(2);	  }	else ncur.color=TRUE;     }      if(ncur.color==TRUE)      start_color();   init_datos();          /* inicializar datos y variables */      /*    * Tuve que poner este `getch' aca para que no me borre la pantalla    * Bug en libcurses-3.4 ?    */   getch();      init_screen();         /* create and draw screen */   init_cliente();        /* inicializa el cliente */   for(;;)     {	if(ncur.quit!=0)	  break;	main_loop();           /* main loop */	proceso();     }       endwin();}

⌨️ 快捷键说明

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