Informe de Michi

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 11

Algoritmo y Estructura de Datos

Introduccin

En este presente informe vamos a mostrar el comportamiento del


michi.

Sus reglas a utilizar son las mismas que se utlizan convencionalmente


pero ahora ser simulado en programa Dev-C++.

Este programa permita que por medio de galeras y algoritmos


suponer los casos clsicos y as generar un ganador.

UTP Pgina 1
Algoritmo y Estructura de Datos

En el presente programa presenta los tp

icos casos del mich en donde saldr un |ganador siempre que un


jugador haya

formado una fila de tres ,

Primero ingresaremos los nombres de cada jugador ( en el michi son 2


jugadores)

Luego cada uno de los jugadores comienza a introducir coordenadas


(nuestro mich es 3 x 3)

El otro jugador tambin pondr las coordenadas para ser colocado


en el michi

UTP Pgina 2
Algoritmo y Estructura de Datos

Cuando tengamos los tres elementos en lnea (ya sea de cualquier


orden) habremos ganado para eso mostraremos el nombre del
ganador y un mensaje para continuar.

UTP Pgina 3
Algoritmo y Estructura de Datos

Descripciones de los algoritmos utilizados en el michi

#include<iostream>

La declaracin "# include" sobre el cdigo llama a las bibliotecas


adecuadas. Iostream es una biblioteca que tiene funciones
relacionadas con la entrada y salida de datos. Iomanip contiene
funciones para dar formato a los datos mostrados (decimal entre
otros). Este es el cdigo: #include <iostream> #include <iomanip>
using namespace std; int main() {

libreria class TicTacToe

void

El uso del tipo de retorno void tiene sentido cuando:


- Utilizas funciones con parmetros pasados por referencia
- Utilizas programacin orientada a objetos

Systen (cls)

el system ("cls"), que significa CLear Screen o lompiar pantalla, es


una funcion que te sirve para borrar todo el contenido de la pantalla,
sin dejar perder los datos que tienes en tu codigo, es decir, si no
quieres ver algun dato en una sola pantalla, puede poner esta funcion
y te mostrara este dato en otro pantallazo.

System (20)

Para introducir color en el fondo de la programacin y la letra

system (color fondo/letra)

Sirve para parar las acciones del sistema en ese punto. Si no lo pones
al finalizar tu codigo, el programa correra, y como no ve la pausa,
entonces se cerrar solo.

return 0; <-es una sentencia que dice, hasta ahi es la codificacin de


esa parte

cin: lee
cout: escribe

while : Sentencia Mientras , se cumple mientras estn algunos valores

for : Sentencia Para , se cumple para un rango de valores introducidos


al sistema

UTP Pgina 4
Algoritmo y Estructura de Datos

Programa Michi ( Dev C++)

#include<iostream>

#include <iomanip>

using namespace std;

class TicTacToe {

private:

enum Status { WIN, DRAW, CONTINUE };

int board[ 3 ][ 3 ];

public:

TicTacToe();

void makeMove( void );

void printBoard( void );

bool validMove( int, int );

bool xoMove( int );

Status gameStatus( void );

};

char A[15];

char B[15];

int n=0;

TicTacToe::TicTacToe()

for ( int j = 0; j < 3; ++j ) // initialize board

for ( int k = 0; k < 3; ++k )

board[ j ][ k ] = ' ';

UTP Pgina 5
Algoritmo y Estructura de Datos

bool TicTacToe::validMove( int r, int c )

return r >= 0 && r < 3 && c >= 0 && c < 3 && board[ r ][ c ] == ' ';

// must specify that type Status is part of the TicTacToe class.

// See Chapter 21 for a discussion of namespaces.

TicTacToe::Status TicTacToe::gameStatus( void )

int a;

// check for a win on diagonals

if ( board[ 0 ][ 0 ] != ' ' && board[ 0 ][ 0 ] == board[ 1 ][ 1 ] &&

board[ 0 ][ 0 ] == board[ 2 ][ 2 ] )

return WIN;

else if ( board[ 2 ][ 0 ] != ' ' && board[ 2 ][ 0 ] ==

board[ 1 ][ 1 ] && board[ 2 ][ 0 ] == board[ 0 ][ 2 ] )

return WIN;

// check for win in rows

for ( a = 0; a < 3; ++a )

if ( board[ a ][ 0 ] != ' ' && board[ a ][ 0 ] ==

board[ a ][ 1 ] && board[ a ][ 0 ] == board[ a ][ 2 ] )

return WIN;

// check for win in columns

for ( a = 0; a < 3; ++a )

UTP Pgina 6
Algoritmo y Estructura de Datos

if ( board[ 0 ][ a ] != ' ' && board[ 0 ][ a ] ==

board[ 1 ][ a ] && board[ 0 ][ a ] == board[ 2 ][ a ] )

return WIN;

// check for a completed game

for ( int r = 0; r < 3; ++r )

for ( int c = 0; c < 3; ++c )

if ( board[ r ][ c ] == ' ' )

return CONTINUE; // game is not finished

return DRAW; // game is a draw

void TicTacToe::printBoard( void )

system ("cls");

cout << "\n 0 1 2\n\n";

for ( int r = 0; r < 3; ++r ) {

cout << r;

for ( int c = 0; c < 3; ++c ) {

cout << setw( 3 ) << static_cast< char > ( board[ r ][ c ] );

if ( c != 2 )

cout << " |";

if ( r != 2 )

cout << "\n ____|____|____"

<< "\n | | \n";

UTP Pgina 7
Algoritmo y Estructura de Datos

cout << "\n\n";

void TicTacToe::makeMove( void )

printBoard();

while ( true ) {

if ( xoMove( 'X' ) )

break;

else if ( xoMove( 'O' ) )

break;

bool TicTacToe::xoMove( int symbol )

int x, y;

do {

if(n==0 )

cout << " Jugador :"<< A << static_cast< char >( symbol )
<<endl<<endl<<endl;

n=1;

UTP Pgina 8
Algoritmo y Estructura de Datos

else

cout << " Jugador : "<< B << static_cast< char >( symbol )
<<endl<<endl<<endl;

n=0;

cout <<"Ingrese fila :";

cin >> x ;

cout<<"Ingrese columna :";

cin >> y;

cout << '\n';

} while ( !validMove( x, y ) );

cout<<"ingresar otro numero";

board[ x ][ y ] = symbol;

printBoard();

Status xoStatus = gameStatus();

if ( xoStatus == WIN ) {

if(n==1)

cout << " Jugador "<< A << static_cast< char >( symbol ) << " Ganado";

else {

cout << " Jugador "<< B << static_cast< char >( symbol ) << "
Ganado";

UTP Pgina 9
Algoritmo y Estructura de Datos

return true;

else if ( xoStatus == DRAW ) {

cout << "Empate";

return true;

else // CONTINUE

return false;

int main()

system ("color 20") ;

cout<< "Ingrese nombre del jugador 1\n";

cin>> A;

cout<<"Ingrese nombre de jugador 2\n";

cin>>B;

system ("cls");

system ("color 20 ");

TicTacToe g;

g.makeMove();

system("PAUSE");

return 0;

UTP Pgina 10
Algoritmo y Estructura de Datos

UTP Pgina 11

También podría gustarte