Pproyecto Se Sistemas Operativos

Páginas: 6 (1373 palabras) Publicado: 21 de abril de 2012
TRABAJO:
Proyecto implementación de juego
En minix.



FECHA:
05/11/2011

CURSO:
Sistemas Operativos



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

Programado por Edgar Geovani Tuluxán Par

***************************************************************/#include <curses.h>

#define VERDADERO -2
#define FALSO -1

/* Cosas que pueden 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 convertircoordenadas 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 algo adentro, por lo tanto es verdadero que está ocupada */
return VERDADERO;

}

void imp_marca(int marca, int y, int x, intcuadricula[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';
}
else
tipo_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 la primera casilla _NO_ esté vacía y luego que las
tres sean iguales, si no, puede darse el caso de que alguien gane porque lastres
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);...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • ¿Qué Es Un Sistema Operativo? y Tipos De Sistemas Operativos
  • Sistema Operativo Y Tipos De Sistemas Operativos
  • Atomicidad de operaciones
  • operaciones basicas del sistema operativo
  • Sistemas Operativos
  • Sistema operativo
  • Sistema operativo
  • Sistemas operativos

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS