Sunteți pe pagina 1din 4

UTP

PROGRAMACIN
EXPERIENCIA DE LABORATORIO N 3

APLICACIN DE LA PROGRAMACIN ORIENTADA A


OBJETOS y MANEJO DE ARCHIVOS
1.-OBJETIVO:
Aplicar y definir correctamente las clases y la utilizacin de polimorfismo as como la
apertura y cierre de archivos de tal manera que el alumno sepa crear y destruir objetos para
ello se aplicar los conceptos ya definido en las clases anteriores.
.
2.-EQUIPOS Y MATERIALES
Una computadora
Un Editor de Desarrollo Integrado como el Dev C++
3.- FUNDAMENTO TEORICO
3.1 Escribir cdigo en lenguaje C++ utilizando las directivas, declaracin de variables con los
tipos de datos adecuados, que permitan optimizar el recurso de memoria.
3.2. Utilizar las sentencias adecuadas de decisin y de iteracin, as como tambin la estructura
de datos esttica como es el arreglo bidimensional, tambin maneja dos archivos externos que
son llamados dentro del programa.
3.3 Ejecutar, depurar y evaluar el programa con la finalidad de hacer mejoras de acuerdo a sus
conocimientos adquiridos en clase y finalmente probar el programa elaborado.
4.- PROGRAMA A CODIFICAR

Ing. Yuri A. Pomachagua Basualdo

UTP

PROGRAMACIN
4.1. El cdigo de programa contiene clases creadas.
4.2. Escribir dicho cdigo y hacer las modificaciones respectivas de tal manera que mejore,
y ud se d cuenta cmo funciona los objetos creados, y como se destruyen dichos objetos.
4.3. El programa tiene arreglos, sentencias de seleccin e iteracin.
4.4. Modificar el programa para una mejor presentacin y manejo ptimo de la memoria de
la PC.

5.- PROCEDIMIENTO

#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 );
};
TicTacToe::TicTacToe()
{
for ( int j = 0; j < 3; ++j ) // initialize board
for ( int k = 0; k < 3; ++k )
board[ j ][ k ] = ' ';
}
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.
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;
Ing. Yuri A. Pomachagua Basualdo

UTP

PROGRAMACIN
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 )
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 )
{
cout << " 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";
}
cout << "\n\n";
}
void TicTacToe::makeMove( void )
{
printBoard();

Ing. Yuri A. Pomachagua Basualdo

UTP

PROGRAMACIN
while ( true ) {
if ( xoMove( 'X' ) )
break;
else if ( xoMove( 'O' ) )
break;
}
}
bool TicTacToe::xoMove( int symbol )
{
int x, y;
do {
cout << "Player " << static_cast< char >( symbol )
<< " enter move: ";
cin >> x >> y;
cout << '\n';
} while ( !validMove( x, y ) );
board[ x ][ y ] = symbol;
printBoard();
Status xoStatus = gameStatus();
if ( xoStatus == WIN ) {
cout << "Player " << static_cast< char >( symbol ) << " wins!\n";
return true;
}
else if ( xoStatus == DRAW ) {
cout << "Game is a draw.\n";
return true;
}
else // CONTINUE
return false;
}
int main()
{
TicTacToe g;
g.makeMove();
return 0;
}

Ing. Yuri A. Pomachagua Basualdo

S-ar putea să vă placă și