<?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%3Areversigtk.c</id>
	<title>Fundamentos:Solucións:Reversi:reversigtk.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%3Areversigtk.c"/>
	<link rel="alternate" type="text/html" href="http://web.iesrodeira.com/mediawiki/index.php?title=Fundamentos:Soluci%C3%B3ns:Reversi:reversigtk.c&amp;action=history"/>
	<updated>2026-09-13T14:40:55Z</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:reversigtk.c&amp;diff=1954&amp;oldid=prev</id>
		<title>Xavi o 26 de xuño de 2014 ás 11:26</title>
		<link rel="alternate" type="text/html" href="http://web.iesrodeira.com/mediawiki/index.php?title=Fundamentos:Soluci%C3%B3ns:Reversi:reversigtk.c&amp;diff=1954&amp;oldid=prev"/>
		<updated>2014-06-26T11:26:55Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;gl&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Revisión máis antiga&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revisión como estaba o 26 de xuño de 2014 ás 11:26&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Liña 1:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Liña 1:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== reversigtk.c ===&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== reversigtk.c ===&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Podes [http://web.iesrodeira.com/Descargas/Exercicios/Reversi/reversigtk.c Descargar] o ficheiro&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Podes [http://web.iesrodeira.com/Descargas/Exercicios/Reversi/reversigtk.c Descargar] o ficheiro&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source&amp;gt;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; lang=&#039;C&#039;&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;/* Reversi&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;/* Reversi&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*/&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*/&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;

&lt;!-- diff cache key my_wiki-wiki_:diff:1.41:old-1953:rev-1954:wikidiff2=table:1.14.1:bc2a06be --&gt;
&lt;/table&gt;</summary>
		<author><name>Xavi</name></author>
	</entry>
	<entry>
		<id>http://web.iesrodeira.com/mediawiki/index.php?title=Fundamentos:Soluci%C3%B3ns:Reversi:reversigtk.c&amp;diff=1953&amp;oldid=prev</id>
		<title>Xavi: Nova páxina: &quot;=== reversigtk.c === Podes [http://web.iesrodeira.com/Descargas/Exercicios/Reversi/reversigtk.c Descargar] o ficheiro &lt;source&gt; /* Reversi */ #include &lt;stdio.h&gt; #include &lt;gtk/gtk.h...&quot;</title>
		<link rel="alternate" type="text/html" href="http://web.iesrodeira.com/mediawiki/index.php?title=Fundamentos:Soluci%C3%B3ns:Reversi:reversigtk.c&amp;diff=1953&amp;oldid=prev"/>
		<updated>2014-06-26T11:26:39Z</updated>

		<summary type="html">&lt;p&gt;Nova páxina: &amp;quot;=== reversigtk.c === Podes [http://web.iesrodeira.com/Descargas/Exercicios/Reversi/reversigtk.c Descargar] o ficheiro &amp;lt;source&amp;gt; &lt;span class=&quot;autocomment&quot;&gt;Reversi: &lt;/span&gt; #include &amp;lt;stdio.h&amp;gt; #include &amp;lt;gtk/gtk.h...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Páxina nova&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=== reversigtk.c ===&lt;br /&gt;
Podes [http://web.iesrodeira.com/Descargas/Exercicios/Reversi/reversigtk.c Descargar] o ficheiro&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
/* Reversi&lt;br /&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;
GladeXML *__gui=NULL;&lt;br /&gt;
&lt;br /&gt;
// taboleiro&lt;br /&gt;
char __tableiro[8][8];&lt;br /&gt;
&lt;br /&gt;
// Xogador ó que lle toca xogar&lt;br /&gt;
int __xog=XOG1;&lt;br /&gt;
&lt;br /&gt;
// Nomes dos xogadores&lt;br /&gt;
char *nomeXog[]={&amp;quot;Empate&amp;quot;,&amp;quot;Marron&amp;quot;,&amp;quot;Azul&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
void dialogoFin(void);&lt;br /&gt;
void iniciaTaboleiro(void);&lt;br /&gt;
void fichaGui(int fila,int columna,int xogador);&lt;br /&gt;
void revira(int i,int j, int dir);&lt;br /&gt;
&lt;br /&gt;
EXPORT gboolean on_celda_button_press_event (GtkWidget *widget,&lt;br /&gt;
                                             GdkEventButton *event,&lt;br /&gt;
                                             gpointer user_data);&lt;br /&gt;
// Pulsada unha celda&lt;br /&gt;
//&lt;br /&gt;
EXPORT gboolean on_celda_button_press_event (GtkWidget *widget,&lt;br /&gt;
                                             GdkEventButton *event,&lt;br /&gt;
                                             gpointer user_data)&lt;br /&gt;
{&lt;br /&gt;
   const char *nome;&lt;br /&gt;
   int fila,columna;&lt;br /&gt;
   int outro=XOG1;&lt;br /&gt;
   char msg[128];&lt;br /&gt;
   GtkWidget *sb;&lt;br /&gt;
   int id;&lt;br /&gt;
&lt;br /&gt;
   // Obtemos as coordenadas do nome&lt;br /&gt;
   nome=gtk_widget_get_name(widget);&lt;br /&gt;
   obtenCoordenadas(nome,&amp;amp;fila,&amp;amp;columna);&lt;br /&gt;
   &lt;br /&gt;
   // Si podemos poñemos ficha e damos a volta&lt;br /&gt;
   if (posicionXogada(fila,columna,__xog))&lt;br /&gt;
   {&lt;br /&gt;
      __tableiro[fila][columna]=__xog;&lt;br /&gt;
&lt;br /&gt;
      // Poñer ficha no GUI &lt;br /&gt;
      fichaGui(fila,columna,__xog);&lt;br /&gt;
&lt;br /&gt;
      darVolta(fila,columna);&lt;br /&gt;
&lt;br /&gt;
      outro=__xog;&lt;br /&gt;
      if (__xog==XOG1) __xog=XOG2;&lt;br /&gt;
      else           __xog=XOG1;&lt;br /&gt;
&lt;br /&gt;
      // Comprobar si rematou o xogo&lt;br /&gt;
      if (!existeXogada()) dialogoFin();&lt;br /&gt;
      else &lt;br /&gt;
      {&lt;br /&gt;
        // Si o xogador que lle toca non pode xogar, xoga&lt;br /&gt;
        // o contrario&lt;br /&gt;
        if (!podeXogar(__xog)) __xog=outro;&lt;br /&gt;
&lt;br /&gt;
        // Mensaxe do xogador ó que lle toca&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;
        gtk_statusbar_pop(GTK_STATUSBAR(sb),id);&lt;br /&gt;
        sprintf(msg,&amp;quot;Turno: %s&amp;quot;,nomeXog[__xog]);&lt;br /&gt;
        gtk_statusbar_push(GTK_STATUSBAR(sb),id,msg);&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* dialogoFin&lt;br /&gt;
*/&lt;br /&gt;
void dialogoFin(void)&lt;br /&gt;
{&lt;br /&gt;
   GtkWidget *fin;&lt;br /&gt;
   char buffer[1024];&lt;br /&gt;
   int gan,f1,f2;&lt;br /&gt;
&lt;br /&gt;
   contaFichas(&amp;amp;f1,&amp;amp;f2);&lt;br /&gt;
   gan=0;&lt;br /&gt;
   if (f2&amp;lt;f1) gan=XOG1;&lt;br /&gt;
   else if (f2&amp;gt;f1) gan=XOG2;&lt;br /&gt;
   sprintf(buffer,&amp;quot;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Felicitacións %s&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;\n\n&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;%s: %d  %s:%d&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&amp;quot;,nomeXog[gan],nomeXog[1],f1,nomeXog[2],f2);&lt;br /&gt;
   fin=glade_xml_get_widget(__gui,&amp;quot;msg&amp;quot;);&lt;br /&gt;
   gtk_label_set_markup(GTK_LABEL(fin),buffer);&lt;br /&gt;
   fin=glade_xml_get_widget(__gui,&amp;quot;fin&amp;quot;);&lt;br /&gt;
   gtk_widget_show(fin);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*iniciaTaboleiro&lt;br /&gt;
  DESCRIPCION: Posición inicial do xogo&lt;br /&gt;
*/&lt;br /&gt;
void iniciaTaboleiro(void)&lt;br /&gt;
{&lt;br /&gt;
  int i,j;&lt;br /&gt;
  GtkImage *img;&lt;br /&gt;
  GtkWidget *sb;&lt;br /&gt;
  char nome[8];&lt;br /&gt;
  int c;&lt;br /&gt;
  int id;&lt;br /&gt;
&lt;br /&gt;
  i=0;&lt;br /&gt;
  c=1;&lt;br /&gt;
  while(i&amp;lt;8)&lt;br /&gt;
  {&lt;br /&gt;
    j=0;&lt;br /&gt;
    while(j&amp;lt;8)&lt;br /&gt;
    {&lt;br /&gt;
      __tableiro[i][j]=VACIO;&lt;br /&gt;
      sprintf(nome,&amp;quot;image%d&amp;quot;,c);&lt;br /&gt;
      img=(GtkImage *) glade_xml_get_widget(__gui,nome);&lt;br /&gt;
      gtk_image_set_from_file(img,&amp;quot;xog0.png&amp;quot;);&lt;br /&gt;
      j++;&lt;br /&gt;
      c++;&lt;br /&gt;
    }&lt;br /&gt;
    i++;&lt;br /&gt;
  }&lt;br /&gt;
  __tableiro[3][3]=XOG1;&lt;br /&gt;
  // Poñer ficha no GUI&lt;br /&gt;
  fichaGui(3,3,XOG1);&lt;br /&gt;
 &lt;br /&gt;
  __tableiro[3][4]=XOG2;&lt;br /&gt;
  // Poñer ficha no GUI&lt;br /&gt;
  fichaGui(3,4,XOG2);&lt;br /&gt;
&lt;br /&gt;
  __tableiro[4][3]=XOG2;&lt;br /&gt;
  // Poñer ficha no GUI&lt;br /&gt;
  fichaGui(4,3,XOG2);&lt;br /&gt;
&lt;br /&gt;
  __tableiro[4][4]=XOG1;&lt;br /&gt;
  // Poñer ficha no GUI&lt;br /&gt;
  fichaGui(4,4,XOG1);&lt;br /&gt;
&lt;br /&gt;
  __xog=XOG1;&lt;br /&gt;
  &lt;br /&gt;
  sb=glade_xml_get_widget(__gui,&amp;quot;nombres&amp;quot;);&lt;br /&gt;
  gtk_widget_show(sb);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* revira&lt;br /&gt;
   RECIBE: i,j - coordenadas de inicio&lt;br /&gt;
           dir - dirección.&lt;br /&gt;
   DESCRIPCIÓN: Da a volta as fichas hacia a dirección indicada&lt;br /&gt;
*/&lt;br /&gt;
void revira(int i,int j, int dir)&lt;br /&gt;
{&lt;br /&gt;
  int outro=XOG1;&lt;br /&gt;
  int x,y;&lt;br /&gt;
  &lt;br /&gt;
  if (__tableiro[i][j]==XOG1) outro=XOG2;&lt;br /&gt;
  fichaGui(i,j,__tableiro[i][j]);&lt;br /&gt;
    &lt;br /&gt;
  switch(dir)&lt;br /&gt;
  {&lt;br /&gt;
    case DER: y=i; x=j+1;&lt;br /&gt;
              while(__tableiro[y][x]!=__tableiro[i][j]) &lt;br /&gt;
              {&lt;br /&gt;
                __tableiro[y][x]=__tableiro[i][j];&lt;br /&gt;
                fichaGui(y,x,__tableiro[i][j]);  &lt;br /&gt;
                x++;&lt;br /&gt;
              }&lt;br /&gt;
              break;&lt;br /&gt;
    case ESQ: y=i; x=j-1;&lt;br /&gt;
              while(__tableiro[y][x]!=__tableiro[i][j]) &lt;br /&gt;
              {&lt;br /&gt;
                __tableiro[y][x]=__tableiro[i][j];&lt;br /&gt;
                fichaGui(y,x,__tableiro[i][j]);&lt;br /&gt;
                x--;&lt;br /&gt;
              }&lt;br /&gt;
              break;&lt;br /&gt;
    case ARR: y=i-1; x=j;&lt;br /&gt;
              while(__tableiro[y][x]!=__tableiro[i][j]) &lt;br /&gt;
              {&lt;br /&gt;
                __tableiro[y][x]=__tableiro[i][j];&lt;br /&gt;
                fichaGui(y,x,__tableiro[i][j]);&lt;br /&gt;
                y--;&lt;br /&gt;
              }&lt;br /&gt;
              break;&lt;br /&gt;
    case ABA: y=i+1; x=j;&lt;br /&gt;
              while(__tableiro[y][x]!=__tableiro[i][j]) &lt;br /&gt;
              {&lt;br /&gt;
                __tableiro[y][x]=__tableiro[i][j];&lt;br /&gt;
                fichaGui(y,x,__tableiro[i][j]);&lt;br /&gt;
		y++;&lt;br /&gt;
              }&lt;br /&gt;
              break;&lt;br /&gt;
    case ARRDER: y=i-1; x=j+1;&lt;br /&gt;
                 while(__tableiro[y][x]!=__tableiro[i][j]) &lt;br /&gt;
                 {&lt;br /&gt;
                   __tableiro[y][x]=__tableiro[i][j];&lt;br /&gt;
                   fichaGui(y,x,__tableiro[i][j]);&lt;br /&gt;
                   x++;&lt;br /&gt;
                   y--;&lt;br /&gt;
                 }&lt;br /&gt;
                 break;&lt;br /&gt;
    case ARRESQ: y=i-1; x=j-1;&lt;br /&gt;
                 while(__tableiro[y][x]!=__tableiro[i][j]) &lt;br /&gt;
                 {&lt;br /&gt;
                   __tableiro[y][x]=__tableiro[i][j];&lt;br /&gt;
                   fichaGui(y,x,__tableiro[i][j]);&lt;br /&gt;
                   x--;&lt;br /&gt;
                   y--;&lt;br /&gt;
                 }&lt;br /&gt;
                 break;&lt;br /&gt;
    case ABADER: y=i+1; x=j+1;&lt;br /&gt;
                 while(__tableiro[y][x]!=__tableiro[i][j]) &lt;br /&gt;
                 {&lt;br /&gt;
                   __tableiro[y][x]=__tableiro[i][j];&lt;br /&gt;
                   fichaGui(y,x,__tableiro[i][j]);&lt;br /&gt;
                   x++;&lt;br /&gt;
                   y++;  &lt;br /&gt;
                 }&lt;br /&gt;
                 break;&lt;br /&gt;
    case ABAESQ: y=i+1; x=j-1;&lt;br /&gt;
                 while(__tableiro[y][x]!=__tableiro[i][j]) &lt;br /&gt;
                 {&lt;br /&gt;
                   __tableiro[y][x]=__tableiro[i][j];&lt;br /&gt;
                   fichaGui(y,x,__tableiro[i][j]);&lt;br /&gt;
                   x--;&lt;br /&gt;
                   y++;&lt;br /&gt;
                 }&lt;br /&gt;
                 break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//---------------------------------------------------------------------&lt;br /&gt;
// Función Principal&lt;br /&gt;
//---------------------------------------------------------------------&lt;br /&gt;
int main(int argc,char *argv[])&lt;br /&gt;
{&lt;br /&gt;
   GtkFileChooser *d;&lt;br /&gt;
&lt;br /&gt;
   gtk_init(&amp;amp;argc,&amp;amp;argv);&lt;br /&gt;
   __gui=glade_xml_new(&amp;quot;tablero.glade&amp;quot;,NULL,NULL);&lt;br /&gt;
   glade_xml_signal_autoconnect(__gui);&lt;br /&gt;
   d=(GtkFileChooser *)glade_xml_get_widget(__gui,&amp;quot;gardar&amp;quot;);&lt;br /&gt;
   gtk_file_chooser_set_do_overwrite_confirmation(d,TRUE);&lt;br /&gt;
   iniciaTaboleiro();&lt;br /&gt;
   gtk_main();&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>