<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="gl">
	<id>http://web.iesrodeira.com/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Fundamentos%3ASoluci%C3%B3ns%3AReversi%3Atablero.c</id>
	<title>Fundamentos:Solucións:Reversi:tablero.c - Historial de revisións</title>
	<link rel="self" type="application/atom+xml" href="http://web.iesrodeira.com/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Fundamentos%3ASoluci%C3%B3ns%3AReversi%3Atablero.c"/>
	<link rel="alternate" type="text/html" href="http://web.iesrodeira.com/mediawiki/index.php?title=Fundamentos:Soluci%C3%B3ns:Reversi:tablero.c&amp;action=history"/>
	<updated>2026-09-13T14:21:18Z</updated>
	<subtitle>Historial de revisións desta páxina no wiki</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>http://web.iesrodeira.com/mediawiki/index.php?title=Fundamentos:Soluci%C3%B3ns:Reversi:tablero.c&amp;diff=1952&amp;oldid=prev</id>
		<title>Xavi: Nova páxina: &quot;=== tablero.h === Podes [http://web.iesrodeira.com/Descargas/Exercicios/Reversi/tablero.h Descargar] o ficheiro &lt;source lang=&#039;C&#039;&gt; #ifndef __TABLEROH__ #define __TABLEROH__  EXPORT...&quot;</title>
		<link rel="alternate" type="text/html" href="http://web.iesrodeira.com/mediawiki/index.php?title=Fundamentos:Soluci%C3%B3ns:Reversi:tablero.c&amp;diff=1952&amp;oldid=prev"/>
		<updated>2014-06-26T11:26:01Z</updated>

		<summary type="html">&lt;p&gt;Nova páxina: &amp;quot;=== tablero.h === Podes [http://web.iesrodeira.com/Descargas/Exercicios/Reversi/tablero.h Descargar] o ficheiro &amp;lt;source lang=&amp;#039;C&amp;#039;&amp;gt; #ifndef __TABLEROH__ #define __TABLEROH__  EXPORT...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Páxina nova&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=== tablero.h ===&lt;br /&gt;
Podes [http://web.iesrodeira.com/Descargas/Exercicios/Reversi/tablero.h Descargar] o ficheiro&lt;br /&gt;
&amp;lt;source lang=&amp;#039;C&amp;#039;&amp;gt;&lt;br /&gt;
#ifndef __TABLEROH__&lt;br /&gt;
#define __TABLEROH__&lt;br /&gt;
&lt;br /&gt;
EXPORT void on_novo_clicked(GtkWidget *w,gpointer p);&lt;br /&gt;
EXPORT void on_acerca_de_activate(GtkWidget *w,gpointer p);&lt;br /&gt;
EXPORT void on_gardar_activate(GtkWidget *w,gpointer p);&lt;br /&gt;
EXPORT void on_abrir_activate(GtkWidget *w,gpointer p);&lt;br /&gt;
&lt;br /&gt;
void obtenCoordenadas(const char *nome,int *f,int *c);&lt;br /&gt;
void fichaGui(int fila,int columna,int xogador);&lt;br /&gt;
&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
=== tablero.c ===&lt;br /&gt;
Podes [http://web.iesrodeira.com/Descargas/Exercicios/Reversi/tablero.c Descargar] o ficheiro&lt;br /&gt;
&amp;lt;source lang=&amp;#039;C&amp;#039;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;gtk/gtk.h&amp;gt;&lt;br /&gt;
#include &amp;lt;glade/glade.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;reversi.h&amp;quot;&lt;br /&gt;
#include &amp;quot;reversilib.h&amp;quot;&lt;br /&gt;
#include &amp;quot;tablero.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// GUI&lt;br /&gt;
extern GladeXML *__gui;&lt;br /&gt;
&lt;br /&gt;
// taboleiro&lt;br /&gt;
extern char __tableiro[8][8];&lt;br /&gt;
&lt;br /&gt;
// Xogador ó que lle toca xogar&lt;br /&gt;
extern int __xog;&lt;br /&gt;
&lt;br /&gt;
// Nomes dos xogadores&lt;br /&gt;
extern char *nomeXog[];&lt;br /&gt;
&lt;br /&gt;
// Gardar Xogo&lt;br /&gt;
//&lt;br /&gt;
EXPORT void on_gardar_activate(GtkWidget *w,gpointer p)&lt;br /&gt;
{&lt;br /&gt;
   GtkWidget *ad;&lt;br /&gt;
   gchar *fn;&lt;br /&gt;
   FILE *f;&lt;br /&gt;
&lt;br /&gt;
   ad=glade_xml_get_widget(__gui,&amp;quot;gardar&amp;quot;);&lt;br /&gt;
   if (gtk_dialog_run (GTK_DIALOG(ad)) == GTK_RESPONSE_OK) &lt;br /&gt;
   {&lt;br /&gt;
      fn=gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(ad));&lt;br /&gt;
      f=fopen(fn,&amp;quot;w&amp;quot;);&lt;br /&gt;
      fwrite(&amp;amp;__xog,sizeof(__xog),1,f);&lt;br /&gt;
      fwrite(__tableiro,sizeof(__tableiro),1,f);&lt;br /&gt;
      fclose(f);&lt;br /&gt;
      g_free(fn);&lt;br /&gt;
   }&lt;br /&gt;
   gtk_widget_hide(ad);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Cargar Xogo&lt;br /&gt;
//&lt;br /&gt;
EXPORT void on_abrir_activate(GtkWidget *w,gpointer p)&lt;br /&gt;
{&lt;br /&gt;
   GtkWidget *ad,*sb;&lt;br /&gt;
   gchar *fn;&lt;br /&gt;
   FILE *f;&lt;br /&gt;
   char msg[128];&lt;br /&gt;
   int i,j;&lt;br /&gt;
&lt;br /&gt;
   ad=glade_xml_get_widget(__gui,&amp;quot;abrir&amp;quot;);&lt;br /&gt;
   if (gtk_dialog_run (GTK_DIALOG(ad)) == GTK_RESPONSE_OK) &lt;br /&gt;
   {&lt;br /&gt;
      // Recuperar o ficheiro&lt;br /&gt;
      fn=gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(ad));&lt;br /&gt;
      f=fopen(fn,&amp;quot;r&amp;quot;);&lt;br /&gt;
      fread(&amp;amp;__xog,sizeof(__xog),1,f);&lt;br /&gt;
      fread(__tableiro,sizeof(__tableiro),1,f);&lt;br /&gt;
      fclose(f);&lt;br /&gt;
      // Poñer as fichas no gui&lt;br /&gt;
      for(i=0;i&amp;lt;8;i++)&lt;br /&gt;
        for(j=0;j&amp;lt;8;j++) fichaGui(i,j,__tableiro[i][j]);&lt;br /&gt;
      // Indicar a que xogador lle toca&lt;br /&gt;
      sb=glade_xml_get_widget(__gui,&amp;quot;statusbar&amp;quot;);&lt;br /&gt;
      i=gtk_statusbar_get_context_id(GTK_STATUSBAR(sb),&amp;quot;turno&amp;quot;);&lt;br /&gt;
      gtk_statusbar_pop(GTK_STATUSBAR(sb),i);&lt;br /&gt;
      sprintf(msg,&amp;quot;Turno do Xogador %s&amp;quot;,nomeXog[__xog]);&lt;br /&gt;
      gtk_statusbar_push(GTK_STATUSBAR(sb),i,msg);&lt;br /&gt;
      g_free(fn);&lt;br /&gt;
   }&lt;br /&gt;
   gtk_widget_hide(ad);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Acerca de ...&lt;br /&gt;
//&lt;br /&gt;
EXPORT void on_acerca_de_activate(GtkWidget *w,gpointer p)&lt;br /&gt;
{&lt;br /&gt;
   GtkWidget *ad;&lt;br /&gt;
&lt;br /&gt;
   ad=glade_xml_get_widget(__gui,&amp;quot;acercade&amp;quot;);&lt;br /&gt;
   gtk_widget_show(ad);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Novo Xogo&lt;br /&gt;
//&lt;br /&gt;
EXPORT void on_novo_clicked(GtkWidget *w,gpointer p)&lt;br /&gt;
{&lt;br /&gt;
  GtkWidget *fin;&lt;br /&gt;
&lt;br /&gt;
  fin=glade_xml_get_widget(__gui,&amp;quot;fin&amp;quot;);&lt;br /&gt;
  gtk_widget_hide(fin);&lt;br /&gt;
  iniciaTaboleiro();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* on_xogadores_aceptar_clicked&lt;br /&gt;
&lt;br /&gt;
  Botón de aceptar do diálogo de poñer nome os xogadores&lt;br /&gt;
*/&lt;br /&gt;
EXPORT void on_xogadores_aceptar_clicked(GtkWidget *w,gpointer p)&lt;br /&gt;
{&lt;br /&gt;
  GtkWidget *sb;&lt;br /&gt;
  char buffer[128];&lt;br /&gt;
  int id;&lt;br /&gt;
  &lt;br /&gt;
  sb=glade_xml_get_widget(__gui,&amp;quot;nombres&amp;quot;);&lt;br /&gt;
  gtk_widget_hide(sb);&lt;br /&gt;
  sb=glade_xml_get_widget(__gui,&amp;quot;xogadores_marron&amp;quot;);&lt;br /&gt;
  nomeXog[1]=(char *)gtk_entry_get_text(GTK_ENTRY(sb));&lt;br /&gt;
  sb=glade_xml_get_widget(__gui,&amp;quot;xogadores_azul&amp;quot;);&lt;br /&gt;
  nomeXog[2]=(char *)gtk_entry_get_text(GTK_ENTRY(sb));&lt;br /&gt;
  sb=glade_xml_get_widget(__gui,&amp;quot;statusbar&amp;quot;);&lt;br /&gt;
  id=gtk_statusbar_get_context_id(GTK_STATUSBAR(sb),&amp;quot;turno&amp;quot;);&lt;br /&gt;
  sprintf(buffer,&amp;quot;Turno: %s&amp;quot;,nomeXog[1]);&lt;br /&gt;
  gtk_statusbar_push(GTK_STATUSBAR(sb),id,buffer);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*fichaGui&lt;br /&gt;
  RECIBE: fila, columna, xogador&lt;br /&gt;
  DESCRIPCION: Pon no gui a ficha do xogador na fila e columna&lt;br /&gt;
               indicadas.&lt;br /&gt;
*/&lt;br /&gt;
void fichaGui(int fila,int columna,int xogador)&lt;br /&gt;
{&lt;br /&gt;
  GtkImage *img;&lt;br /&gt;
  char buffer[12];&lt;br /&gt;
&lt;br /&gt;
  // Obtemos a imaxe da ficha&lt;br /&gt;
  sprintf(buffer,&amp;quot;image%d&amp;quot;,fila*8+columna+1);&lt;br /&gt;
  img=(GtkImage *) glade_xml_get_widget(__gui,buffer);&lt;br /&gt;
  &lt;br /&gt;
  // Poñemos ficha na posición&lt;br /&gt;
  sprintf(buffer,&amp;quot;xog%d.png&amp;quot;,xogador);&lt;br /&gt;
  gtk_image_set_from_file(img,buffer);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*obtenCoordenadas&lt;br /&gt;
  RECIBE: O nome da casilla&lt;br /&gt;
          As direccións de memoria onde deixar a fila (f) e a columna (c)&lt;br /&gt;
  DESCRIPCION: Obten as coordenadas da casilla a partir do nome&lt;br /&gt;
*/&lt;br /&gt;
void obtenCoordenadas(const char *nome,int *f,int *c)&lt;br /&gt;
{&lt;br /&gt;
   int num;&lt;br /&gt;
&lt;br /&gt;
   // Obter o número da casilla do nome&lt;br /&gt;
   num=atoi(&amp;amp;nome[8])-1;&lt;br /&gt;
   // Calcular fila e columna&lt;br /&gt;
   *f=num/8;&lt;br /&gt;
   *c=num%8;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Xavi</name></author>
	</entry>
</feed>