Fundamentos:Solucións:Reversi
Saltar á navegación
Saltar á procura
Escribir un programa que permita a dous xogadores xogar o popular xogo Reversi, tamén coñecido como Iagno.
Solucións de Xavi
Makefile
Ficheiro de construcción do programa.
- Para construir a versión GUI: $make ou $make reversigtk
- Para construir a versión de Consola: $make reversi
Podes Descargar o Makefile
<c> FLAGS = `pkg-config --cflags --libs libglade-2.0` FLAGSC = `pkg-config --cflags libglade-2.0`
reversigtk: reversigtk.c reversilib.o tablero.o
gcc reversigtk.c -o reversigtk reversilib.o tablero.o $(FLAGS) -export-dynamic
reversi: reversi.c reversilib.o
gcc reversi.c -o reversi reversilib.o
tablero.o: tablero.c
gcc -c tablero.c $(FLAGSC) -export-dynamic
reversilib.o: reversilib.c
gcc -c reversilib.c
</c>
Versión de Consola
Pseudocódigo
<c>
Comeza xogando xog=Xogador 1
Principal Limpar Taboleiro (posición inicial) Visualizar o Taboleiro xog=Xogador 1 Mentras se poda poñer ficha Xoga(xog) Si xog==Xogador 1 xog=Xogador 2 senon xog=Xogador 1 Visualizar o Taboleiro Fin Mentras Ver gañador e visualizar quen gañou Fin-Principal
Xoga(x) RECIBE: O xogador que lle toca xogar Si pode xogar o xogador x Pedir unha fila e columna válida Poñer a ficha Dar volta as fichas Fin-Si Fin-Xoga
</c>
Implementación en C
Ficheiro de Cabeceira Xeral - (Definicións Xerais)
Módulo principal - (Funcións exclusivas da versión de consola)
Librería de Xogo - (Funcións de manexo do xogo comúns coa versión GTK)
Versión GTK+
E preciso ter a versión 2.8 das Gtk para que funcione o diálogo de acerca de... Si non se ten o GTK+ 2.8 é necesario comentar as liñas <c>
d=(GtkFileChooser *)glade_xml_get_widget(__gui,"gardar"); gtk_file_chooser_set_do_overwrite_confirmation(d,TRUE);
</c>
Na función main.
Interface
Descargar GUI (ficheiro xml tablero.glade)
Descargar Debuxos (Descomprimir na carpeta do programa)
Pseudocódigo
<c>
Cando se faga click co rato nunha casilla (xestor de on_button_press_event) Obter as coordenadas do click (fila e columna) Si o xogador que lle toca pode xogar nesa posicion Poñer a ficha na posición Dar volta as fichas Cambio de xogador Si xa non existen xogadas, diálogo de finalización SiNon Se o xogador que lle toca non ten xogada, cambio de xogador Fin-Si Fin-Si
</c>