Gato

Páginas: 6 (1315 palabras) Publicado: 8 de diciembre de 2010
/*************************************************************

Gato Versión 0.1

Programado por M4kZ

***************************************************************/

#include

#define VERDADERO -2
#define FALSO -1

/* Cosas que puden estar en las casillas del tablero */
#define BOLA 1
#define TACHE 2
#define VACIO 0

/* Teclas */
#define ABAJO 258
#define ARRIBA 259#define IZQUIERDA 260
#define DERECHA 261
#define ENTER 10
#define G 103

typedef int boolean;

void inicializar(int cuadricula[3][3]) {

int renglon, columna;

/* Limpiar pantalla */
clear();

/* Inicializar pantalla con funciones de ncurses */
initscr();
cbreak();
keypad(stdscr, TRUE);
noecho();

/* llenar matriz de espacios vacios */

for(renglon = 0;renglon < 3; renglon++)
for(columna = 0; columna < 3; columna++)
cuadricula[renglon][columna] = VACIO;

}

/* La funcion convertir coordenadas convierte las coordenadas de la pantalla a las de
la matriz, por ejemplo en la pantalla la casilla central esta en renglon 3 columna 3,
pero en la matriz la casilla central es 1, 1. */

void convertir_coordenadas(int *x, int *y) {

/*En la pantalla las casillas estan en las columnas 1, 3 y 5
y en la matriz en 0, 1 y 2 */

switch(*x) {

case(1) :

*x = 0;
break;

case(3) :

*x = 1;
break;

case(5) :

*x = 2;

}

/* En la pantalla las casillas estan en los renglones 1, 3 y 5
y en la matriz en 0, 1 y 2 */

switch(*y) {

case(1) :

*y = 0;
break;case(3) :

*y = 1;
break;

case(5) :

*y = 2;
break;

}

}

/* Esta función determina si una casilla dada está ocupada*/
boolean esta_ocupado(int y, int x, int cuadricula[3][3]) {

convertir_coordenadas(&x, &y);

if(cuadricula[x][y] == VACIO)
/* Está vacía, por lo tanto es falso que está ocupada */
return FALSO;
else
/* Tiene algoadentro, por lo tanto es verdadero que está ocupada */
return VERDADERO;

}

void imp_marca(int marca, int y, int x, int cuadricula[3][3]) {

int tipo_marca;

/* Aqui tipo_marca se usa para la pantalla y marca para la matriz.
tipo_marca se convierte a O o X y marca se queda como un valor
numérico */

if(marca == TACHE) {
tipo_marca = 'X';
}
elsetipo_marca = 'O';

/* Poner la marca en la pantalla */

printw("%c", tipo_marca);

/* Poner la marca en la matriz */

convertir_coordenadas(&x, &y);
cuadricula[x][y] = marca;
}

int cambiar_marca(int marca) {

/* Si ya puso alguien una bola, la proxima sera tache y viceversa */

if(marca == TACHE)
return BOLA;
else
return TACHE;
}

void imp_rayas(void) {printw(" ----- \n");
printw("| | | |\n");
printw(" ----- \n");
printw("| | | |\n");
printw(" ----- \n");
printw("| | | |\n");
printw(" ----- \n");

}

boolean ganar(int marca, int cuadricula[3][3]) {

char tipo_marca;

/* Convertir marca a X ó O */

if(marca == BOLA)
tipo_marca = 'O';
else
tipo_marca = 'X';

/* Siempre que se comprueba que laprimera casilla _NO_ esté vacía y luego que las
tres sean iguales, si no, puede darse el caso de que alguien gane porque las tres
estén vacías, ya que serían iguales (las tres = a 0)*/

/* --- Comprobar Filas ---*/

/* Fila 1 */

if(cuadricula[0][0] != VACIO &&
cuadricula[0][0] == cuadricula[1][0] &&
cuadricula[1][0] == cuadricula[2][0])
{
/*Dibujar línea horizontal */
move(1, 1);
printw("-");
move(1, 3);
printw("-");
move(1, 5);
printw("-");

move(8, 0);
printw("¡¡¡ Ha ganado %c!!!", tipo_marca);
return VERDADERO;
}

/* Fila 2 */

if(cuadricula[0][1] != VACIO &&
cuadricula[0][1] == cuadricula[1][1] &&
cuadricula[0][1] == cuadricula[2][1])
{
/* Dibujar línea...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Gatos
  • Gatos
  • Soy gat
  • Gatos
  • Gatos
  • Gato
  • La Gata
  • gatos

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS