Está en la página 1de 15

Índice

1.Introducción………………………………………………………………… 3

2.Literatura……………………………………………………………………. 4-10

3.Análisis de la problemática…………………………………………………. 11

4.Algoritmo en pseudocódigo y diagrama de flujo…………………………… 11-13

5.Código en C…………………………………………………………………

6.Resumen……………………………………………………………….…..

7.Conclusión……………………………………………………………………

8.Información adicional…………………………………………………....…..

9.Bibliografia……………………………………………………………....…..

1
INTRODUCCIÓN:

C forma parte de los lenguajes de programación algebraica. Fue diseñado por Dennia
Ritchie en l°" Laboratorio W. Bel, alrededor de 1972.. La popularidad de C se debe a
varios factores: en primer lugar, provee un conjunto de facilidades para manejar una amplia
variedad de aplicaciones. Tiene todo el tipo de datos útiles. Cuenta también con una librería
estándar de entrada/salida
La programación en C es eficiente. Existen varias operaciones cuyo significado se refleja
en. operaciones implantado en el hardware de la computadora. Por todo lo anterior, el
número de programadores y programa en C va en constante aumento.
EL presenta trabajo forma parte de los estudios de la asignatura de Introducción a la
programación, cuyo enfoque se interesa, en la aplicación de solución de problemas y
creación de programas que exhiban un comportamiento deseado. La programación, es
necesarias de la actualidad, y tiene una presencia importante en el mundo de la tecnología.
Al diseñar un programa, el desafío principal es crear y describir un procedimiento que esté
completamente bien definido, que no tenga ambigüedades, y que efectivamente resuelva el
problema. Este trabajo contiene la aplicación de lo aprendido durante el curso de
Introducción a la programación en el que realizaremos un programa para mostrar en
pantalla el juego “gato” o también conocido como el juego “tres en raya” demostrando que
desarrollamos la capacidad de identificar los problemas y como pueden ser resueltos a
través de la programación y diseño de los mismos.

2
LITERATURA

Propuestas 1:

Descripción: El programa hace una recreación del juego gato, en el que se requieren dos
jugadores, cada uno estará indicando su turno y la coordenada en la que desea marcar su
casilla si desean colocar x/o se deberá ingresar posición de fila y columna, la numeración
comienza desde 0 y gana el que pueda alinear tres figuras horizontal, vertical o diagonal,
también hay empate.

Características:
-Elementos básicos de C
-Entrada y salida de datos.
-Estructura condicional (if, else):
-Estructura repetitiva (for, do…while)
-Función (main)

#include <stdio.h>
#include <stdlib.h>
int main ()
{
int jugador=1,error,empate=0,ganar=0;
char y,Y,x,X, c1 = 1 ,c2 =2,c3 = 3,c4 =4,c5 =5,c6 =6,c7 =7,c8 =8,c9
=9,tiro,marca,respuesta =y;

do{

error=1;

system("cls");

printf("JUEGO DEL TRES EN RAYA\n");


printf("\n %c | %c | %c\n",c1,c2,c3);
printf("---+---+---\n");
printf("\n %c | %c | %c\n",c4,c5,c6);
printf("---+---+---\n");
printf("\n %c | %c | %c\n\n",c7,c8,c9);

3
if(jugador==1)
{
marca X ;
}

else
{
marca=O ;
}

printf("Turno del Jugador %d.",jugador);


printf("\nEscribe la posicion donde colocas la ficha: ");

fflush(stdin);

scanf("%c",&tiro);

if (tiro ==1 && c1==1) {c1=marca;}


else if (tiro==2 && c2==2) {c2=marca;}
else if (tiro==3 && c3==3) {c3=marca;}
else if (tiro==4 && c4==4) {c4=marca;}
else if (tiro==5 && c5==5) {c5=marca;}
else if (tiro==6 && c6==6) {c6=marca;}
else if (tiro==7 && c7==7) {c7=marca;}
else if (tiro==8 && c8==8) {c8=marca;}
else if (tiro==9 && c9==9) {c9=marca;}
else {printf("Error! Movimiento No Valido\n"); error=2;}

if(c1==X||c1==O);

if(c2==c1&&c3==c1)
{
ganar=1;
}

if(c4==c1&&c7==c1)
{
ganar=1;
}
}

if(c5==X||c5==O)
{
if (c1 == c5 && c9 == c5)
{ganar=1;}
4
if (c2 == c5 && c8 == c5)
{ganar=1;}
if (c4 == c5 && c6 == c5)
{ganar=1;}
if (c3 == c5 && c7 == c5)
{ganar=1;}
}

if(c9==X||c9==O)
{
if (c6 == c9 && c3 == c9)
{ganar=1;}
if (c7 == c9 && c8 == c9)
{ganar=1;}
}

if ((c1 != 1 && c2 != 2 && c3 != 3


c4 != 4 && c5 != 5 && c6 != 6 &&
c7 != 7 && c8 != 8 && c9 != 9)) &&
ganar == 0);
{
empate=1;
}

if (ganar==1||empate==1)
{
system("cls");
if (ganar==1)
{
printf("Jugador: %d Gana!\n\n",jugador);
printf("\n %c | %c | %c\n",c1,c2,c3);
printf("---+---+---\n");
printf("\n %c | %c | %c\n",c4,c5,c6);
printf("---+---+---\n");
printf("\n %c | %c | %c\n\n",c7,c8,c9);
}

if (empate==1)
{
printf("Empate \n",jugador);
printf("\n %c | %c | %c\n",c1,c2,c3);
printf("---+---+---\n");
printf("\n %c | %c | %c\n",c4,c5,c6);
printf("---+---+---\n");
printf("\n %c | %c | %c\n\n",c7,c8,c9);
}

5
printf("Jugar de Nuevo: Y/N ?\n");

fflush(stdin);

scanf("%c",&respuesta);

if (respuesta==y||respuesta==Y)
{
empate=0;
jugador=2;
ganar=0;
c1=1;
c2=2;
c3=3;
c4=4;
c5=5;
c6=6;
c7=7;
c8=8;
c9=9;
}
}

if(error==1)
{
if (jugador==1)
{
jugador=2;
}
else
{
jugador=1;
}
}

}while(respuesta==y ||respuesta==Y);

system("PAUSE");
return 0;
}

6
Propuesta 2.

Descripción:

El programa hace una recreación del juego gato, en que se juega con el ordenador, el
usuario es quien obtiene la posición para el primer tiro y el compilar solicitara al usuario
fila y columna en la que desea marcar su casilla “x”, la numeración comienza desde 0 y
gana el que pueda alinear tres figuras horizontal, vertical o diagonal, también hay empate.

Características:

-Elementos básicos de C
-Entrada y salida de datos
-Estructura condicional (if, else
-Estructura repetitiva (for, do…while)
-Arreglo-matriz
-Funciones tipo (main, void)

#include<stdio.h>
#include<stdlib.h>
char matrix[3][3] = { // se declara el arreglo bidimensional tipo char
' ', ' ', ' ', // y se llenan con espacios en blanco todas las
' ', ' ', ' ', // posiciones
' ', ' ', ' ',
};
void get_player_move()
{
int x,y;
int ok=0;
printf("da las coordenadas para colocar tu X: \n");
do
{
printf("renglon ==>");
scanf("%d",&x);
printf("columna ==>");
scanf("%d",&y);
x--;
y--;

if(matrix[x][y]!=' ') printf("movimiento invalido, intenta de nuevo\n");

7
else
{
matrix[x][y] = 'X';
ok = 1; /* la entrada es correcta */
}

}while(ok!=1);

return;
} //fin de get_player_move()
void get_computer_move()
{
int t, i;

/* se busca por una localización no utilizada del gato */


for(t=0; t<3; t++)
{
for(i=0; i<3; ++i)
if(matrix[t][i]==' ') break;
if(matrix[t][i]==' ') break;
}
/* Si el producto es 9 es que el gato está lleno */
if(t*i==9)
{
printf("¡¡¡¡¡empate!!!!!\n");
system("pause");
exit(0); /* se termina el programa */
}
else matrix[t][i] = 'O';

return;
} //fin de la función get_computer_move()
void disp_matrix()
{
int t;
for(t=0; t<3; t++)
{
printf(" %c | %c | %c",matrix[t][0],matrix[t][1],matrix [t][2]); ;

if(t!=2) printf("\n---|---|---\n");
}
printf("\n");

return;

8
}
/* funcion que checa si existe un ganador */
char check()
{
int t;
for (t=0; t<3; t++) /* revisa las columnas */
if((matrix[0][t]==matrix[1][t] &&
matrix[1][t]==matrix[2][t]) && matrix[0][t]!=' ') return (matrix[0][t]);
for(t=0; t<3; t++) /* revisa los renglones */
if((matrix[t][0]==matrix[t][1] &&
matrix[t][1]==matrix[t][2]) && matrix[t][0]!=' ') return (matrix[t][0]);

/* revisa las diagonales */


if(matrix[0][0]==matrix[1][1] && matrix[1][1]==matrix[2][2])
return (matrix[0][0]);
if(matrix[0][2]==matrix[1][1] && matrix[1][1]==matrix[2][0])
return (matrix[0][2]);
return(' '); //si no hay ganador la funcion regresa un

//espacio en blanco
}//fin de la funcion check
int main()
{
char done;// la variable done sirve para romper el ciclo mas abajo
// el ciclo de abajo se rompe cuando gana el usuario o
// gana la computadora

printf("Este es el juego del Gato. \n");


printf("jugaras contra la computadora \n");
printf("alimenta un renglon(1..3) y una \n");
printf("columna(1..3) para dar la posicion \n");
printf("donde colocar tu X \n\n");

done = ' ';


do
{
disp_matrix(); // se despliega en pantalla el gato
get_player_move();// se realiza el movimiento del usuario
done=check(); // se checa si hay un ganador
printf("%c\n",done);
if(done != ' ') break; // si hay un ganador se rompe el ciclo
get_computer_move(); // se realiza el movimiento de la computadora
done=check(); // se checa si hay un ganador
} while(done==' ');

9
if (done == 'X') printf("\nTu ganaste!\n");// si la variable tiene X
else printf("\nYo gane!!!!\n"); //ganaste sino gano la
//computadora
disp_matrix(); /* muestra las posiciones finales */
system("pause");
return 0;
} //fin de la funcion main

ANALISIS DE LA PROBLEMÁTICA

El proyecto se desarrolló en la búsqueda de una solución para el siguiente problema. Se


busca se desarrolló un código, donde al momento de ejecutare puede mostrar una interfaz
para poder jugar en compañía de un amigo familiar el tradicional juego de gato.
Debe solicitar a los jugadores en lugar donde desean colocar su jugada mediante la
indicación de fila y columna y mostrar en tablero “x” donde señalo el jugador uno y “o”
donde asigne el contrincante; Finalmente, al completarse una línea de tres ya sea vertical,
horizontal o diagonal deberá mostrar una felicitación al jugador que gano.
Entradas: Las entradas son el número de fila y el número de columnas para ambos
jugadores.
Salidas: Podríamos considerar dos salidas las cuales son que una vez indicado la fila y
como muestre en el tablero una “x” del jugador uno, y “o” cuando el jugador dos
proporcione fila y columna. La segunda salida es cuando es completada la línea con los tres
dígitos iguales mostrando un mensaje de felicitación al ganador.
Procesos: Para realizar estarán asignados dentro del código por lo que no es visible para las
personas que estén interactuando con el programa es decir no se mostrara en pantalla.
Una vez que ya contemos con una clara definición de cuales son nuestras entradas, salidas y
procesos podemos comenzar con la elaboración del algoritmo de pseudocodigo, diagrama
de flujo y finalmente la codificación en el lenguaje de programación C.

10
ALGORITMO EN PSEUDOCODIGO Y DIAGRAMA DE FLUJO

Algoritmo gato
turno <-1 ;
tiros <-1;
Dimensión tablero[3,3];
//llenar para la matriz con espacios
para i <-1 hasta 3 con paso 1
Para j<-1 hasta 3 con paso 1
tablero[i,j]<-' ';

FinPara
FinPara

Mientras tiros <=9 hacer


Escribir "turno del jugador ", turno, "Indique el
renglón (1-3):";
leer r;
Escribir "Indique la columna (1-3):";
leer c;
si (tablero[r,c] = ' ') entonces
si (turno =1) Entonces
tablero[r,c] <- 'x';
turno <-2;
SiNo
tablero[r,c] <- '0';
turno <-1;
FinSi
tiros <- tiros+1;
SiNo
Escribir "repetir el turno y seleccione una
posición que este libre"
FinSi

Escribir "++++++++++++++++++++";
para i <-1 hasta 3 con paso 1
para j <-1 hasta 3 con paso 1
Escribir tablero[i,j],","Sin Saltar;
FinPara
Escribir "";
FinPara

si (tablero [1,1]= 'x') Entonces


si (tablero [1,2]= 'x') Entonces
si (tablero [1,3]= 'x') Entonces
escribir "gano el jugador uno"

11
FinSi
finsi
FinSi

si (tablero [2,1]= 'x') Entonces


si (tablero [2,2]= 'x') Entonces
si (tablero [2,3]= 'x') Entonces
escribir "gano el jugador uno"

FinSi
finsi
FinSi

si (tablero [3,1]= 'x') Entonces


si (tablero [3,2]= 'x') Entonces
si (tablero [3,3]= 'x') Entonces
escribir "gano el jugador uno"

FinSi
finsi
FinSi

si (tablero [1,1]= 'x') Entonces


si (tablero [2,1]= 'x') Entonces
si (tablero [3,1]= 'x') Entonces
escribir "gano el jugador uno"

FinSi

finsi
FinSi

si (tablero [1,2]= 'x') Entonces


si (tablero [2,2]= 'x') Entonces
si (tablero [3,2]= 'x') Entonces
escribir "gano el jugador uno"

FinSi
finsi
FinSi

si (tablero [1,3]= 'x') Entonces


si (tablero [2,3]= 'x') Entonces
si (tablero [3,3]= 'x') Entonces
escribir "gano el jugador uno"

12
FinSi
finsi
FinSi

si (tablero [1,1]= 'x') Entonces


si (tablero [2,2]= 'x') Entonces
si (tablero [3,3]= 'x') Entonces
escribir "gano el jugador uno"

FinSi
finsi
FinSi

si (tablero [1,3]= 'x') Entonces


si (tablero [2,2]= 'x') Entonces
si (tablero [3,1]= 'x') Entonces
escribir "gano el jugador uno"

FinSi
finsi
FinSi
FinMientras
FinAlgoritmo

CODIGO EN C

RESUMEN

CONCLUSIÓN
Como objetivo general se puede concluir que el presente proyecto ha demostrado que es
muy factible la integración de nuevas tecnologías para el apoyo de la enseñanza,
dejando en claro que la tecnología no pretende hacer a un lado la enseñanza
presencial, sino simplemente reforzarla.

INFORMACIÓN EXTRA

13
BIBLIOGRAFIA

1.Dr. Joaquín Guillén Rodriguez M, Mauricio Hernández Hernández. (2013). Arreglo de 2


dimensiones- Juego el gato. 2021, de Editorial Digital-Tecnologico de Monterey Sitio web:
http://www.editorialdigitaltecdemonterrey.com/materialadicional/id080/cap1/
juegodelgato.pdf

2.Bohm, C.& Jacopini, G.: “Flow diagrams, Turning machine, and languages only with two
formation rules”.Communications of the ACM, 1966, vol. 9, No.5,pp. 366-371

3.Dijkstra.E.W:”Goto statement considered hatmfull” Communications of the ACM,1968,


Vol.11, No.3, pp. 147-148

https://pseudocodigoejemplos.com/algoritmo-del-juego-del-gato/

https://programavideojuegos.blogspot.com/2013/06/juego-tres-en-raya-en-
c.html

14
-La función main sirve como punto de partida para la ejecución del programa.
Normalmente, controla la ejecución del programa dirigiendo las llamadas a
otras funciones del programa. Un programa deja de ejecutarse normalmente al final
de main, aunque puede finalizar en otros puntos del programa por distintos motivos
-Una función declarada como void no devolverá ningún valor

se11docótligCJ : Descripción con palabras o fónnulas de un algoritmo. resun1en general de las funciones de un
programa que se utiliza con un diagrama de tlujo para diseñar o documentar un progran1a.

15

También podría gustarte