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

📄 gbnclient.c

📁 网络战船游戏
💻 C
📖 第 1 页 / 共 4 页
字号:
   return TRUE;}/* Right panel */static gint expose_event_right (GtkWidget *widget, GdkEventExpose *event){   gint i;      /* Dibuja las lineas */   switch( usuario.gano )     {      case 0: /* Sigue jugando */	for(i=0;i<10;i++)	  {	     gdk_draw_line (widget->window,			    widget->style->black_gc,			    0,LARGO*i,			    ANCHO*10,LARGO*i);	     gdk_draw_line (widget->window,			    widget->style->black_gc,			    ANCHO*i,0,			    ANCHO*i,LARGO*10);	  }		fillboard(usuario.tempclit,1); /* v0.50 */	inteliclient(usuario.tempclit);	break;      case 1: /* gano el guacho */	showboard(winner);	break;      case -1: /* perdio el forro */	showboard(gameover);	break;      default:	break;     }   return FALSE;}static gint button_press_event_right (GtkWidget *widget, GdkEventButton *event){   gint x,y;   gchar outbuf[MSGMAXLEN];      x=event->x / ANCHO;   y=event->y / LARGO;      if(usuario.play<3)     {	ttyfill("Uh? Wait man. First, try to start the game\n");	return TRUE;     }   if(usuario.play==3)     {	ttyfill("Be patient bro. Wait for your turn\n");	return TRUE;     }      if ( event->button == 1 )     {	gdk_draw_pixmap( widget->window,			widget->style->fg_gc[GTK_WIDGET_STATE(widget)],			azul,			0,0,			x*ANCHO+1,y*LARGO+1,			ANCHO-1,LARGO-1);		usuario.play=3;	outbuf[0]=x;	outbuf[1]=y;	bnwrite(sock,outbuf,BNHIT,0,0,usuario.numjug);	bnwrite(sock,outbuf,BNREA,usuario.usrfrom,bnsup,usuario.numjug);	     }   return TRUE;}static void remove_page( gint page_num ){//   printf("Removing page number %i\n",page_num);   gtk_notebook_remove_page( GTK_NOTEBOOK( notebook_right ), page_num );}/* Dibuja la pantalla */static void init_X(){   GtkTooltips *tooltips;    GdkColor yellow={ 4, 8, 8, 0 };   GdkColor black={ 4, 0, 0, 0 };   window = gtk_widget_new (gtk_window_get_type (),			    "GtkObject::user_data", NULL,			    "GtkWindow::type", GTK_WINDOW_TOPLEVEL,			    "GtkWindow::title", "Batalla Naval "GBNVER,			    "GtkWindow::allow_grow",FALSE,			    "GtkWindow::allow_shrink",FALSE,			    "GtkContainer::border_width",0,			    NULL);   gtk_signal_connect ( GTK_OBJECT( window), "destroy",		       GTK_SIGNAL_FUNC( do_exit ),		       GTK_OBJECT(window) );   gtk_signal_connect ( GTK_OBJECT( window), "delete_event",		       GTK_SIGNAL_FUNC( do_exit ),		       GTK_OBJECT(window) );      tooltips=gtk_tooltips_new();   gtk_object_set_data (GTK_OBJECT (window), "tooltips", tooltips);   gtk_tooltips_set_colors( tooltips, &black, &yellow);   /* Box que contiene a box_left, box_button, box_right  */   vbox = gtk_vbox_new ( FALSE, 0);   gtk_container_add ( GTK_CONTAINER(window), vbox );   gtk_container_border_width ( GTK_CONTAINER(vbox), 0);   gtk_widget_show ( vbox );    /* box horizontal */   hbox = gtk_hbox_new ( FALSE, 0);   gtk_container_add ( GTK_CONTAINER(vbox), hbox );   gtk_container_border_width ( GTK_CONTAINER(hbox), 0);   gtk_widget_show( hbox );      /******************** LEFT *******************/   notebook_left = gtk_notebook_new();   gtk_notebook_set_tab_pos( GTK_NOTEBOOK(notebook_left),GTK_POS_TOP );   gtk_box_pack_start( GTK_BOX(hbox),notebook_left,TRUE,TRUE,0);   gtk_widget_show (notebook_left);      // respecto al drawing_left   drawing_left = gtk_drawing_area_new();   gtk_drawing_area_size(GTK_DRAWING_AREA(drawing_left),200,200);   gtk_widget_show( drawing_left );      // se馻les de la drawing area   gtk_signal_connect (GTK_OBJECT (drawing_left), "expose_event",		       (GtkSignalFunc) expose_event, NULL);   gtk_signal_connect (GTK_OBJECT (drawing_left), "button_press_event",		       (GtkSignalFunc) button_press_event, NULL);   gtk_widget_set_events (drawing_left, GDK_EXPOSURE_MASK			  |GDK_BUTTON_PRESS_MASK);   //		gtk_widget_set_extension_events (drawing_left, GDK_EXTENSION_EVENTS_ALL);      // respecto al drawing_about   hbox_text_help = gtk_hbox_new ( FALSE, 0);   gtk_widget_show( hbox_text_help );      text_help = gtk_text_new(NULL,NULL);   gtk_box_pack_start( GTK_BOX(hbox_text_help), text_help, TRUE,TRUE,0);   gtk_widget_show(text_help);      vscrollbar_help = gtk_vscrollbar_new (GTK_TEXT (text_help)->vadj);   gtk_box_pack_start( GTK_BOX(hbox_text_help), vscrollbar_help, FALSE,TRUE,0);   gtk_widget_show (vscrollbar_help);      label_left = gtk_label_new("My board");   gtk_notebook_append_page ( GTK_NOTEBOOK(notebook_left),drawing_left,label_left);   label_left = gtk_label_new("Hide / Help / Credits");   gtk_notebook_append_page ( GTK_NOTEBOOK(notebook_left),hbox_text_help,label_left);   bn_help();         /* center */      vbox_buttons = gtk_vbox_new ( FALSE, 10);   gtk_container_add ( GTK_CONTAINER (hbox), vbox_buttons );   gtk_container_border_width( GTK_CONTAINER(vbox_buttons),10);   gtk_widget_show( vbox_buttons );      button_connect = gtk_button_new_with_label("Connect");   gtk_box_pack_start( GTK_BOX(vbox_buttons), button_connect, TRUE,TRUE,0);   gtk_signal_connect_object( GTK_OBJECT (button_connect), "clicked",			     GTK_SIGNAL_FUNC(init_cliente),			     GTK_OBJECT (window) );   gtk_widget_show(button_connect);   gtk_tooltips_set_tip (tooltips,button_connect,			 "Connect to the bnserver", 			 "Connect to the bnserver");      button_disconnect = gtk_button_new_with_label("Disconnect");   gtk_box_pack_start( GTK_BOX(vbox_buttons), button_disconnect, TRUE,TRUE,0);   gtk_signal_connect_object( GTK_OBJECT (button_disconnect), "clicked",			     GTK_SIGNAL_FUNC(init_cliente),			     GTK_OBJECT (window) );   gtk_widget_hide(button_disconnect);   gtk_tooltips_set_tip (tooltips,button_disconnect,			 "Disconnect from the bnserver", 			 "Disconnect from the bnserver");      button_sendboard = gtk_button_new_with_label ("Send Board");   gtk_box_pack_start( GTK_BOX(vbox_buttons), button_sendboard,TRUE,TRUE,0);   gtk_signal_connect_object( GTK_OBJECT (button_sendboard), "clicked",			     GTK_SIGNAL_FUNC(play),			     GTK_OBJECT (window) );   gtk_widget_set_sensitive(button_sendboard,FALSE);   gtk_widget_show(button_sendboard);   gtk_tooltips_set_tip (tooltips,button_sendboard,			 "Send your board (ships) to the bnserver",			 "Send your board (ships) to the bnserver");      button_start = gtk_button_new_with_label("Start");   gtk_box_pack_start( GTK_BOX(vbox_buttons), button_start, TRUE,TRUE,0);   gtk_signal_connect_object( GTK_OBJECT (button_start), "clicked",			     GTK_SIGNAL_FUNC(play),			     GTK_OBJECT (window) );   gtk_widget_hide(button_start);   gtk_tooltips_set_tip (tooltips,button_start,			 "Start the game",			 "Start the game");      button_sendmsg = gtk_button_new_with_label ("Send Message");   gtk_box_pack_start( GTK_BOX(vbox_buttons), button_sendmsg,TRUE,TRUE,0);   gtk_signal_connect_object( GTK_OBJECT (button_sendmsg), "clicked",			     GTK_SIGNAL_FUNC(bnsendmsg),			     GTK_OBJECT (window) );   gtk_widget_set_sensitive(button_sendmsg,FALSE);   gtk_widget_show(button_sendmsg);   gtk_tooltips_set_tip (tooltips,button_sendmsg,			 "Send a message to your enemies",			 "Send a message to your enemies");      button_status = gtk_button_new_with_label ("Status");   gtk_box_pack_start( GTK_BOX(vbox_buttons), button_status,TRUE,TRUE,0);   gtk_signal_connect_object( GTK_OBJECT (button_status), "clicked",			     GTK_SIGNAL_FUNC(status),			     GTK_OBJECT (window) );   gtk_widget_set_sensitive(button_status,FALSE);   gtk_widget_show(button_status);		   gtk_tooltips_set_tip (tooltips,button_status,			 "The status of the bnserver & your enemies",			 "The status of the bnserver & your enemies");      button_config = gtk_button_new_with_label ("Config");   gtk_box_pack_start( GTK_BOX(vbox_buttons), button_config,TRUE,TRUE,0);   gtk_signal_connect_object( GTK_OBJECT (button_config), "clicked",			     GTK_SIGNAL_FUNC(configure),			     GTK_OBJECT (window) );   gtk_widget_show(button_config);		   gtk_tooltips_set_tip (tooltips,button_config,			 "Config the client",			 "Config the client");      button_quit = gtk_button_new_with_label ("Quit");   gtk_box_pack_start( GTK_BOX(vbox_buttons), button_quit,TRUE,TRUE,0);   gtk_signal_connect_object( GTK_OBJECT (button_quit), "clicked",			     GTK_SIGNAL_FUNC(do_exit),			     GTK_OBJECT (window) );   gtk_widget_show(button_quit);   gtk_tooltips_set_tip (tooltips,button_quit,			 "Quit the game",			 "Quit the game");   /* right */   notebook_right = gtk_notebook_new();   gtk_signal_connect ( GTK_OBJECT ( notebook_right ), "switch_page",		       GTK_SIGNAL_FUNC ( page_switch ), NULL );   gtk_notebook_set_tab_pos( GTK_NOTEBOOK(notebook_right),GTK_POS_TOP );   gtk_box_pack_start( GTK_BOX(hbox),notebook_right,TRUE,TRUE,0);   gtk_container_border_width( GTK_CONTAINER( notebook_right), 0 );   gtk_notebook_set_scrollable( GTK_NOTEBOOK(notebook_right) , TRUE );   gtk_notebook_set_show_tabs( GTK_NOTEBOOK(notebook_right) , TRUE );   gtk_notebook_popup_enable( GTK_NOTEBOOK(notebook_right) );   gtk_widget_realize( notebook_right );   gtk_widget_show (notebook_right);   drawing_right_about = gtk_drawing_area_new();   gtk_drawing_area_size(GTK_DRAWING_AREA(drawing_right_about),200,200);   gtk_signal_connect (GTK_OBJECT (drawing_right_about), "expose_event",		       (GtkSignalFunc) expose_event_about, NULL );   gtk_widget_set_events (drawing_right_about, GDK_EXPOSURE_MASK );   gtk_widget_show( drawing_right_about);   label_right_about = gtk_label_new("Batalla Naval" );   gtk_widget_show( drawing_right_about);   gtk_notebook_append_page( GTK_NOTEBOOK( notebook_right), drawing_right_about, label_right_about );      /* Ventana de texto de abajo */   separator = gtk_hseparator_new ();   gtk_box_pack_start ( GTK_BOX(vbox), separator, FALSE,TRUE, 0);   gtk_widget_show(separator);      hbox_text = gtk_hbox_new ( FALSE, 0);   gtk_container_add ( GTK_CONTAINER(vbox), hbox_text );   gtk_widget_show( hbox_text );      text = gtk_text_new(NULL,NULL);   gtk_box_pack_start( GTK_BOX(hbox_text), text, TRUE,TRUE,0);   gtk_widget_show(text);      vscrollbar = gtk_vscrollbar_new (GTK_TEXT (text)->vadj);   gtk_range_set_update_policy( GTK_RANGE( vscrollbar ), GTK_UPDATE_CONTINUOUS );   gtk_box_pack_start( GTK_BOX(hbox_text), vscrollbar, FALSE,TRUE,0);   gtk_widget_show (vscrollbar);      gtk_text_freeze(GTK_TEXT(text));   gtk_widget_realize(text);    gtk_text_insert( GTK_TEXT(text),NULL,NULL,NULL,"Batalla Naval - "GBNVER" by Ricardo Quesada (c) 1995,96,97,98\n",-1);      gtk_text_thaw(GTK_TEXT(text));      /* StatusBar */   hbox_status = gtk_hbox_new ( FALSE, 0);   gtk_container_add ( GTK_CONTAINER(vbox), hbox_status );   gtk_container_border_width ( GTK_CONTAINER(hbox_status), 0);   gtk_widget_show ( hbox_status );       statusbar_right = gtk_statusbar_new();   gtk_box_pack_end( GTK_BOX( hbox_status ), statusbar_right, TRUE,TRUE, 0);   gtk_widget_show( statusbar_right );   statusbar_left = gtk_statusbar_new();   gtk_box_pack_end( GTK_BOX( hbox_status ), statusbar_left, TRUE,TRUE, 0);   gtk_widget_show( statusbar_left );   gtk_statusbar_push( GTK_STATUSBAR( statusbar_right ), 1, "Cliente GTK");   gtk_statusbar_push( GTK_STATUSBAR( statusbar_left ), 1, "Batalla Naval");      /* Pixmaps */   fondo = gdk_pixmap_create_from_xpm_d( window->window,					&mask,					&window->style->bg[GTK_STATE_NORMAL],					fondo_xpm					);   rojo = gdk_pixmap_create_from_xpm_d( window->window,				       &mask,				       &window->style->bg[GTK_STATE_NORMAL],				       rojo_xpm				       );   verde = gdk_pixmap_create_from_xpm_d( window->window,					&mask,					&window->style->bg[GTK_STATE_NORMAL],					verde_xpm					);   azul = gdk_pixmap_create_from_xpm_d( window->window,				       &mask,				       &window->style->bg[GTK_STATE_NORMAL],				       azul_xpm				     );   negro = gdk_pixmap_create_from_xpm_d( window->window,					&mask,					&window->style->bg[GTK_STATE_NORMAL],					negro_xpm					);   about = gdk_pixmap_create_from_xpm_d( window->window,					&mask,					&window->style->bg[GTK_STATE_NORMAL],					about_xpm					);   gameover = gdk_pixmap_create_from_xpm_d( window->window,					   &mask,					   &window->style->bg[GTK_STATE_NORMAL],					   gameover_xpm					   );   winner = gdk_pixmap_create_from_xpm_d( window->window,					 &mask,					 &window->style->bg[GTK_STATE_NORMAL],					 winner_xpm					 );   icono = gdk_pixmap_create_from_xpm_d( window->window,					&mask,					&window->style->bg[GTK_STATE_NORMAL],					icono_xpm					);      gdk_window_set_icon (window->window, NULL,			icono , mask );      /* Principal */      gtk_widget_show( window);}/************************************************************************* *  *  *                    CODIGO GENERICO *                   ( mentira !!!!! ) *  *************************************************************************/static size_t bnwrite(int fd,char *buf,char tip0,char tip1,char tip2,char jugyo ){   gint i;      struct protocolo proto;   proto.bnptip0=tip0;   proto.bnptip1=tip1;   proto.bnptip2=tip2;   proto.jugador=jugyo;   for(i=0;i<MSGMAXLEN;i++)     proto.bnpmsg[i]=buf[i];   strcpy(proto.bnphead,BNPHEAD);   proto.bnpver=BNPVER;   return( write(fd,&proto,MAXLEN) ) ;}/* convierte un char[10][10] a un char[100] */void iwtable( char *dest){   gint i,x,y;   x=0;y=0;   for(i=0;i<100;i++)      {	dest[i]=mitabla[x][y];	x++;	if(x>=10) 	  {	     x=0;y++;	  }     }}/* pone por default la misma tabla que jugue antes */void filtermiboard()  {   gint x,y;      for(x=0;x<10;x++)      {	for(y=0;y<10;y++) 

⌨️ 快捷键说明

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