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

📄 nbnclient.c

📁 网络战船游戏
💻 C
📖 第 1 页 / 共 4 页
字号:
		  wprintw(msgboard,"\nPlayer %i is ready to play",proto.bnptip1);		  wrefresh(msgboard);		  break;		case BNWHO:                      		  sprintf(outbuf,"It's %s turn.",usuario.names[proto.bnptip1-1]);		  foot_right(outbuf);		  break;		case BNTRN:		  usuario.play=4;                    /* oh, it is my turn */		  foot_right("It's my turn.");		  break;		case BNEXT:		  i=proto.bnptip1-1;		  usuario.names[i][0]=0;		  strcpy(outbuf,proto.bnpmsg);		  wprintw(msgboard,"\n%s",outbuf);		  wrefresh(msgboard);		  		  for(i=0;i<MAXPLAYER;i++) 		    {		       if(usuario.numjug-1!=i) 			 {			    if(strcmp(usuario.names[i],"")!=0) 			      {				 usuario.usrfrom=i+1;				 strcpy(ncur.tunombre,usuario.names[i]); /* new on v0.41 */				 yname();			      }			 }		    }		  if(usuario.play>=3) 		    {		       bnwrite(sock,outbuf,BNREA,usuario.usrfrom,bnsup,usuario.numjug);		    }		  break;		case BNLOS:		  usuario.play=1;                    /* oh, i lost the game */		  for(i=0;i<MAXPLAYER;i++)		    usuario.names[i][0]=0;		  wprintw(msgboard,"\nYou were killed. To start again wait until the game is over.");		  wrefresh(msgboard);		  fillenemyt(looseboard,1);		  rstart();		  usuario.firsthit=0;		  break;		case BNWIN:		  usuario.play=1;                    /* oh, i lost the game */		  for(i=0;i<MAXPLAYER;i++)		    usuario.names[i][0]=0;		  wprintw(msgboard,"\nCONGRATULATIONS: You are the winner.");		  wrefresh(msgboard);		  fillenemyt(winboard,1);		  rstart();		  usuario.firsthit=0;		  break;		case BNSOL:		  wprintw(msgboard,"\nYou are the only one who sent the board.Wait another player.");		  wrefresh(msgboard);		  break;		default:		  wprintw(msgboard,"\nbnserver sending code %X.  Not available in this nbnclient.",proto.bnptip0);		  break;	       }	  }     }}void init_datos( void ) {   int i,j;      usuario.play = 0;   usuario.usrfrom=1;   usuario.lecho=1;   for(i=0;i<10;i++)      {          /* clean tabla */	for(j=0;j<10;j++)	  mitabla[i][j]=0;     }    usuario.firsthit=0;   for(i=0;i<MAXPLAYER;i++)     usuario.names[i][0]=0;       /* clear all names */      ncur.lugarg=MITABLA;   ncur.lugarc=1;   ncur.quit=0;   ncur.x=0;ncur.y=0;      ncur.sendx=0;   ncur.sendmsg[0]=0;   ncur.sendto=0;   ncur.sendle=0;      ncur.conf[0]=strlen(usuario.server_name);   ncur.conf[1]=4;   ncur.conf[2]=strlen(usuario.nombre);   ncur.confpos=0;      ncur.flag1=0;      strcpy(usuario.status[DISCON],"not connected");   strcpy(usuario.status[CONNEC],"  connected  ");   strcpy(usuario.status[BOARD], "ready to play");   strcpy(usuario.status[PLAY],  "   playing   ");   strcpy(usuario.status[TURN],  "  playing *  ");      usuario.hide=FALSE;}int init_cliente( void ) {      /* Create socket */   sock=socket(AF_INET,SOCK_STREAM,0);   if(sock <0)      {	wprintw(msgboard,"\nERROR: creating stream socket");	wrefresh(msgboard); 	return(1);     }   host_info = gethostbyname(usuario.server_name);   if(host_info==NULL)      {	close(sock);	wprintw(msgboard,"\nERROR: Unknown host.Please check CONFIG.");	wrefresh(msgboard); 	return(2);     }   server.sin_family=host_info->h_addrtype;   memcpy( (char*) &server.sin_addr, host_info->h_addr,host_info->h_length);   server.sin_port=htons(usuario.port);      if(connect(sock,(struct sockaddr *)&server,sizeof(server))< 0)      {	close(sock);	wprintw(msgboard,"\nERROR: Perhaps incorrect port number or bnserver not running.Check CONFIG");	wrefresh(msgboard);	return 3;     }   strcpy(outbuftemp,usuario.nombre);   bnwrite(sock,outbuftemp,BNJUG,NCLI,BN_NVERH,BN_NVERL);  /* WHO AM I */   return 0;}/*  * main_loop */void hideH() {   switch(usuario.hide)      {      case TRUE:	usuario.hide=FALSE;	repaintmi();	break;      case FALSE:	usuario.hide=TRUE;	fillenemyt(Hboard,0);	break;     }}void globalconfig(int i) {   if(ncur.conf[ncur.confpos]>58)     ncur.conf[ncur.confpos]=58;   else      {	mvwaddch(config,ncur.confpos+1,ncur.conf[ncur.confpos]+10,(chtype)i);	ncur.confc[ncur.confpos][ncur.conf[ncur.confpos]]=(char)i;	ncur.confc[ncur.confpos][ncur.conf[ncur.confpos]+1]=0;	ncur.conf[ncur.confpos]++;     }   wmove(config,ncur.confpos+1,ncur.conf[ncur.confpos]+10);   wrefresh(config);}void globalsendmsg(int i) {   if(ncur.sendx>70)     ncur.sendx=70;   else      {	mvwaddch(sendmesg,1,8+ncur.sendx,(chtype)i);	ncur.sendmsg[ncur.sendx]=(char)i;	ncur.sendmsg[ncur.sendx+1]=0;	ncur.sendx++;     }   wmove(sendmesg,1,8+ncur.sendx);   wrefresh(sendmesg);}void globalpageup(void) {   int i,n;   n=usuario.usrfrom-2;      if(usuario.play>=3)      {	for(i=n;i>=0;i--) 	  {	     if(strcmp(usuario.names[i],"")!=0) 	       {		  usuario.usrfrom=i+1;		  strcpy(ncur.tunombre,usuario.names[i]); /* new on v0.41 */		  yname();		  break;	       }	  }	if(i<0) 	  {	     for(i=MAXPLAYER-1;i>=0;i--) {		if(strcmp(usuario.names[i],"")!=0) 		  {		     usuario.usrfrom=i+1;		     strcpy(ncur.tunombre,usuario.names[i]); /* new on v0.41 */		     yname();		     break;		  }	     }	  }	bnwrite(sock,outbuftemp,BNREA,usuario.usrfrom,bnsup,usuario.numjug);     }    /* if(usuario.play) */}void globalpagedown(void) {   int i,n;   n=usuario.usrfrom;      if(usuario.play>=3)      {	for(i=n;i<MAXPLAYER;i++) 	  {	     if(strcmp(usuario.names[i],"")!=0) 	       {		  usuario.usrfrom=i+1;		  strcpy(ncur.tunombre,usuario.names[i]); /* new on v0.41 */		  yname();		  break;	       }	  }	if(i>=MAXPLAYER) 	  {	     for(i=0;i<MAXPLAYER;i++) 	       {		  if(strcmp(usuario.names[i],"")!=0) 		    {		       usuario.usrfrom=i+1;		       strcpy(ncur.tunombre,usuario.names[i]); /* new on v0.41 */		       yname();		       break;		    }	       }	  }	bnwrite(sock,outbuftemp,BNREA,usuario.usrfrom,bnsup,usuario.numjug);     } /* if(usuario.play) */}void globaltab(void) {         /* llamada desde main_loop */   switch(ncur.lugarc)      {      case 0:	wmove(bconnect,0,0);	wrefresh(bconnect);	break;      case 1:	wmove(bstart,0,0);	wrefresh(bstart);	break;      case 2:	wmove(bstatus,0,0);	wrefresh(bstatus);	break;      case 3:	wmove(bmsg,0,0);	wrefresh(bmsg);	break;      case 4:	wmove(bconfig,0,0);	wrefresh(bconfig);	break;      case 5:	wmove(babout,0,0);	wrefresh(babout);	break;      case 6:	wmove(bquit,0,0);	wrefresh(bquit);	break;      default:	break;     }}void globalbotones(void) {         /* llamada desde main_loop */   rconnect();   rstart();   rstatus();   rmsg();   rconfig();   rabout();   rquit();   globaltab();                /* posciciona el cursor */}void globalbotones2(int i) {         /* llamada desde main_loop */   switch(i)      {      case 'e':case 'E':              /* connEct o disconnEct */	ncur.lugarc=0;	globalbotones();	break;      case 's':case 'S':              /* Send board o Start */	ncur.lugarc=1;	globalbotones();	break;      case 'u':case 'U':              /* statUs */	ncur.lugarc=2;	globalbotones();	break;      case 'm':case 'M':              /* send Msg */	ncur.lugarc=3;	globalbotones();	break;      case 'c':case 'C':              /* Config */	ncur.lugarc=4;	globalbotones();	break;      case 'o':case 'O':              /* abOut */	ncur.lugarc=5;	globalbotones();	break;      case 'q':case 'Q':              /* Quit */	ncur.lugarc=6;	globalbotones();	break;     }}void globalenter(void) {         /* llamada desde main_loop */   int i;   switch(ncur.lugarc)      {      case 0: /* disconnect */	if(usuario.play==0) 	  {	     init_cliente();	     globaltab();	  }	else 	  {	     if(usuario.play!=0) 	       {		  usuario.firsthit=0;            /* new on v0.41 */		  usuario.play=0;		  foot_right("(c) Ricardo Quesada");		  foot_left("Batalla Naval");		  rstart();		  rconnect();		  for(i=0;i<MAXPLAYER;i++)		    usuario.names[i][0]=0;		  bnwrite(sock,outbuftemp,BNEXT,0,0,usuario.numjug);		  close(sock);	       }	  }	break;	      case 1: /* send board or start */	switch(usuario.play) 	  {	   case 0:	     filtermiboard();	     repaintmi();	     if(algoritmo()==TRUE)  	       {		  wprintw(msgboard,"\nFirst establish a connection with CONNECT");	       }	     wrefresh(msgboard);	     break;	   case 1:	     filtermiboard();	     repaintmi();	     if( algoritmo()==TRUE)	       {		  iwtable( outbuftemp );		  bnwrite(sock,outbuftemp,BNWRI,usuario.numjug,0,usuario.numjug);	       } 	     wrefresh(msgboard);	     break;	   case 2:	     bnwrite(sock,outbuftemp,BNSTR,usuario.numjug,0,usuario.numjug);	     break;	   case 4:	   case 3:	   default:	     wprintw(msgboard,"\nQue muchacho?.This mean that you are playing!");	     wrefresh(msgboard);	     break;	  }	break;      case 2: /* status */	if(usuario.play>=1) 	  {	     bnwrite(sock,outbuftemp,BNSTS,0,0,usuario.numjug);	  }	else 	  {	     wprintw(msgboard,"\nYou need to be connected");	     wrefresh(msgboard);	  }	break;      case 3: /* send message */	if(usuario.play>=1) 	  {	     ncur.lugarg=SENDMSG;	     sendmsgw();	  }	else {	   wprintw(msgboard,"\nFirst establish a connection with CONNECT");	   wrefresh(msgboard);	}	break;      case 4: /* config */	ncur.lugarg=THECONF;	configw();	break;      case 5: /* about */	aboutw();	break;      case 6: /* quit */	if(usuario.play!=0)	  {             /* if connected then kill child */	     bnwrite(sock,outbuftemp,BNEXT,0,0,usuario.numjug);	     close(sock);	  }	ncur.quit=1;	break;      default:	break;     }}/* * Funcion main_loop */void main_loop(void){   int i,j;      switch(ncur.lugarg)      {      case MITABLA:                         /* main switch */	wmove(miboard,ncur.y+1,ncur.x*2+1);	wrefresh(miboard);		switch(i=getch())	  {	   case ERR:	     break;	   case 'h': case 'H':              /* new on v0.44 */	     hideH();	     break;	   case KEY_LEFT: case 'j':        /* new on v0.41 */	     ncur.x--;	     if(ncur.x<0) ncur.x=9;	     break;	   case KEY_RIGHT: case 'l':        /* new on v0.41 */	     ncur.x++;	     if(ncur.x>9)ncur.x=0;	     break;	   case KEY_UP: case 'i':        /* new on v0.41 */	     ncur.y--;	     if(ncur.y<0)ncur.y=9;	     break;	   case KEY_DOWN: case 'k':        /* new on v0.41 */	     ncur.y++;	     if(ncur.y>9)ncur.y=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;		  wmove(miboard,ncur.y+1,ncur.x*2+1);		  wrefresh(miboard);	       }	     switch(usuario.play) 	       {		case 0:		case 1:		  if(mitabla[ncur.x][ncur.y]==NOBARCO) 		    {		       mitabla[ncur.x][ncur.y]=BARCO;		       wattroncm(miboard,COLOR_PAIR(GREEN));		       waddchcm(miboard,ACS_BOARD,COLOR_PAIR(GREEN));		    }		  else 		    {		       mitabla[ncur.x][ncur.y]=NOBARCO;		       wattroncm(miboard,COLOR_PAIR(GOOD));		       waddch(miboard,' ');		       waddch(miboard,ACS_VLINE);		    }		  break;		case 2:

⌨️ 快捷键说明

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